如何让我的输入拾取单词而不是字母? (Python)
How do I make my input pick up words rather than letters? (Python)
我正在尝试为我和我的朋友制作一个随机名称选择器。
我遇到的问题是,如果我输入一堆名字,输出会给我从我们的名字中挑选的 5 个单独的字母,而不是我们的全名。
Example of the output I receive
到目前为止,这是我的代码。
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()
之后包括 () 以适当地拆分我的输入。同样默认情况下,它将按 space 拆分,因此无需在 split()
. 中指示 (" ")
- 将
name_list
放在 random.sample()
之后(而不是 random.choices()
)而不是 input_string
非常感谢帮助过我的人!
您需要从 nameList
而不是 input_string
中随机选择。
input_string
是一个还没有拆分的字符串,所以有random.choices
return个字符。 nameList
是一个字符串列表,因此 random.choices
将是列表的 return 个条目。
您需要将输入字符串按 ' '
拆分,然后从结果列表中随机选择。类似于:
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
所以它将 return 列表 characters
如@b9s 所说。
- 此外,您正在使用
str(input("Input names: "))
。如果存在 prompt 参数,则将其写入标准输出而没有尾随换行符。 input()
然后从输入中读取一行,将其转换为字符串(去除尾随的换行符),然后 return 就是这样。
- 如果你想要唯一的随机名称,那么你可以使用下面的代码。
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
使用 space.
参考: Choices Function and Input Function
我正在尝试为我和我的朋友制作一个随机名称选择器。
我遇到的问题是,如果我输入一堆名字,输出会给我从我们的名字中挑选的 5 个单独的字母,而不是我们的全名。
Example of the output I receive
到目前为止,这是我的代码。
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()
之后包括 () 以适当地拆分我的输入。同样默认情况下,它将按 space 拆分,因此无需在split()
. 中指示 - 将
name_list
放在random.sample()
之后(而不是random.choices()
)而不是 input_string
(" ")
非常感谢帮助过我的人!
您需要从 nameList
而不是 input_string
中随机选择。
input_string
是一个还没有拆分的字符串,所以有random.choices
return个字符。 nameList
是一个字符串列表,因此 random.choices
将是列表的 return 个条目。
您需要将输入字符串按 ' '
拆分,然后从结果列表中随机选择。类似于:
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
所以它将 return 列表characters
如@b9s 所说。 - 此外,您正在使用
str(input("Input names: "))
。如果存在 prompt 参数,则将其写入标准输出而没有尾随换行符。input()
然后从输入中读取一行,将其转换为字符串(去除尾随的换行符),然后 return 就是这样。 - 如果你想要唯一的随机名称,那么你可以使用下面的代码。
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
使用 space.
参考: Choices Function and Input Function