【问题标题】:finding highest number, no arrays, only if statements查找最大数字,没有数组,只有 if 语句
【发布时间】:2015-07-16 21:10:08
【问题描述】:

我目前正在学习 Python 编程课程,我们被分配了一项任务,即通过提示用户找到最大的数字。 使用数组很容易完成,但我们无法将它们用于此分配。 我遇到一个问题,如果我输入一系列数字,例如“55、100、99”,我的程序会告诉我 99 是最高数字。我不确定出了什么问题。

largest = None
smallest = None
temp = None
while temp != "done":
    num = raw_input("Enter a number: ")
    if num == "done" :
        break
    try:
        int(num)
    except:
        print ('That is not an integer. Try again')
        break
    print(largest)
    if largest is None:
        largest = num 
    if largest != None and num > largest:
        largest = num
print ('Invalid input')
print "Maximum is", largest
print "Minimum is", smallest

【问题讨论】:

  • 您需要将num 转换为整数,然后再与largest 进行比较。
  • int(num) 本身并没有我猜你认为的那样。之后尝试type(num);惊讶吗? Python 是强类型,你不能就地转换。
  • 您没有将numint 的转换分配给任何变量
  • 你也可以if largest is None or num > largest:and忘记其他的如果

标签: python if-statement numbers highest


【解决方案1】:

变化:

int(num)

到:

num = int(num)

否则,num 仍将是一个字符串,因为您没有将转换结果保存在任何地方。

【讨论】:

    【解决方案2】:

    int(num)改为num = int(num)以保存类型转换

    【讨论】:

      【解决方案3】:

      我认为除了将 int(num) 保存到 num 之外,您不需要在每个循环中检查最大/最小是否为 None,而只需在第一次进入循环时对其进行初始化:

      first=True
      while True:
          num = raw_input("Enter a number: ")
          if num == "done" :
              break
          try:
              num = int(num)
          except:
              print ('That is not an integer. Try again')
              raise
      
          if first:
              largest = smallest = num
              first = False
          if num > largest:
              largest = num
          if num < smallest:
              smallest = num
      print "Maximum is", largest
      print "Minimum is", smallest
      

      发生错误时,您也可以只引发异常,而不是只跳出循环(这样它更符合 Python 风格,并且不会打印那些 Max/Min 结果)。

      【讨论】:

        【解决方案4】:

        我认为您不需要在 except 套件中 break。原因是程序在执行例外套件中的代码时退出。也就是说,您从 stringint 的类型转换没有保存在任何地方。要保存这个,试试这个:

        num= int(num) instead of just int(num)
        

        【讨论】:

          猜你喜欢
          • 2013-03-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-05-16
          • 2020-05-17
          • 2015-02-07
          • 1970-01-01
          • 2017-09-29
          相关资源
          最近更新 更多