Python:Loop Sentinel Valu

2024-06-06 22:32:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我应该编写一个循环程序,让用户输入一系列整数,然后是-99,表示序列结束。输入所有数字后,程序应显示输入的最大和最小数字。

这就是我目前所拥有的:

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()

由于某种原因,sentinel值(-99)正在进入循环,我不知道如何进入,并成为最小值。除此之外,最大的价值永远不是正确的。非常感谢您的帮助!


Tags: 用户程序numberinputreturnifismain
3条回答

如果使用列表存储数字并依赖于标准库中的max/min函数,则非常简单:

def main():
  numbers = []
  while True:
    user_input = int(raw_input("Enter a number"))
    if user_input == -99:
        break
    else:
        numbers.append(user_input)
  print('Largest is {}, smallest is {}'.format(max(numbers), min(numbers)))

缩进在python中很重要,因此最小值和最大值函数return语句的缩进不正确

def largest(number):
    largest = 0
    if number > largest:
        largest = number
    return largest 

def smallest(number):
    smallest = 10000
    if number < smallest:
        smallest = number
    return smallest

要解决这个问题,对代码进行的最快更改是

def main():
    user_input = 1
    while user_input != -99:
        user_input = int(input("Enter your number or -99 to end."))
        if use_input == -99:
            break
        bigger = largest(user_input)
        tinier = smallest(user_input)
    print('The largest number is ', bigger, "and the smallest is ", tinier, ".")

问题是,如果用户输入-99,则完成循环迭代的其余行。在下次之前,它不会终止while循环,但它已经在此时执行了largestsmallest,因此它已经被覆盖。

相关问题 更多 >