为什么我的程序多次引用readline命令,如何阻止它

时间:2018-03-26 22:12:54

标签: python-3.x

好。所以我试图制作一个基本上是猜单词游戏的代码。因为它是用于学校作业,所以有某些必需的部分,例如4个功能的使用和那些做某些事情的功能。程序需要从存储在外部.txt文件中的单词表中提取信息。当我尝试使用readline命令中的一行时,每当我引用函数时,它将移动到下一行,这使得我处于一个泡菜中。

这是代码

import random
#Variables
file = open('words.txt','r')
Number_of_lines = 0
Correct = 'Place holder'
Score = 0
#Retrieve the next word through readline command
def get_a_Word():
    Basic_Word = file.readline()
    Word = Basic_Word
    Word = Word
    return Word
#Turn the word into a guess word
def guess_Word():
    Word = get_a_Word()
    Edited_Word = '*' + Word[1:]
    return Edited_Word
def check_Word(Word):
    if Word == get_a_Word():
        return True
    else:
        return False
#Put that shit together
def Main():
    Line = 0
    while Line < 10:
        Edited_Word = guess_Word()
        Score = 0
        Line = Line + 1
        Word = input('Given {} What is the word? '.format(Edited_Word))
        Word = Word.upper()
        if check_Word(Word) == True:
            print('That is correct!')
            Score = Score + 10
        elif check_Word(Word) == False:
            print('That is incorrect. the word was {}.'.format(get_a_Word()))
        else:
            print('you broke it')
    Correct = Score/10
   print('You have successfully guessed {} out of 10 words. Your final score is {}.' .format(Correct, Score))
Main()
file.close()

.txt文件按此顺序包含这些单词 商店 苹果 自行车 水 奔驰 课堂 建筑师 电梯 测量 哥斯拉

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

我不确切地知道你应该如何指定你应该具有的功能,但是没有获得多个不同单词的显而易见的解决方案就是不要在主循环的每个循环中多次调用get_a_Word 。可能需要更改某些其他函数以将先前获取的单词作为参数。

循环看起来像这样(伪代码,我可能会跳过一些东西):

while line < 10:
    word = get_a_Word()
    edited_word = guess_Word(word)
    guess = input('Given {} What is the word? '.format(edited_word))
    if check_Word(word, guess):
        print('That is correct!')
        score += 10
    else:
        print('That is incorrect. The word was {}.'.format(word))

关于命名的注释,与您的问题无关:命名变量和函数的Python约定是对所有内容使用lowercase_names_with_underscores,除非代码模仿使用不同约定的现有API。使用CapitalizedNames表示类,ALL_CAPS表示常量。

但最重要的是要保持一致。您当前的代码似乎混合了下划线,大写和其他样式,没有任何逻辑。选择一种风格(即使它不是我在前一段中描述的风格)并坚持下去。 (如果你的导师在命名方式上不一致,这很难做到。唉,你可能做的不多。)