我应该编写一个带循环的程序,让用户输入一系列整数,然后用-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()
由于某种原因,哨兵值(-99)进入循环,我不知道如何,并成为最小值。最重要的是,最大的价值并不是正确的。非常感谢!
答案 0 :(得分:0)
对您的代码进行最快的修改是
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
循环,但它已经在那时执行了largest
和smallest
,因此它已被覆盖。
答案 1 :(得分:0)
据我所知,您有两个问题:您的输入在被检查之前正在处理,并且您的largest()
和smallest()
功能存在问题。当您扫描用户输入时,您会在验证之前立即进入您的功能。像这样重构你的循环:
input()
while(){
...
...
input()
}
对于第二部分,您的功能不起作用,因为您每次运行时都会初始化值。在文件顶部的标题中初始化函数,然后只比较它们。例如,将行largest=0
移到导入语句正下方的文件顶部。除此之外,我认为它应该有用。
答案 2 :(得分:0)
你的缩进在python中很重要,所以你的最小值和最大值函数返回语句是不正确的缩进
def largest(number):
largest = 0
if number > largest:
largest = number
return largest
def smallest(number):
smallest = 10000
if number < smallest:
smallest = number
return smallest
答案 3 :(得分:0)
如果您使用列表存储数字并依赖标准库中的最大/最小函数,则非常简单:
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)))