While循环使用计数器

时间:2019-09-09 20:34:25

标签: python python-3.x

我正在尝试使其在用户使用while循环和中断功能输入来宾姓名的地方,当循环结束时我希望列表按编号顺序打印出来

  1. 詹姆斯
  2. 卡尔
  3. lisa
  4. 布莱恩

但是对可以输入多少个名称没有设置限制

我已经尝试了while true循环,但是当我使用

print("\nMy Wedding Attendees are: "  "\n", extra)

仅打印出我的婚礼参加者是: 但没有名字

print("Now enter the names of other people you are inviting to your wedding\n")
counter = 1
extra = input("Guest's Name(or press Enter to quit): ")
while counter >= 1:       #WHILE loop
    extra = input("Guest's Name(or press Enter to quit): ")
    counter = counter + 1
    if extra == "":
        break     #break Statement
print("\nMy Wedding Attendees are: "  "\n", extra)

我希望它看起来像

我的婚礼参加者是: 1.名字 2.名称 3.名称 4.名称

3 个答案:

答案 0 :(得分:0)

您可以使用以下代码完成此操作:

counter = 1
extra=[' ']  #initializing a random value for extra at the start.
a=[]

while extra != '':     
     extra = input("Guest's Name(or press Enter to quit): ")
     a.append(extra)
     counter += 1

print("\nMy Wedding Attendees are: "  "\n")
a.pop(-1) #removing the '' from the list, as we do not need it 

j=1
for i in range(0,len(a)):
    print(str(j)+'. '+a[i])
    j+=1

答案 1 :(得分:0)

您基本上在每次循环迭代中都覆盖extra,这就是为什么不打印名称的原因。建议您在列表中收集所有来宾名称(带有分配的计数器),然后打印出来。例如:

print("Now enter the names of other people you are inviting to your wedding\n")

counter = 0

guest_names = list()

while True:
    guest_name = input("Guest's name (or press Enter to quit): ")
    if guest_name == "":
        break
    counter += 1
    guest_names.append(str(counter) + ". " + guest_name)  # record all names
print("\nMy wedding attendees are:\n" + " ".join(guest_names))

然后将输出(在Jupyter笔记本中测试):

Now enter the names of other people you are inviting to your wedding

Guest's name (or press Enter to quit): John
Guest's name (or press Enter to quit): Marie
Guest's name (or press Enter to quit): Sebbe
Guest's name (or press Enter to quit): David
Guest's name (or press Enter to quit): 

My Wedding Attendees are:
1. John 2. Marie 3. Sebbe 4. David

如果要在名称之间使用换行符,则应在join()中使用换行符:

print("\nMy wedding attendees are:\n" + "\n".join(guest_names))

在这种情况下,输出将是:

My wedding attendees are:
1. John
2. Marie
3. Sebbe
4. David

希望有帮助。

答案 2 :(得分:0)

如注释中所述,您没有将数据保存在任何地方。我使用enumerate编写了代码,这消除了您情况下对count变量的需要。您可以在文档中阅读。代码是

代码

print("Now enter the names of other people you are inviting to your wedding\n")

attendes = []  # Keep names of guest

flag = True  # To keep loop control

while flag is True:
    name = input("Guest's Name(or press Enter to quit): ")
    if name is not "":  # If not empty then add to list
        attendes.append(name)
    else:  # stop the loop
        flag = False

print("\nMy Wedding Attendees are: "  "\n")

# No need for count when using enumerate
for no, name in enumerate(attendes, 1):
    print('{}. {}'.format(no, name), end=', ')
    # If you don't want the , in output just use end=' '

提供输出

Now enter the names of other people you are inviting to your wedding

Guest's Name(or press Enter to quit): A
Guest's Name(or press Enter to quit): B
Guest's Name(or press Enter to quit): C
Guest's Name(or press Enter to quit): D
Guest's Name(or press Enter to quit):

My Wedding Attendees are:

1. A, 2. B, 3. C, 4. D,