【问题标题】:Getting the minimum value from user input in a while loop在while循环中从用户输入中获取最小值
【发布时间】:2021-04-14 00:21:10
【问题描述】:

我正在编写一个 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: 0。程序还有其他问题吗?
  • 输出应排除 0 @quamrana
  • 如果数字(即0)
  • 您必须在 while 循环内设置 smallest,而不是在循环外更改它。
  • 不幸的是,如果我把它放在while循环中,输出仍然包括0。 @JanChristophTerasa

标签: python loops conditional-statements minimum


【解决方案1】:

您需要在输入数字时同时跟踪 最大和最小的数字。

我还在进行任何处理之前检查了超出范围的数字:

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!")

【讨论】:

    【解决方案2】:

    只需在开头添加smallest = 101,然后

    if number < smallest:
        smallest = number
    

    到您的 while 块,并在最后删除相同的代码。

    另外,您的 count 已关闭,您只需删除两个减量 count -= 1 即可解决此问题。

    您也可以删除if number == 0:,因为您已经在while 条件中拥有while number != 0:,所以您知道它为零。

    【讨论】:

      【解决方案3】:

      这是另一个版本,这次使用列表来保存有效数字:

      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!")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-10
        • 2021-10-19
        • 2016-10-20
        • 1970-01-01
        • 2021-03-20
        • 2016-12-16
        相关资源
        最近更新 更多