【问题标题】:Find largest number from user input从用户输入中找到最大的数字
【发布时间】:2015-07-16 04:54:49
【问题描述】:

我试图制作一个从用户输入中打印最大和最小数字的代码。我希望用户可以输入数字,直到出现ValueError

我尝试过这样的事情:

value = raw_input(">")

largest_so_far = None
smalest_so_far = None

while(value):
    if value > largest_so_far:
        largest_so_far = value
    if ValueError:
        print largest_so_far

这段代码创建了无限循环。那么我怎样才能使它有限。

【问题讨论】:

  • 请显示您编写的实际代码。 PS 的东西对填充代码片段没有多大帮助。
  • 你想做类似的事情吗?一旦用户输入你想显示最大和最小的数字?或用户将输入所有数字,您要显示最大和最小数字
  • @thefourtheye 我没有做太多,但我已经编辑了问题并添加了完整代码
  • @MaheshGurav 我希望该用户可以输入任意数量的用户,直到用户输入错误
  • @Freddy 然后你可以创建一个所有输入的列表并对列表进行排序。列表的第一个元素是最小的数字,最后一个元素是最大的。您也可以使用冒泡排序。

标签: python python-2.7 while-loop infinite-loop


【解决方案1】:
#Initialize the largest and smallest values as 'None'  
largest  = None  
smallest = None  

while True:  
    num = input("Enter a number:")  
        if num == "finish": #Type 'finish' to get the output    
    break  
    try:  
        fnum = float(num)  #Convert input to float  

        #Get largest value  
        if largest is None:  
            largest = fnum  
        elif fnum > largest:  
            largest = fnum  

        #Get smallest value  
        elif smallest is None:   
            smallest = fnum  
        elif fnum < smallest:  
            smallest = fnum  

    except: 
        #If the user input is not 'finish' or a number    
        print("Invalid input")   
        continue    


print("Largest value is",largest)  
print("Smallest value is",smallest)  

【讨论】:

    【解决方案2】:
    num1 = int(input("Enter first number: "))
    num2 = int(input("Enter second number: "))
    num3 = int(input("Enter third number: "))
    
    if (num1 >= num2) and (num1 >= num3):
        largest = num1
    elif (num2 >= num1) and (num2 >= num3):
        largest = num2
    else:
        largest = num3
    
    print("The largest number between", num1, ",", num2, "and", num3, "is", largest)
    

    【讨论】:

      【解决方案3】:

      你需要在这里使用tryexcept

      while(True):
          try:
               value = float(raw_input(">"))     # Get the input from user
               if value > largest_so_far:        # Type cast to integer
                  largest_so_far = value
          except ValueError as e:                # Handle ValueError
              print largest_so_far
              break                              # Break the infinite loop
      

      【讨论】:

      • 您正在将字符串与&gt; 进行比较。
      • 还是失败,改成int(raw_input("&gt;"))。你忘了largest_so_far = value
      • @BhargavRao 那么你可以随意删除括号(value) :D
      • @BhargavRao 和...可能largest_so_far 需要用int 类型初始化,即0 :)
      • @BhargavRao 初始化 maxVal-float('inf')minValfloat('inf') 然后你可以使用 maxVal = max(value, maxVal)minVal = min(value, minVal) 更新它们。问题解决了。
      【解决方案4】:

      试试这个

      value = raw_input(">")
      
      largest_so_far = None
      smalest_so_far = None
      
      while(value):
          if value > largest_so_far:
              largest_so_far = value
          raise ValueError('largest_so_far')
      

      【讨论】:

      • 没有不工作。它显示以下错误: Traceback(最近一次调用最后一次):文件“test.py”,第 9 行,在 中引发 ValueError('largest_so_far') ValueError: maximum_so_far
      猜你喜欢
      • 2016-06-13
      • 1970-01-01
      • 2023-03-14
      • 2014-08-03
      • 2016-03-08
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多