python-3.x 如何使随机 Shuffle 对用户输入的名称列表起作用?

sqougxex  于 2023-06-25  发布在  Python
关注(0)|答案(1)|浏览(81)

我正在尝试在Python中创建一个名称选择器。首先,我问用户列表中有多少个名字。然后用户可以输入这么多的名字。然后列表应该 Shuffle 所有的名字,并选择一个。但是,每次我这样做时,它总是选择用户输入的姓氏。我该怎么解决?

这是我的代码-

随机取名器使用说明

print("Hooray you decided to use a random name picker!")
print("\n")
print("Below you will be prompted on how to enter your list of names.")
print("\n")
n = int(input("How many names would you like to enter on the list today? Please press enter   after you type in your number:" +" "))
list1 =[]

for i in range(n):
names = input("Please enter the name. Press enter when finished." +" ")
list1.append(names)

print("\nHere are the names you entered into the list:",list1)

answer = input("\nAre you ready to pick a name?" +" " "Press enter to continue.")
print("\n")

import random

list1 = []
random.shuffle(list1)

print(f"The name picked: {names}")
print("\n")

第一次 Shuffle 后列表-这部分也不行

random.shuffle(list1)
print(list1)
9udxz4iz

9udxz4iz1#

虽然这个网站通常不提供辅导服务,但考虑到你的努力,我破例帮你。
开始,random.shuffle重新排列了一个项目列表,但没有选择其中一个项目,更好的功能是使用random.choice函数,它从列表中返回一个随机选择的项目。其次,如果你使用一种机制,比如使用stop来结束输入,就没有必要询问输入的名字的数量。
现在,代码做你想要的。

from random import choice

print("Hooray you decided to use a random name picker!\n")
print("Please enter your list of names one name at a time.")
names_list = []
while True:
    resp = input('Enter a new Name or the word quit to stop ')
    if resp.lower() == 'quit':
        break
    names_list.append(resp)
print(f"You Entered {len(names_list)} Names to include {', '.join(names_list)}" )
print(f'I have selected {choice(names_list)} at Random')

试图解释正在做什么。'' names_list``创建一个空列表来保存要输入的名称。
while True:定义了一个while循环,该循环将永远运行或直到break被执行为止。
if resp.lower == 'quit'做了几件事:首先,它使用lower来强制单词stop(如果键入的话)全部为小写字母,如果遇到,则将该单词与退出单词“quit”进行比较,这打破了while循环。
names_list.append(resp)导致新名称添加到names_list中。
print(f"You Entered {len(names_list)} Names to include {', '.join(names_list)}" )在一行中使用了几个python函数。
1.它使用f字符串格式来构建复杂的print语句。
1.它使用len(names_list)来确定输入了多少个名称。
1.它使用', '.join(names_list)'将列表转换成一个由逗号分隔的名字串,以便打印出列表中有多少个名字,并显示完整的名字列表。
最后,行print(f'I have selected {choice(names_list)} at Random')使用f字符串格式创建一个可打印的行,该行使用随机函数选择来选择列表中的一个名称。
希望这对你学习Python有所帮助。

相关问题