Python Min Max Пока цикл - PullRequest
       45

Python Min Max Пока цикл

0 голосов
/ 31 октября 2019

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

второй работает после того, как я дешифровал ввод как целое число;если кто-то может объяснить для меня, как это имеет значение. Спасибо

Код1:

 largest = None
 smallest = None

 while True:

     num = input("Enter a number: ")

     if num == "done":
         break

     if largest is None or num> largest:
         largest = num
     elif smallest is None or num< smallest:
         smallest = num

 print ("Maximum is", largest)
 print ("Minimum is", smallest)

Код2

 largest = None
 smallest = None
 while True:
     try:
         num = input("Enter the number: ")
         if num == "done":
             break
         num = int(num)
         if largest is None or largest < num:
             largest = num
         elif smallest is None or smallest > num:
             smallest = num
     except:
         print("Invalid input")

 print ("Maximum is", largest)
 print ("Minimum is", smallest)

1 Ответ

0 голосов
/ 31 октября 2019

Вывод для «кода 1» отличается от ожидаемого, поскольку операнды в сравнении имеют значение str, для которого определенный порядок отличается от порядка соответствующего int.

Другими словами, если a и b являются двумя int с такими, что a > b, то мы можем быть уверены, что str(a) > str(b) только если длина двух строк одинакова, в противном случае это может произойти либоstr(a) > str(b) или str(a) < str(b) в зависимости от фактического значения a и b.

Порядок строки, состоящей из чисел, является «алфавитным» для символов, появляющихся первыми, следовательно, в то время как "1" < "2" < "3",и т. д., когда две строки имеют несколько символов, открыта любая опция, например:

  • для "2" и "10", "2" > "10" (противоположно 2 < 10), поскольку "2" > "1" иприсутствие "0" после "1" не имеет значения
  • для "2" и "20", "2" < "20" (аналогично 2 < 20), поскольку "2" == "2" и присутствие "0" после"2" в "20" делает "20" «больше».

Обратите внимание, чтоУпорядочивание / сравнение по кольцу действительно работает для любой строки, даже если она не содержит чисел.

...