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在这种情况下,您可以在所有函数之外设置一个全局变量,并在函数之间跟踪它的变化。可能的重复项…请参阅接受的答案。我想问题是如何更新迭代器,而我在前面的链接问题中没有看到。我想这个问题更接近于用户我提出的问题他在问;