在Python中保留随机名称

在Python中保留随机名称,python,random,Python,Random,我正在学习Python,并拼凑了一个随机的句子生成器来练习。如何为后续章节保留第一个随机选择的名称 我有这个: def random_name(): line_num = 0 selected_line = '' with open('names.txt') as f: while 1: line = f.readline() if not line: break line_num +

我正在学习Python,并拼凑了一个随机的句子生成器来练习。如何为后续章节保留第一个随机选择的名称

我有这个:

def random_name():
    line_num = 0
    selected_line = ''
    with open('names.txt') as f:
        while 1:
            line = f.readline()
            if not line: break
            line_num += 1
            if random.uniform(0, line_num) < 1:
            selected_line = line
    return selected_line.strip()
makeSession():一旦命中return语句,它就会结束,所以您有几个print语句会在看起来再次重复之后执行

您可以让此命令返回列表或元组:

def MakeSentence(): #makes sentence by combining name, verb, and noun
    """
    (None)->List
    Returns a list with a random name, verb and noun
    """
    x = [random_name(), random_verb(), random_noun()]
    return x
您可以制作其中许多,但例如,请尝试以下方法:

sample = MakeSentence()
并按上述格式打印:

print(sample[0] + " is " + sample[1] + " " + sample[2])
希望这能帮你解决

如何存储要在中使用的第一个随机名称、动词和名词 进一步声明

运行后,您可以看到解释器中发生了什么:该函数返回一个包含三个字符串的列表,您可以使用括号符号[0]、[1]和[2]访问其中的每一个,如下所示。这三件事在你写完之前或除非你写得太多

>>> sample = MakeSentence()
>>> print(sample)
['Sean', 'eating', 'apples']
>>> print(sample[0] + " is " + sample[1] + " " + sample[2])
Sean is eating apples
如果我想得到很多样品,我可以这样做:

many_samples = []  # make a list to store many lists
for users in range(3):  # to generate three samples: change to larger number if desired
    many_samples.append(MakeSentence())
嵌套列表的一个示例可能如下所示(但为了便于阅读,对其进行了重新排列):

我们在列表中迭代,列表中的每个元素都是另一个列表。
在每个子列表中,我们取第一个(位置0)、第二个和第三个(位置2)元素,并将它们插入字符串输出。

您需要知道,我们中的大多数人都不愿意通读,更不用说调试这么多代码了。您需要提出简短、具体的、有明确答案的编程问题。您可能应该仔细阅读帮助文件。这并不是说以任何方式让你泄气,只是告诉你所期望的。欢迎来到SO!你一遍又一遍地叫着你的名字。你不能调用它一次并将结果存储在一个变量中吗?谢谢你们。以后我会尽量简明扼要。谢谢,Carcigenicate,我想你是对的:)你的缩进是否正确?提示:当1:…用于f:…中的行时,不要使用
,这样会在不需要中断的情况下终止。谢谢。我尝试过这个方法,但当我添加[0]时,它只打印名称的第一个字母。我做错了什么?e、 g.response=input(“Is”+sample\u name[0]+“correct?\n”)给出:K正确吗?我的目的是展示“如何存储第一个随机名称、动词和名词,以便在以后的语句中使用?”如果只调用函数random\u name()生成名称,则只返回一个字符串。访问字符串中的字符类似于访问列表中的元素,因此,如果将字符串“Mike”分配给名为“name”的变量并打印出名称[0],则实际上只会获得第一个字符。我可以添加另一条评论或更详细的信息,或者如果您需要,可以添加另一个示例?我已经添加了一些细节和注释,上面还有其他代码。:)谢谢你,斯拉提根。你帮了大忙:)如果上面的答案符合你的问题,你能选择它作为被接受的答案吗?非常感谢,肖恩。谢谢。上面创建字符串的方法很好,很容易遵循,但是在未来的修订中,你可能会考虑到一个更优雅的方法:祝你好运!
many_samples = []  # make a list to store many lists
for users in range(3):  # to generate three samples: change to larger number if desired
    many_samples.append(MakeSentence())
>>> print(many_samples)
[ 
  ['Sean', 'eating', 'apples'],
  ['Jane', 'drinking', 'oranges'],
  ['Jim', 'chopping', 'chairs']
]

# to print out these in a format as you had in the example:
for each_elem in many_samples:
    print(each_elem[0] + " is " + each_elem[1] + " " + each_elem[2])