9.2.9: Строки в целые числа - PullRequest
0 голосов
/ 08 мая 2020

У меня есть задание, на котором я застрял. Ниже приведены инструкции.

Создайте функцию с именем safe_int, которая принимает единственный аргумент. Эта функция должна попытаться преобразовать аргумент в целое число. В случае успеха функция должна вернуть это целое число. В противном случае функция должна вернуть 0.

Затем используйте эту функцию в понимании списка, чтобы создать список из данного списка. Новый список должен содержать либо 0, либо правильное целое число вместо каждой строки в данном списке: [0, 2, 7, 0] Не забудьте распечатать получившийся список.

Вот что я получил пока

list_of_strings = ["a", "2", "7", "zebra"]

num=[]
a=input("Enter the number count")
i=0

for i in range(0,int(a)):
   b=input("Enter the number")
   num.append(b)

def safe_int(num):
    i=0
    list = [int(x) if x.isdigit() else 0 for x in list_of_strings]
    print list
    for i in range(0,int(a)-1):
        if( num[i].isdigit()):
            num[i]=num[i]
    else:
        num[i]=0
safe_int(num)
print(num)

Требования перечислены ниже:

  • Вы должны определить функцию с именем «safe_int» Успех

  • Функция safe_int должна принимать ровно 1 аргумент. Успех

  • Вы должны вызвать функцию safe_int Success

  • Вы должны использовать safe_int в понимании списка Ошибка

  • У вас все еще должен быть определенный "list_of_strings" Успех

  • list_of_strings должен содержать элементы, которые не являются целыми числами Успех

  • Вы должны заменить нецелые значения на 0 Успех

У меня проблемы с соблюдением этого требования:

  • Вы должны использовать safe_int в понимании списка Неудача

Кто-нибудь знает как для этого?

1 Ответ

2 голосов
/ 08 мая 2020

Я думаю, вы слишком усложняете. Это должно охватывать все эти основы:

def safe_int(string):
    return int(string) if string.isdigit() else 0

list_of_strings = ["a", "2", "7", "zebra"]
list_of_numbers = [safe_int(num) for num in list_of_strings] # <-- use the function INSIDE the list comprehension
print(list_of_numbers)

Вывод

[0, 2, 7, 0]

Совет:

Я обычно стараюсь не позволять своим функциям использовать какие-либо переменные, которые находятся вне их объем. Используйте только константы (IN_ALL_CAPS) и переданные переменные в функциональном блоке. Он хорошо послужит вам при моделировании классов и упростит отладку.

...