如何让我的输入拾取单词而不是字母? (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)

主要变化是:

非常感谢帮助过我的人!

您需要从 nameList 而不是 input_string 中随机选择。

input_string是一个还没有拆分的字符串,所以有random.choicesreturn个字符。 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