我是一名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)
没有打印出任何打印声明。
答案 0 :(得分:2)
calendarDays$: BehaviorSubject<sbCal.SbCalendarDay[]>;
intializeDays(day: sbCal.SbCalendarDay) {
let newDays = [...data] // do some calculations
this.calendarDays$ = new BehaviorSubject(newDays);
}
返回一个字符串;如果字符串不是input
,则应尝试将其转换为"done"
的整数。
如果失败,则会抛出int()
;你应该只抓住那个例外。使用裸ValueError
捕获所有异常,这通常是一个坏主意。
您无需将所有数字保留在except:
中;到目前为止,你只需要保持最低和最高。
我做了一些更改:
你在store
中摆脱了input
;我把它放回去了。
与num = input("Enter a number: ")
比较时,请使用None
代替is
==
为n < smallest
, smallest
会抛出TypeError;我们首先检查None
,以防止这种情况发生。 smallest is None
是懒惰的,所以or
- &gt;如果a or b
为True,则a
永远不会被评估,因此我们永远不会导致错误。
结果:
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)