如何让我的输入选择单词而不是字母?(蟒蛇)



我正在尝试为我和我的朋友制作一个随机的名字选择器。

我遇到的问题是,如果我输入一堆名字,输出会给我 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

参考:选择函数和输入函数

最新更新