Python 3.x Python while/if语句不起作用

Python 3.x Python while/if语句不起作用,python-3.x,Python 3.x,我目前正在学习Python,我正在努力让这个游戏正常运行。基本上,我分配了一个要猜测的单词,然后将该单词切片并分配给其他几个变量。基本上,每个指定为“letterx”的变量都是一个字母,它构成字符串变量字的一部分。问题是如何使带有嵌套if语句的while语句正常工作。由于某些原因,我无法将猜测输入设置为等于letterx。当我运行代码时,得到的只是“否”,然后是左转的次数。但是,我无法使elif语句起作用。几乎所有其他的东西都能用。我习惯于用Java编程,而且我对Python相当陌生,因此非常感

我目前正在学习Python,我正在努力让这个游戏正常运行。基本上,我分配了一个要猜测的单词,然后将该单词切片并分配给其他几个变量。基本上,每个指定为“letterx”的变量都是一个字母,它构成字符串变量字的一部分。问题是如何使带有嵌套if语句的while语句正常工作。由于某些原因,我无法将猜测输入设置为等于letterx。当我运行代码时,得到的只是“否”,然后是左转的次数。但是,我无法使elif语句起作用。几乎所有其他的东西都能用。我习惯于用Java编程,而且我对Python相当陌生,因此非常感谢您提供的任何提示或帮助。谢谢你的时间和帮助!代码如下:

#Guess The Word

word = "action"

letter1 = ""
letter2 = ""
letter3 = ""
letter4 = ""
letter5 = ""
letter6 = ""

position1 = 0
position2 = 1
position3 = 2
position4 = 3
position5 = 4
position6 = 5

letter1 += word[position1]
letter2 += word[position2]
letter3 += word[position3]
letter4 += word[position4]
letter5 += word[position5]
letter6 += word[position6]

print("Welcome to Guess the Word!\n")


count = 6
while(count != 0):
    guess = input("Take a guess: \n")
    if(guess != letter1 or guess != letter2 or guess != letter3 or guess !=
       letter4 or guess != letter5 or guess != letter6):
        count -= 1
        print("No.\n")
        print("Turns left: \n", count)

    elif(guess == letter1 or guess == letter2 or guess == letter3
          or guess == letter4 or guess == letter5 or guess == letter6):
        count -= 1
        print("Yes.\n")


if(count == 0):
    print("Your turns are up, what do you think the word is?")
    guess = input("The word is...: \n")
if(guess == word):
    print("You win! That's the word")
elif(guess != word):
    print("Sorry, you lose.")
下面是在Python shell中运行的程序:

Python 3.1.1 (r311:74483, Aug 17 2009, 17:02:12) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>> 
Welcome to Guess the Word!

Take a guess: 
a
No.

Turns left: 
 5
Take a guess: 
c
No.

Turns left: 
 4
Take a guess: 
t
No.

Turns left: 
 3
Take a guess: 
i
No.

Turns left: 
2
Take a guess: 
o
No.

Turns left: 
 1
Take a guess: 
n
No.

Turns left: 
 0
Your turns are up, what do you think the word is?
The word is...: 
action
You win! That's the word

让我们假设
guess
等于
letter1
。那么即使
guess==letter1
,由于
guess!=字母2
。同样地,无论猜测是什么,
letter1
letter2
,等等,都有一些字母是不相等的

因此,第一个
if
条件始终为真


相反,你可以使用

while(count != 0):
    guess = input("Take a guess: \n")
    if not guess in word:
        count -= 1
        print("No.\nTurns left: \n", count)
    else:
        count -= 1
        print("Yes.\n")

顺便说一下,应该完全可以在不定义
letter1
letter2
等的情况下对游戏进行编码。所有这些代码都应该删除:

letter1 = ""
letter2 = ""
letter3 = ""
letter4 = ""
letter5 = ""
letter6 = ""

position1 = 0
position2 = 1
position3 = 2
position4 = 3
position5 = 4
position6 = 5

letter1 += word[position1]
letter2 += word[position2]
letter3 += word[position3]
letter4 += word[position4]
letter5 += word[position5]
letter6 += word[position6]
只要用
word[0]
代替
letter1
,用
word[1]
代替
letter2
,等等

请注意,您甚至不需要
word[0]
word[1]
。例如 通过Python,您可以使用

guess in word
而不是

guess in (word[0], word[1], word[2], word[3], word[4], word[5])

它不仅大大减少了输入量,而且更为通用,因为
guess-in-word
对任何长度的单词都是正确的。

你说它不起作用是什么意思?显示一些输入和输出,以及它与预期结果的差异。在需要的地方显示内部类型和值。哦,哇,非常感谢!我还没有真正学会,所以我不知道你能做到!但现在我知道了,下次编程会容易得多!谢谢