在while循环中从用户输入中获取最小值
Getting the minimum value from user input in a while loop
我正在编写一个 Python 程序,它不断地向用户询问从 1 到 100 的数字,然后一旦用户输入数字 0,程序就会打印出提供的最小数字和最大数字,如以及所有数字的平均值。
我唯一的问题:当我想排除 0 时,我总是得到 0 作为输入的最小值。
我已经尝试过执行以下操作:
count = 0
total = 0
number = 1
smallest = 0
largest = 0
while number != 0:
number = int(input("Please input a value from 1 to 100: "))
if number < 0 or number > 100:
print("Why you give me value outside of range :(\n")
count -= 1
continue
count += 1
total = total + number
if number > largest:
largest = number
if number == 0:
count -= 1
average = total / count
if number < smallest:
smallest = number
print("The results are: ")
print('Smallest: {}'.format(smallest))
print('Largest: {}'.format(largest))
print('Average: {}'.format(average))
print("\nThank you!")
开头加smallest = 101
即可,
if number < smallest:
smallest = number
到你的while
块,最后删除相同的代码。
此外,您的 count
已关闭,您应该删除两个减量 count -= 1
来解决这个问题。
您也可以删除 if number == 0:
,因为您在 while
条件中已经有 while number != 0:
,所以您知道它是零。
您需要在输入数字时同时跟踪最大和最小值。
在进行任何处理之前,我还检查了超出范围的数字:
count = 0
total = 0
number = 0
smallest = 101 # starts bigger than any input number
largest = 0 # starts smaller than any input number
while True:
number = int(input("Please input a value from 1 to 100: "))
if number == 0:
break
if number < 0 or number > 100:
print("Why you give me value outside of range :(\n")
continue
count += 1
total = total + number
if number > largest:
largest = number
if number < smallest:
smallest = number
if number == 0:
average = total / count
print("The results are: ")
print('Smallest: {}'.format(smallest))
print('Largest: {}'.format(largest))
print('Average: {}'.format(average))
print("\nThank you!")
这是另一个版本,这次使用列表来保存有效数字:
numbers = []
while True:
number = int(input("Please input a value from 1 to 100: "))
if number == 0:
break
if number < 0 or number > 100:
print("Why you give me value outside of range :(\n")
continue
numbers.append(number)
if numbers:
average = sum(numbers) / len(numbers)
print("The results are: ")
print('Smallest: {}'.format(min(numbers)))
print('Largest: {}'.format(max(numbers)))
print('Average: {}'.format(average))
print("\nThank you!")
我正在编写一个 Python 程序,它不断地向用户询问从 1 到 100 的数字,然后一旦用户输入数字 0,程序就会打印出提供的最小数字和最大数字,如以及所有数字的平均值。
我唯一的问题:当我想排除 0 时,我总是得到 0 作为输入的最小值。
我已经尝试过执行以下操作:
count = 0
total = 0
number = 1
smallest = 0
largest = 0
while number != 0:
number = int(input("Please input a value from 1 to 100: "))
if number < 0 or number > 100:
print("Why you give me value outside of range :(\n")
count -= 1
continue
count += 1
total = total + number
if number > largest:
largest = number
if number == 0:
count -= 1
average = total / count
if number < smallest:
smallest = number
print("The results are: ")
print('Smallest: {}'.format(smallest))
print('Largest: {}'.format(largest))
print('Average: {}'.format(average))
print("\nThank you!")
开头加smallest = 101
即可,
if number < smallest:
smallest = number
到你的while
块,最后删除相同的代码。
此外,您的 count
已关闭,您应该删除两个减量 count -= 1
来解决这个问题。
您也可以删除 if number == 0:
,因为您在 while
条件中已经有 while number != 0:
,所以您知道它是零。
您需要在输入数字时同时跟踪最大和最小值。
在进行任何处理之前,我还检查了超出范围的数字:
count = 0
total = 0
number = 0
smallest = 101 # starts bigger than any input number
largest = 0 # starts smaller than any input number
while True:
number = int(input("Please input a value from 1 to 100: "))
if number == 0:
break
if number < 0 or number > 100:
print("Why you give me value outside of range :(\n")
continue
count += 1
total = total + number
if number > largest:
largest = number
if number < smallest:
smallest = number
if number == 0:
average = total / count
print("The results are: ")
print('Smallest: {}'.format(smallest))
print('Largest: {}'.format(largest))
print('Average: {}'.format(average))
print("\nThank you!")
这是另一个版本,这次使用列表来保存有效数字:
numbers = []
while True:
number = int(input("Please input a value from 1 to 100: "))
if number == 0:
break
if number < 0 or number > 100:
print("Why you give me value outside of range :(\n")
continue
numbers.append(number)
if numbers:
average = sum(numbers) / len(numbers)
print("The results are: ")
print('Smallest: {}'.format(min(numbers)))
print('Largest: {}'.format(max(numbers)))
print('Average: {}'.format(average))
print("\nThank you!")