‘>=’ не поддерживается между экземплярами ‘NoneType’ и ‘NoneType’

#python

Вопрос:

 def mnum(num, num2, num3):
    if (num >= num2 and num >= num3):
        return num
    elif (num2 >= num and num2 >= num3):
        return num2
    elif (num3 >= num and num3 >= num2):
        return num3
    else:
        print("You should choose from 1 , 2 , 3 !")
num = print(input('choose from 1 , 2 , 3: '))
num2 = print(input('choose from 1 , 2 , 3 (do not choose the same first one): '))
num3 = print(input('choose from 1 , 2 , 3 (do not choose the same first and seconed one): '))
print(mnum(num , num2 , num3))
 

Ошибка, которую я получаю, такова '>=' not supported between instances of 'NoneType' and 'NoneType' .

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

1. input() уже распечатывает приглашение. Тебе не нужно звонить print() .

Ответ №1:

print является функцией, которая возвращает None . т. е.:

 a = print(1)
assert a is None
 

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

 num = int(input('choose from 1 , 2 , 3: '))
num2 = int(input('choose from 1 , 2 , 3 (do not choose the same first one): '))
num3 = int(input('choose from 1 , 2 , 3 (do not choose the same first and seconed one): '))

print(num)
print(num2)
print(num3)

print(mnum(num , num2 , num3))
 

Ответ №2:

У вас есть print() за пределами вашей input() s. Тебе это не нужно. Просто удалите их, и код запустится. Проблема в том , что print() ничего не возвращает, поэтому, когда вы пишете num = print(input(...)) , num присваивается None