Python练习

时间:2017-08-15 15:32:03

标签: python algorithm

我是一名Python新手并坚持以下问题:

编写一个程序,重复提示用户输入整数,直到用户输入“完成”为止。一旦完成'输入后,打印出最大和最小的数字。如果用户输入除有效数字以外的任何内容,请使用try / except捕获它并输出相应的消息并忽略该数字。输入7,2,bob,10和4并匹配下面的输出。

我的解决方案:

largest = None
smallest = None
store=[]

while True:
    num = input("Enter a number: ")
    try:        
        if num == "done" : break
        else:
           store.append(num)
    except:
        print("U have an invalid entry")

largest=max(store)
smallest=min(store)
print ("Invalid input")
print ("Maximum is",largest)
print ("Minimum is",smallest)

没有打印出任何打印声明。

2 个答案:

答案 0 :(得分:2)

  1. calendarDays$: BehaviorSubject<sbCal.SbCalendarDay[]>; intializeDays(day: sbCal.SbCalendarDay) { let newDays = [...data] // do some calculations this.calendarDays$ = new BehaviorSubject(newDays); } 返回一个字符串;如果字符串不是input,则应尝试将其转换为"done"的整数。

  2. 如果失败,则会抛出int();你应该只抓住那个例外。使用裸ValueError捕获所有异常,这通常是一个坏主意。

  3. 您无需将所有数字保留在except:中;到目前为止,你只需要保持最低和最高。

  4. 我做了一些更改:

    1. 你在store中摆脱了input;我把它放回去了。

    2. num = input("Enter a number: ")比较时,请使用None代替is

    3. 如果==n < smallest
    4. smallest会抛出TypeError;我们首先检查None,以防止这种情况发生。 smallest is None是懒惰的,所以or - &gt;如果a or b为True,则a永远不会被评估,因此我们永远不会导致错误。

    5. 结果:

      b

      一样运行
      largest = None
      smallest = None
      
      while True:
          num = input("Enter a number: ")
          if num == "done":
              break
          try:
              n = int(num)
              if smallest is None or n < smallest:
                  smallest = n
              if largest is None or n > largest:
                  largest = n
          except ValueError:
              # num cannot be converted to an int
              print ("Invalid input")
      
      print("Smallest is", smallest)
      print("Largest is", largest)
      

答案 1 :(得分:1)

你的try-except块不能引发任何异常。它始终是正确的。 您应该将输入转换为int,此操作可能会导致错误。

# largest = None
# smallest = None
store=[]

while True:
    s = input("Enter a number: ")
    if s == "done":
        break

    try:
        store.append(int(s))
    except:
        print("U have an invalid entry")

largest = max(store)
smallest = min(store)
# print("Invalid input")
print("Maximum is ", largest)
print("Minimum is ", smallest)