2016-05-29 13 views
0

У меня было задание, в котором я разрешал пользователям выбирать случайные числа, и эта программа найдет наименьшее и самое большое из всех этих чисел, а если число не будет введено, это недопустимый ввод. Вот код, который я написал:Поиск самого большого и самого маленького в Python 2.7

largest = None 
smallest = None 

while True: 
inp = raw_input("Enter a number: ") 

if inp == 'done': break 
if len(inp) < 1: break 

try: 
    num = int(inp) 
except: 
    print "Invalid input" 
    continue 

if smallest is None: 
    smallest = num 
elif inp < smallest: 
    smallest = num 

if largest is None: 
    largest = num 
elif inp > largest: 
    largest = num 

print "Maximum is %r" % (largest) 
print "Minimum is %r" % (smallest) 

Вопрос в том, почему он не работает? Вот несколько случайных чисел, которые я пробовал и получил что-то странное. Here I executed the code in the first part and got weird answers, and I executed it again with different numbers and got it right.

+0

Что-то смешное происходит с отступом в вашем примере кода; учитывая, что в Python это важно, вы должны это исправить (так как теперь интерпретатор Python отказывается запускать его). –

+0

Нет никаких отступов, я просто новичок в переполнении стека, поэтому мне не удалось выделить некоторые строки. : P –

ответ

2

Вы перепутали < и > и вы сравниваете inp, который является строка smallest и largest вместо num.

+0

Я отредактировал, вы можете проверить фотографию, которую я разместил недавно? Спасибо –

+0

О, да, да, вы правы, лемми измените его и повторите попытку. –

+0

Хорошо, да, сейчас это работает, спасибо большое. Это была очень глупая ошибка. SMH. –

1

Ваш отступ неправильный, и вы сделали много опечаток. Посмотрите на этот код. В случае, если вы тогда должны сравнить num с smallest и largest, но не inp.

largest = None 
smallest = None 

while True: 
    inp = raw_input("Enter a number: ") 

    if inp == 'done': break 
    try: 
     num = int(inp) 
    except: 
     print "Invalid input" 
     continue 

    print num 
    if smallest is None: smallest = num 
    elif num < smallest: smallest = num 

    if largest is None: largest = num 
    elif num > largest: largest = num 

print "Maximum is %r" % (largest) 
print "Minimum is %r" % (smallest) 
+0

Да, ваш тоже работает, и он также выполняет число, набранное. В моем коде я поменял знаки и изменил inp на num, и он успешно выполняется. –

Смежные вопросы

 Смежные вопросы