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

Python 返回到for循环中的特定数字,python,python-3.x,Python,Python 3.x,我有以下代码: 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 n

我有以下代码:

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)
现在我想检查输入是否包含任何字母。如果有,我想打印一条消息,然后我想返回到用户先前使用的号码。我尝试返回五个数字(),但用户将从头开始


非常感谢您的帮助。

为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_list

def check_if_number_is_1_to_25(number):
    if number.isalpha():
        print("Enter a number between 1 and 25.")
        five_numbers(4)

您可以使用
while
循环不断向用户请求有效输入,直到用户输入一个。您还应该让check函数引发异常,以便调用方可以捕获异常并重试输入:

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.')

不要使用for循环,使用以列表长度为条件的while循环。使check函数返回布尔值,并使用它来决定是否附加到列表中

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)
def五个数字():
我的清单=[]
而len(我的清单)<5:
user_nr=input(“Number{}:”.format(len(my_list)+1))
如果检查用户编号是否为1到25(用户编号):
我的列表。追加(用户编号)
其他:
打印(“输入一个介于1和25之间的数字”)
返回我的列表
def检查_编号是否为_1_至_25(编号):

返回number.isdigit()和(1我不明白。为什么要键入五个数字(4)?我希望它作为计数器。例如,如果用户在数字2上,并且正在键入alpha-我希望返回到输入(“数字2:”)@Gringo在这种情况下,您可以在所有函数之外设置一个全局变量,并在函数之间跟踪它的变化。可能的重复项…请参阅接受的答案。我想问题是如何更新迭代器,而我在前面的链接问题中没有看到。我想这个问题更接近于用户我提出的问题他在问;