【发布时间】:2020-05-15 16:17:21
【问题描述】:
编辑:进行了一些更改 - 现在程序结束了,但仍然没有输出任何内容。
import random
dict = open("british-english")
word_list = dict.readlines()
def generate():
global word_list
prompt = random.choice(word_list)
if len(prompt) < 3:
generate()
else:
return prompt
generate()
print(prompt)
我编写了以下代码,尝试从我在 linux 机器上找到的 brisih-english 文本文件中生成三个或更多字母的随机单词。我已将该文件复制到与 .py 文件相同的目录中。当我在终端中运行程序时,我没有得到任何输出,但程序似乎无限运行。我仍然是这方面的初学者,但这似乎是一个如此简单的程序,我想知道我可能会错过什么。我已经运行了一些测试来打印列表的不同元素,以确保我可以访问这些单词,效果很好。
import random
#list contains 101,825 elements
dict = open("british-english")
word_list = dict.readlines()
prompt = ""
def generate():
global dict
i = random.randint(0, 101824)
prompt = word_list[i]
return prompt
while len(prompt) < 3:
generate()
print(prompt)
【问题讨论】:
-
提示:
global dict行在generate中做了什么?考虑到这一点,当检查条件len(prompt) < 3时,您期望prompt的值是多少,为什么?len的值是多少? -
我认为 global 是函数访问主体中定义的变量所必需的。我希望 len(prompt) 返回字母 i.i 的数量。字符串的长度。我错了吗?
-
顺便说一句:要随机选择
word_list元素之一,只需使用random.choice。这样,您不必担心列表有多长,并且如果文件更改,代码也不会中断。此外,您可以先从列表中删除短单词,而不是重复直到找到足够长的单词。 -
刚刚意识到我不再需要函数内部的 dict - 在早期版本中,我认为函数内部有 readlines 位。
-
现在,请注意您当前的代码如何不显示
global prompt?因此,generate是否访问全局变量prompt?现在,while 循环呢?它在函数内部吗?那么,是不是使用了全局变量呢?
标签: python random word generate