2 回答

TA貢獻1795條經(jīng)驗 獲得超7個贊
這段代碼看起來像是針對 Python 2.x 的,它input()試圖評估輸入,如果您鍵入的字符串不是變量名,則會發(fā)出錯誤信號。Python 3.x 在您鍵入時不會發(fā)出錯誤信號done。
所以只需比較輸入。當您嘗試將其轉(zhuǎn)換為int.
while True:
num = input("Enter a number")
if num == "done":
break
try:
num = int(num)
except ValueError:
print("Invalid input")
continue
l.append(num)
l.sort()
largest = l[-1]
smallest = l[0]

TA貢獻1772條經(jīng)驗 獲得超8個贊
重構(gòu)邏輯。 NameError不會發(fā)生,finally也不需要……只是在“終于”完成時將其放在外面。
nums = []
while True:
num = input('Enter a number or "done": ') # num is a string at this point
if num == 'done':
break
try:
# try to convert num to integer...
num = int(num) # This can fail with ValueError, so is in try
nums.append(num) # This won't run if above raises exception
except ValueError:
print("Invalid input")
# No need to sort...
print("Maximum", max(nums))
print("Minimum", min(nums))
添加回答
舉報