Как вы проверяете, не возвращает ли ваша функция ничего?

#python #python-3.x

Вопрос:

Я пытаюсь ответить на вопрос с вызовом.

Вопрос: Некоторые числа обладают индивидуальностью, в то время как другие числа просто скучны. Давайте напишем программу, которая запрашивает список чисел и описывает интересные из них, используя приведенные ниже черты личности, одновременно подсчитывая все скучные без черт.

Ваша программа должна запросить список чисел, разделенных пробелами. Для любого номера, имеющего хотя бы одну черту характера, он должен напечатать полное описание своей личности. Затем он должен напечатать, сколько тусклых чисел было подсчитано.

Вот мое решение для этого:

 arrogant_numbers = [3, 6, 7, 23, 25, 35, 39, 66, 68, 112, 119, 254, 259, 732, 737, 4565, 4663, 13330, 13730, 29880, 29998, 79670, 80015, 230054, 239068, 1534301, 1607352, 2060587, 21700891, 99167753, 99873125]

def find_personality(number):
  traits = ''
  # Find the traits of the number
  if number % 2 != 0:
    traits = traits   'odd '
  # Check for other traits after this
  if number >10000:
    traits = traits   'excessive '
  if '3' in str(number): 
    traits = traits   'irksome '
  if number in arrogant_numbers:
    traits = traits   'arrogant '
 
  return traits 

# Write the rest of your program after this
dullcounter = 0
numbers = input('Enter numbers: ')
number_list = numbers.split()
for word in number_list: 
  trts = find_personality(int(word))
  print(f"{word} is an {trts}number.") 
  if '' in trts:
    dullcounter = dullcounter   1
print(f'Dull numbers: {dullcounter}')
 

У меня возникли проблемы с подсчетом скучных чисел (тех, у которых нет черт).
он подсчитывает все приведенные числа вместо тех, которые не имеют признаков.

Вот как должно выглядеть окончательное решение: желаемый результат

Вот как выглядит мой вывод: мой вывод

Комментарии:

1. верните None, если у числа нет признака. и при звонке, если черта отсутствует, это скучный номер, иначе у него есть какая-то (не)интересная черта.

Ответ №1:

Ваша выходная строка trts всегда будет содержать '' .
вместо этого вы должны проверить, является ли trts она пустой строкой.
Итак, вместо

 if '' in trts:
    dullcounter = dullcounter   1
 

вы должны использовать это или что-то подобное:

 if not trts:
    dullcounter = dullcounter   1
 

Ответ №2:

Проблема в том, что ваша функция всегда возвращает строку, хотя и строку emtpy, если число скучное. Попробуйте ввести логику, которая выходит из функции, если число скучное (вместо того, чтобы возвращать пустую строку).

Ответ №3:

Ваше условие «если» всегда верно. Используйте альтернативное условие, подобное этому

 if len(trts) > 0:
    dullcounter = dullcounter   1