2015-01-09 68 views
0

我对python相当陌生,并且正在尝试为大学作业制作一个小游戏。我试图从几个外部文本文件中随机选择一个单词(每个单词中包含更难的单词)并将其显示2秒,然后该单词消失,用户必须拼写它。目前我的程序只显示文本文件中的随机字母,并且没有完整的单词。有任何想法吗?程序不会打印完整的单词只是单个字母

谢谢。

print ("""Welcome to the Spelling Game 
What difficulty do you want to play? 
Easy, Medium or Hard?""") 
strDifficulty = input().upper 

if strDifficulty is ("EASY"): 
    with open ('EASY.txt', 'r') as f: 
     (chosen) = f.readlines() 

if strDifficulty is ("MEDIUM"): 
    with open ('MEDIUM.txt', 'r') as f: 
     (chosen) = f.readlines() 

if strDifficulty is ("HARD"): 
    with open ('HARD.txt', 'r') as f: 
     (chosen) = f.readlines() 

import random 
x = ('chosen') 
print (random.choice (x)) 

回答

2

有你的代码中的多个问题,为什么它会打印出一个字符:

strDifficulty = input().upper确实在命令行没有大写输入。它会读取您键入的内容,即字符串(Python中为str),并将该字符串的方法upper分配给strDifficulty。什么你可能寻找的是strDifficulty = input().upper()(额外的括号将呼叫的方法上,返回的是什么,从标准看是一个大写的版本。

x = ('chosen')被分配字符串'chosen'对x,而不是价值变量chosen。你可能意味着x = chosen,分配的chosenx值。

print (random.choice(x))已经不远了,但会从x选择一个随机元素作为x始终是字符串'chosen',你很可能会得到o那些信件中的那些。您可以简单地删除行x = ('chosen')并致电print(random.choice(chosen))

有很多可说的关于你的代码,但让我们从这里开始:)

+0

好的,我已经添加了括号到strDifficulty =输入()。上面的线,除去X =( '选择'),并改变了打印(random.choice(X))进行打印(随机.choice(选择)),如你所建议的。我现在得到一个错误,说NameError:名称'选择'没有定义。我认为这发生在之前,这就是为什么我加了整个x =位。 – 2015-01-09 19:22:15

+0

是的,这是可以预料的,因为你使用'is'来比较字符串,而字符串应该使用'=='进行比较。 @ Farzan-Haijan的回答(虽然没有解释为什么)包括这一点;他的答案中的代码应该实现你正在努力完成的事情:) – akaIDIOT 2015-01-09 19:24:37

+1

是的,现在所有的工作,以供将来参考何时应该被使用? – 2015-01-09 19:30:08

0

我做了一些修改你的代码。

print ("""Welcome to the Spelling Game 
What difficulty do you want to play? 
Easy, Medium or Hard?""") 
strDifficulty = input().upper() 

if strDifficulty=="EASY": 
    with open ('EASY.txt', 'r') as f: 
     chosen = f.readlines() 

if strDifficulty=="MEDIUM": 
    with open ('MEDIUM.txt', 'r') as f: 
     chosen = f.readlines() 

if strDifficulty=="HARD": 
    with open ('HARD.txt', 'r') as f: 
     chosen = f.readlines() 

import random 
print (random.choice (chosen)) 
相关问题