【问题标题】:How to print a word in a list which has been assigned a random number?如何打印已分配随机数的列表中的单词?
【发布时间】:2014-04-04 17:56:22
【问题描述】:

我想知道是否有人可以帮助我解决这个问题。 在我正在处理的一段代码中,我正在创建一个游戏,用户在该游戏上从从 python 3.3 中的文本文件导入的列表中猜测一个单词。我从列表中选择一个随机单词,例如

words = random.randint(0,len(wordlist))

我已经成功地让程序工作了,但是当用户输入错误的单词时,它会打印分配给列表中单词的随机数。例如

else:
    print("No, the answer was",words)

我想知道如何打印列表中的单词而不是随机数?

【问题讨论】:

    标签: python python-3.x random


    【解决方案1】:

    根本不要使用随机数。请改用random.choice() function

    words = random.choice(wordlist)
    

    random.choice() 从列表中随机选择一个item

    你对random.randint()的使用有两个问题:

    1. 您现在每次想要单词时都需要始终使用wordlist[words];您永远不会对随机整数真正感兴趣,因此存储它是没有意义的。但是

      words = wordlist[random.randint(0, len(wordlist))]
      

      random.choice() 替代方案更冗长。

    2. random.randint() 在开始值和结束值之间选择一个数字,包括。这意味着您最终可以准确地选择len(wordlist),但您的wordlist 列表中没有这样的索引;你会得到一个IndexError。你需要使用random.randint(0, len(wordlist)) - 1,真的,或者可能是random.randrange(len(wordlist))

      但同样,random.choice() 更简单。

    【讨论】:

    • TypeError:choice() 接受 2 个位置参数,但给出了 3 个,给我这个?谢谢你的回答
    • @user3499206:你必须调用random.choice(wordlist)(这是一个参数加上一个方法的self参数),而不是random.choice(0, len(wordlist))
    • print(wordlist[word]) TypeError: list indices must be integers, not str #this is when it go print it
    • @user3499206:那是因为word 已经是你的随机词了。请改用print(word)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-21
    • 1970-01-01
    • 1970-01-01
    • 2019-03-22
    相关资源
    最近更新 更多