Как сделать оператор return в python, если аргумент представляет собой строку, представляющую допустимое целое число?

если я пишу основную программу для проверки ее функций def as_integer(an_object) и def main()

Если аргумент представляет собой строку, представляющую допустимое целое число, верните это целое число. В противном случае верните объект NoneType.

Вызовите функцию as_integer для каждого элемента в списке: ['20', 10, len, True, '-six', '-10', '0'] и выведите объект результата на отдельной строке Я должен получить следующий вывод:

ВЫХОДЫ:

20
None
None
None
None
-10
0

Я разработал следующий код, но все еще получаю сообщение об ошибке.

Я попробовал только первую часть своего кода и получил ['20', 10, len, True, '-10', '0'] для печати как [20, 10, len, True, -10, 0] на отдельных линии. но без кавычек. Будет ли это проблемой?

Я не уверен, использовать ли (isinstance) или (isdigit). Я попытался использовать (isdigit), чтобы определить, является ли an_object цифрой или (начинается с) «-», но я получил бы ошибку. Это то, что у меня есть до сих пор. Кроме того, спасибо за ваше терпение на протяжении всего этого.

def main():
    my_list = ['20', 10, len, True, '-10', '0']
    for an_object in my_list:
        print(as_integer(my_list))

def as_integer(an_object):
    if isinstance(an_object, (str, int)):
        return int(an_object)
    else:
        return None

Я получаю эту ошибку:

#TEST 1#
main() returned None
inputs:

outputs:
**  ERROR  ** None
* EXPECTED * 20
None
None
None
None
**  ERROR  ** None
* EXPECTED * -10
**  ERROR  ** no line
* EXPECTED * 0
----------
#TEST 2#
** ERROR **as_integer(True) returned 1
* EXPECTED * None
inputs:

outputs:
----------
#TEST 3#
as_integer('43') returned 43
inputs:

outputs:
----------
#TEST 4#
as_integer('-50') returned -50
inputs:

outputs:
----------
#TEST 5#
as_integer(id) returned None
inputs:

outputs:
----------
Анализ настроения постов в Twitter с помощью Python, Tweepy и Flair
Анализ настроения постов в Twitter с помощью Python, Tweepy и Flair
Анализ настроения текстовых сообщений может быть настолько сложным или простым, насколько вы его сделаете. Как и в любом ML-проекте, вы можете выбрать...
7 лайфхаков для начинающих Python-программистов
7 лайфхаков для начинающих Python-программистов
В этой статье мы расскажем о хитростях и советах по Python, которые должны быть известны разработчику Python.
Установка Apache Cassandra на Mac OS
Установка Apache Cassandra на Mac OS
Это краткое руководство по установке Apache Cassandra.
Сертификатная программа "Кванты Python": Бэктестер ансамблевых методов на основе ООП
Сертификатная программа "Кванты Python": Бэктестер ансамблевых методов на основе ООП
В одном из недавних постов я рассказал о том, как я использую навыки количественных исследований, которые я совершенствую в рамках программы TPQ...
Создание персонального файлового хранилища
Создание персонального файлового хранилища
Вы когда-нибудь хотели поделиться с кем-то файлом, но он содержал конфиденциальную информацию? Многие думают, что электронная почта безопасна, но это...
Создание приборной панели для анализа данных на GCP - часть I
Создание приборной панели для анализа данных на GCP - часть I
Недавно я столкнулся с интересной бизнес-задачей - визуализацией сбоев в цепочке поставок лекарств, которую могут просматривать врачи и...
0
0
30
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
def as_integer(value):
    if isinstance(value, str):
        try:
            return int(value)
        except ValueError:
            return None
    return None

Это вернет None вместо as_integer(10), но, возможно, это ваш вариант использования. Тем не менее, вы можете расширить условие с помощью isinstance(value, (str, int)), но это позволит преобразовать True в 1, что является обычным и ожидается во многих других языках программирования. Для фиксации этого углового корпуса вы можете добавить and value not in (True, False)

Я получаю эту ошибку: для первой цифры 20 моей строки

Kaede 10.04.2022 04:51

@Kaede, если я правильно вас понял, вы не получаете ожидаемых значений. Похоже, это какая-то домашняя работа или онлайн-ресурс для обучения с тестами. Поэтому я не могу повторить то, что вы делаете. Но! Я заметил, что в main() вы переходите my_list вместо an_object в as_integer(). Это может быть проблемой. Моя реализация as_integer() должна давать правильные результаты для ваших входных данных. (кроме угловых случаев, которые я упомянул).

Dmytro O 10.04.2022 05:11

@Kaede, пожалуйста. Если на ваш вопрос дан ответ, рассмотрите возможность пометки ответа как правильного. :)

Dmytro O 10.04.2022 06:35

Другие вопросы по теме