Я должен написать программу с циклом, которая позволяет пользователю вводить ряд целых чисел, за которыми следует -99, чтобы сигнализировать о конце серии. После того, как все номера введены, программа должна отображать самые большие и наименьшие введенные числа.Python: Loop Sentinel Value
Это то, что я до сих пор:
def main():
user_input = 1
while user_input != -99:
user_input = int(input("Enter your number or -99 to end."))
bigger = largest(user_input)
tinier = smallest(user_input)
print('The largest number is ', bigger, "and the smallest is ", tinier, ".")
def largest(number):
largest = 0
if number > largest:
largest = number
return largest
def smallest(number):
smallest = 10000
if number < smallest:
smallest = number
return smallest
main()
По какой-то причине значение сторожевого (-99) входит в цикл, я понятия не имею, как, и становится наименьшим значением. Кроме того, самое большое значение никогда не бывает правильным. Помогите оценить!
Конечно, это так. Вы принимаете вход, проверяете все меньше и больше, * затем * проверяется следующая итерация цикла while. – CoryKramer
Вы также * перезагружаете * свои 'самые маленькие' и' самые большие' переменные каждый раз, когда вы вызываете функции с тем же именем. Эти локальные переменные очищаются каждый раз, когда функция завершается. –
Помимо обеих этих проблем, вы также выполняете только 'return maximum' или' return smallest', если новый номер '> 0' или' <10000'; иначе у вас нет оператора 'return', потому что он отстутнут под' if', поэтому вы вернете 'None'. Не то, что это очень важно, пока вы не исправите предыдущую проблему, но как только вы это сделаете, вам тоже нужно исправить это. – abarnert