2015-03-01 2 views
0

Я очень новичок в python, я пишу ниже нескольких строк кода, но не умею печатать наименьшее число из ввода.Как напечатать меньшее значение?

largest = 0 
smallest = 0 

while True: 
    num = raw_input("Enter a number:") 
    if num == "done" : break 
    try: 
     num = int(num) 
    except: 
     print "invalid" 
     continue 
    if num is smallest: 
      smallest = num 
    if num > largest: 
      largest = num 

print "Minimum", smallest, "Maximum", largest 

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

Enter a number:34 
Enter a number:12000 
Enter a number:dds 
invalid 
Enter a number:done 
Minimum 0 Maximum 12000=====> see minimum is "0" should be 34? 

ответ

2

Это ожидаемое поведение. На самом деле, ваше второе утверждение гласит:

smallest = 0 

0 меньше 34, поэтому smallest не будет обновляться.

Возможное решение инициализацией smallest и largest с первого элемента следующим образом:

largest = None 
smallest = None 

while True: 
    num = raw_input("Enter a number:") 
    if num == "done" : break 
    try: 
     num = int(num) 
    except: 
     print "invalid" 
     continue 

    if smallest is None: # or largest is None, it's the same 
     smallest = num 
     largest = num 

    if num < smallest: 
      smallest = num 
    if num > largest: 
      largest = num 

print "Minimum", smallest, "Maximum", largest 

Кроме того, у вас есть то, что, как представляется, опечатка или неправильное представление об операторе is. Это:

if num is smallest: 
    smallest = num 

Должно быть:

if num < smallest: 
    smallest = num 
Смежные вопросы