我正在尝试为我和我的朋友制作一个随机的名字选择器。
我遇到的问题是,如果我输入一堆名字,输出会给我 5 个单独的字母,这些字母是从我们的名字而不是我们的全名中挑选出来的。
我收到的输出示例
这是我到目前为止的代码。
import random
print("Random Name Picker")
input_string = str(input("Input names: "))
if input_string == "exit":
exit()
nameList = input_string.split()
print("Our contestants for this round are:", nameList)
sampled_list = random.choices(input_string, k=5)
print("Our winners are:", sampled_list)
任何帮助将不胜感激。 如果您需要更多信息,请告诉我。
谢谢!
编辑:我已经修复了它,我也不再在我的代码中获得重复的名称。 这是将来任何人的固定程序
import random
print("Random Name Picker")
input_string = input("Input names: ")
if input_string == "exit":
exit()
nameList = input_string.split() # by default it will split by space
print("Our contestants for this round are:", nameList)
sampled_list = random.sample(nameList, k=5)
print("Our winners are:", sampled_list)
主要变化是:
- 包括 ((
input_string.split()
以适当地拆分我的输入。同样默认情况下,它将按空格拆分,因此无需在split()
中指示(" ")
。 - 将
name_list
放在random.sample()
之后(而不是random.choices()
(而不是input_string
非常感谢帮助过我的人!
您需要从nameList
而不是input_string
中选择随机选择。
input_string
是尚未拆分的字符串,因此random.choices
返回字符。nameList
是字符串列表,因此random.choices
将返回列表的条目。
您需要按' '
拆分输入字符串,并从结果列表中随机选择。像这样:
print("Random Name Picker")
input_string = str(input("Input names: "))
if input_string == "exit":
exit()
nameList = input_string.split(' ')
print("Our contestants for this round are:", nameList)
sampled_list = random.choices(nameList, k=5)
print("Our winners are:", sampled_list)
当然,结果可能不止一次具有相同的名称,因此请将其设为set(sampled_list)
- 据我了解您的问题,您需要从输入的名称中随机列出获奖者,因此您的程序中存在一个小错误。这是您的程序。
import random
print("Random Name Picker")
input_string = input("Input names: ")
if input_string == "exit":
exit()
print("Our contestants for this round are:", input_string.split(","))
print("Our winners are:", random.choices(input_string.split(","), k=5))
- 首先,当您传递到
random.choices()
时,您不会拆分input_string
因此,它将返回@b9s所说的characters
列表。 - 此外,您正在使用
str(input("Input names: "))
.如果存在提示参数,则会将其写入标准输出,而不使用尾随换行符。然后,input()
从输入中读取一行,将其转换为字符串(去除尾随换行符(,并返回该字符串。 - 如果你想要唯一的随机名称,那么你可以使用下面的代码。
import random
print("Random Name Picker")
input_string = input("Input names: ")
if input_string == "exit":
exit()
name_list = input_string.split(",")
print("Our contestants for this round are:", name_list)
s = int(input("Enter a Positive Sample Size : "))
print("Our winners are:", random.sample(name_list,k=s) if s <= len(name_list) else "Sample larger than population or is negative")
- 请注意,如果不传递
,
分隔值,则仅使用split()
。默认情况下,它使用空格拆分string
。
参考:选择函数和输入函数