返回到 for 循环中的特定数字

我有以下代码:


def five_numbers():

    my_list = []

    for i in range(1, 6):

        user_nr = check_if_number_is_1_to_25(input("Number " + str(i) + ": "))

        my_list.append(user_nr)

    return my_list


def check_if_number_is_1_to_25(number):

    if number.isalpha():

        print("Enter a number between 1 and 25.")

        # Here I want to go back to five_numbers() and the number x (for example number 4)

现在我想检查输入是否包含任何字母。如果有,我想打印一条消息,然后我想回到用户之前使用的号码。我试过返回 Five_numbers() 但用户将从头开始。


我感谢所有的帮助。


慕田峪9158850
浏览 153回答 3
3回答

POPMUISE

为 num 添加关键字 arg 并将其默认为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_listdef check_if_number_is_1_to_25(number):    if number.isalpha():        print("Enter a number between 1 and 25.")        five_numbers(4)

撒科打诨

不要使用 for 循环,使用以列表长度为条件的 while 循环。使检查函数返回一个布尔值并使用它来决定是否附加到列表中。def five_numbers():&nbsp; &nbsp; my_list = []&nbsp; &nbsp; while len(my_list) < 5:&nbsp; &nbsp; &nbsp; &nbsp; user_nr = input("Number {}: ".format(len(my_list)+1))&nbsp; &nbsp; &nbsp; &nbsp; if check_if_number_is_1_to_25(user_nr):&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; my_list.append(user_nr)&nbsp; &nbsp; &nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print("Enter a number between 1 and 25.")&nbsp; &nbsp; return my_listdef check_if_number_is_1_to_25(number):&nbsp; &nbsp; return number.isdigit() and (1 <= float(number) <= 25)

元芳怎么了

您可以使用while循环不断向用户询问有效输入,直到用户输入。您还应该让 check 函数引发异常,以便调用者可以捕获异常并重试输入:def five_numbers():&nbsp; &nbsp; my_list = []&nbsp; &nbsp; for i in range(1, 6):&nbsp; &nbsp; &nbsp; &nbsp; while True:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; user_nr = input("Number " + str(i) + ": ")&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; try:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; check_if_number_is_1_to_25(user_nr)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; except ValueError as e:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print(str(e))&nbsp; &nbsp; &nbsp; &nbsp; my_list.append(user_nr)&nbsp; &nbsp; return my_listdef check_if_number_is_1_to_25(number):&nbsp; &nbsp; if number.isalpha():&nbsp; &nbsp; &nbsp; &nbsp; raise ValueError('Enter a number between 1 and 25.')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python