Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使代码在没有while循环的情况下重复?_Python - Fatal编程技术网

Python 如何使代码在没有while循环的情况下重复?

Python 如何使代码在没有while循环的情况下重复?,python,Python,我试图重复一段代码,要求用户输入一个名称,然后再要求输入一个新名称。如果用户写了一个数字,程序应该要求一个新的名字。如果用户键入“退出”,程序应打印用户输入的姓名数量 到目前为止,我已经用while循环解决了这个问题,但我希望不用while循环就可以解决这个问题,并且仍然会不断提示用户输入新名称 participants=[] count=0 while True: user_name=input("Course participant name: ") if user_nam

我试图重复一段代码,要求用户输入一个名称,然后再要求输入一个新名称。如果用户写了一个数字,程序应该要求一个新的名字。如果用户键入“退出”,程序应打印用户输入的姓名数量

到目前为止,我已经用while循环解决了这个问题,但我希望不用while循环就可以解决这个问题,并且仍然会不断提示用户输入新名称

participants=[]
count=0

while True:
    user_name=input("Course participant name: ")
    if user_name == "quit":
        print("Number of participants: ", count)
    elif user_name.isdigit():
        continue
    elif user_name.isalpha():
        participants.append(user_name)
        count+=1
    else:
        print("Invalid input")
        break

有什么建议吗

您可以使用递归:

def ask(participants):
    user_name = input("Course participant name: ")
    if user_name == "quit":
        print("Number of participants: ", len(participants))
    elif user_name.isdigit():
        ask(participants)
    elif user_name.isalpha():
        participants.append(user_name)
        ask(participants)
    else:
        print("Invalid input")
        return

不再循环,而是越来越深入调用堆栈。无需单独跟踪
计数
,因为它已按
参与者的长度编码

您可以使用递归:

def ask(participants):
    user_name = input("Course participant name: ")
    if user_name == "quit":
        print("Number of participants: ", len(participants))
    elif user_name.isdigit():
        ask(participants)
    elif user_name.isalpha():
        participants.append(user_name)
        ask(participants)
    else:
        print("Invalid input")
        return

不再循环,而是越来越深入调用堆栈。无需单独跟踪
计数
,因为它已经按照
参与者
的长度编码

如果您正在使用
for
循环寻找解决方案,则可以执行以下操作:

participants=[]
count=0
from itertools import cycle
for i in cycle(range(0, 1)):
    user_name=input("Course participant name: ")
    if user_name == "quit":
        print("Number of participants: ", count)
    elif user_name.isdigit():
        continue
    elif user_name.isalpha():
         participants.append(user_name)
         count+=1
    else:
         print("Invalid input")
         break

如果您正在使用
for
循环寻找解决方案,则可以执行以下操作:

participants=[]
count=0
from itertools import cycle
for i in cycle(range(0, 1)):
    user_name=input("Course participant name: ")
    if user_name == "quit":
        print("Number of participants: ", count)
    elif user_name.isdigit():
        continue
    elif user_name.isalpha():
         participants.append(user_name)
         count+=1
    else:
         print("Invalid input")
         break

这是一种稍微复杂的方法,使用
参与者
列表本身并提供初始元素(启动循环),最终将删除该元素。只要输入名称,循环就会继续,因为
参与者列表在每次迭代中都会增加

participants=["Start"] # insert initial element, to start the loop
count=0

for i in participants:
    user_name=input("Course participant name: ")
    if user_name == "quit":
        print("Number of participants: ", count)
    elif user_name.isdigit():
        continue
    elif user_name.isalpha():
        participants.append(user_name)
        count+=1
    else:
        print("Invalid input")
        break

del participants[0] # remove initial element

这是一种稍微复杂的方法,使用
参与者
列表本身并提供初始元素(启动循环),最终将删除该元素。只要输入名称,循环就会继续,因为
参与者列表在每次迭代中都会增加

participants=["Start"] # insert initial element, to start the loop
count=0

for i in participants:
    user_name=input("Course participant name: ")
    if user_name == "quit":
        print("Number of participants: ", count)
    elif user_name.isdigit():
        continue
    elif user_name.isalpha():
        participants.append(user_name)
        count+=1
    else:
        print("Invalid input")
        break

del participants[0] # remove initial element

允许对循环使用<代码>吗?允许对循环使用是出于好奇:为什么要在<代码>时避免使用<代码>呢?允许对循环使用<代码>吗?允许对循环使用是出于好奇:为什么要在<代码>时避免使用<代码>呢?是,请参阅例如:假设用户必须按每个级别的键,则可能没问题,但出于实际目的,我将使用原始的while-loop。如果用户必须按每个级别的键,则可能没问题,但出于实际目的,我将使用原始的while-loop。