3 回答

TA貢獻(xiàn)1765條經(jīng)驗(yàn) 獲得超5個(gè)贊
為 num 添加關(guān)鍵字 arg 并將其默認(rèn)為None:
def five_numbers(num=None):
my_list = []
if num is None:
for i in range(1, 6):
user_nr = check_if_number_is_1_to_25(input("Number " + str(i) + ": "))
my_list.append(user_nr)
else:
# do other stuff with num (4) here...
return my_list
def check_if_number_is_1_to_25(number):
if number.isalpha():
print("Enter a number between 1 and 25.")
five_numbers(4)

TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊
不要使用 for 循環(huán),使用以列表長(zhǎng)度為條件的 while 循環(huán)。使檢查函數(shù)返回一個(gè)布爾值并使用它來決定是否附加到列表中。
def five_numbers():
my_list = []
while len(my_list) < 5:
user_nr = input("Number {}: ".format(len(my_list)+1))
if check_if_number_is_1_to_25(user_nr):
my_list.append(user_nr)
else:
print("Enter a number between 1 and 25.")
return my_list
def check_if_number_is_1_to_25(number):
return number.isdigit() and (1 <= float(number) <= 25)

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以使用while循環(huán)不斷向用戶詢問有效輸入,直到用戶輸入。您還應(yīng)該讓 check 函數(shù)引發(fā)異常,以便調(diào)用者可以捕獲異常并重試輸入:
def five_numbers():
my_list = []
for i in range(1, 6):
while True:
user_nr = input("Number " + str(i) + ": ")
try:
check_if_number_is_1_to_25(user_nr)
break
except ValueError as e:
print(str(e))
my_list.append(user_nr)
return my_list
def check_if_number_is_1_to_25(number):
if number.isalpha():
raise ValueError('Enter a number between 1 and 25.')
添加回答
舉報(bào)