【问题标题】:Wrong Output. Largest and Smallest number is wrong? [duplicate]错误的输出。最大和最小的数错了吗? [复制]
【发布时间】:2021-05-06 05:37:53
【问题描述】:

在作业方面需要帮助。我不知道为什么我把最大和最小的数字弄错了。

    largest = None
    smallest = None
    while True:
      num = input('Enter a number: ')
      if num == 'done': 
        break
      try:
        y=float(num)
      except:
        print ('Invalid Input')
        continue
      if largest is None:
        largest=num
      elif num > largest:
        largest=num
      if smallest is None:
        smallest=num
      elif num < smallest:
        smallest=num
  
   print("Maximum is", largest)
   print ("Minimum is", smallest)

【问题讨论】:

  • 请格式化代码,这样不可读。
  • 你的目标是什么?
  • @BuddyBob 我需要找到循环中输入的最大和最小数字。

标签: python output


【解决方案1】:

num为字符串,比较时需要转换类型

【讨论】:

    【解决方案2】:

    您正在转换浮点转换值,然后将其存储在 y 中。 但是您正在使用num 进行比较。 试试这个:

    largest = None
    smallest = None
    while True:
        num = input('Enter a number: ')
        try:
                y=float(num)
        except Exception as e:
                print ('Invalid Input')
                break
        if not largest:
                largest=y
        elif y > largest:
                largest=y
        if not smallest:
                smallest=y
        elif y < smallest:
                smallest=y
      
    print("Maximum is", largest)
    print ("Minimum is", smallest)
    

    一旦你输入了任何无法在 python 中解析为数字的内容,这将中断循环。 在 python 3 中也使用这个。如果你使用的是 python2.7,你需要 raw_input。

    如果您使用的是 Python 3.x,则 raw_input 已重命名为 input。引用Python 3.0 release notesPEP3111,

    raw_input() 被重命名为 input()。也就是说,新的 input() 函数从 sys.stdin 中读取一行并将其返回,并去掉尾随的换行符。如果输入过早终止,它会引发 EOFError 。要获取 input() 的旧行为,请使用 eval(input())

    【讨论】:

      【解决方案3】:

      您正在比较字符串,您必须在尝试中更改您的演员:

      try:
          num=float(num)
      except:
          print ('Invalid Input')
      

      【讨论】:

        【解决方案4】:

        在您的代码第 8 行中,您定义了y = float(num)。那么你只需要使用y而不是num,像这样:

            largest = None
            smallest = None
            while True:
              num = input('Enter a number: ')
              if num == 'done': 
                break
              try:
                y=float(num)
              except:
                print ('Invalid Input')
                continue
              if largest is None:
                largest=y
              elif y > largest: # !!!
                largest=y
              if smallest is None:
                smallest=y
              elif y < smallest: # !!!
                smallest=y
          
           print("Maximum is", largest)
           print ("Minimum is", smallest)
        

        【讨论】:

          猜你喜欢
          • 2020-08-09
          • 2022-01-15
          • 1970-01-01
          • 2017-11-05
          • 1970-01-01
          • 2012-09-14
          • 1970-01-01
          • 2019-06-27
          • 1970-01-01
          相关资源
          最近更新 更多