为什么我的代码不起作用? (简单"猜词#34; -Game in Python)

时间:2018-04-11 18:20:30

标签: python

我现在正在学习Python的乐趣,直到现在它还很顺利。我试图扩展"猜单词" -Game,例如让玩家自己选择一个单词(当2个人玩时,1选择单词,其他猜测)我敢打赌,一旦你指出它,我的错误对我来说是显而易见的,但无论如何我都会问。好吧,这是守则。我参与了整个计划,即使只有最重要的部分也很重要。我只是把它放在其余部分,因为它不是很多,也许你们可以更好地理解它。

print("Do you wish to set the Word yourself, or let the program choose?")
user_input = input("1 for own Input - 0 for Program-Input")
if user_input == 1:
    Keyword = input("Type in the Word you want to use!")
else:
    Keyword = "castle"
    word = list(Keyword)
    length = len(word)
    right = list ("_" * length)
    used_letters = list()
    finished = False
    while finished == False:
        guess = input("Guess a Letter!")
        if guess not in Keyword:
            print("This letter is not in the word. Sorry...")
        for letter in word:
            if letter == guess:
                index = word.index(guess)
                right[index] = guess
                word[index] = "_"
        if guess in used_letters[0:100]:
            print("You already used that letter before!")
        else:
            used_letters.append(guess)
            list.sort(used_letters)
        print(right)
        print("Used letters:")
        print(used_letters)
        if list(Keyword) == right:
            print("You win!")
            finished = True
input('Press ENTER to exit')

我的问题是,我想添加函数,以便能够选择是否要自己设置Word,或使用程序所具有的单词,定义为"关键字"。但无论我输入什么,它始终以"猜一封信"而不是跳到程序设置关键字的位置。提前感谢您的回答! :)

3 个答案:

答案 0 :(得分:1)

您的代码存在2个问题。

  1. 您将整个代码块放入else语句中。这意味着如果执行if user_input == 1:块,您只会询问用户一个单词,然后程序将结束,因为将跳过else语句。

  2. 您正在使用if user_input == 1:作为检查,这将永远不会成立,因为用户输入始终以字符串形式读入。字符串1永远不会等于整数1.这就是您的程序始终跳到else语句的原因。您需要执行if int(user_input) == 1:

答案 1 :(得分:0)

每当您使用input函数收集用户的输入时,它都是string,而不是int。这意味着您必须将值解析为int或使用字符串对其进行评估。

选项1:解析为int

user_input = int(input("1 for own Input - 0 for Program-Input"))

选项2:使用string进行评估:

if user_input == "1":    

答案 2 :(得分:0)

input返回一个不是整数的字符串,因此它永远不会等于1,而是等于"1"。 此外,用户猜测的代码仅在程序选择单词时运行,因此需要缩进。

作为旁注,您的代码当前注册的大写字母与小写字母不同,您可以通过在每个输入后放置.lower()来解决此问题,这将使所有大写字母变为小写。

print("Do you wish to set the Word yourself, or let the program choose?: ")
user_input = input("1 for own Input - 0 for Program-Input")
if user_input == "1":
    Keyword = input("Type in the Word you want to use: ").lower()
else:
    Keyword = "castle"
word = list(Keyword)
length = len(word)
right = list ("_" * length)
used_letters = list()
finished = False
while finished == False:
    guess = input("Guess a Letter: ").lower()
    if guess not in Keyword:
        print("This letter is not in the word. Sorry...")
    for letter in word:
        if letter == guess:
            index = word.index(guess)
            right[index] = guess
            word[index] = "_"
    if guess in used_letters[0:100]:
        print("You already used that letter before!")
    else:
        used_letters.append(guess)
        list.sort(used_letters)
    print(right)
    print("Used letters:")
    print(used_letters)
    if list(Keyword) == right:
        print("You win!")
        finished = True
input('Press ENTER to exit')