python - 为什么其他的不能正常工作?

标签 python

我正在为类(class)制作一个简单的刽子手游戏。当前的程序会执行绘图的每一步,即使用户得到了正确的答案。

import turtle
import random
import sys

while True:
    list = ['report', 'beach', 'mayor', 'score', 'overeat', 'load', 'battery', 'social', 'honor', 'risk']

    turns = 10
    guesses = ''
    err = 0

    usedw = random.choice(list)

    wn = turtle.Screen()
    draw = turtle.Turtle()

    length = len(usedw)

    print("Welcome to hangman your word is", length, "letters long.")

    while turns > 0:
        guess = input("Choose a character: ")
        guesses += guess;
        lengthr = 0
        for char in usedw:
            if char in guesses:
                print (char,)
                lengthr += 1;
            else:
                err += 1;
                if err == 1:
                    draw.goto(0,0)
                    draw.down()
                    draw.goto(200,0)
                elif err == 2:
                    draw.up()
                    draw.goto(0,0)
                    draw.down()
                    draw.goto(0,200)
                elif err == 3:
                    draw.up()
                    draw.goto(0,200)
                    draw.down()
                    draw.goto(100,200)
                elif err == 4:
                    draw.up()
                    draw.goto(100,200)
                    draw.down()
                    draw.goto(100,150)
                elif err == 5:
                    draw.up()
                    draw.goto(100,100)
                    draw.down()
                    draw.circle(25)
                elif err == 6:
                    draw.up()
                    draw.goto(100,100)
                    draw.down()
                    draw.goto(100,50)
                elif err == 7:
                    draw.up()
                    draw.goto(75,90)
                    draw.down()
                    draw.goto(125,90)
                elif err == 8:
                    draw.up()
                    draw.goto(100,50)
                    draw.down()
                    draw.goto(75,35)
                elif err == 9:
                    draw.up()
                    draw.goto(100,50)
                    draw.down()
                    draw.goto(125,35)
                    print("You loose.")
                    break
            if lengthr == length:
                print ("You won!")
                break
        cont = input("Would you like to continue (y/n) ")
        if cont == 'y':
            print("Alright!")
        else:
            print("Thanks for playing!")
            break
            sys.exit()

最佳答案

问题 是在你的判断逻辑中:

for char in usedw:
    if char in guesses:
        print (char,)
        lengthr += 1;
    else:
        err += 1;
        if err == 1:
            ...

for 遍历单词的字符。例如,如果单词是“overeat”,则每次猜测都会执行此循环次。即使玩家猜对了“e”,您也会指控他/她猜错了字母“ovrat”,并抽出了五个男孩部件。

<小时/>

修复

首先,您必须确定最近猜到的字母是否在单词任何地方中:

if guess in usedw:
    print (char,)
    lengthr += 1;
else:
    err += 1;
    if err == 1:
    ...

还有其他问题和改进,但这应该会让您前进。

关于python - 为什么其他的不能正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46738697/

相关文章:

python - 使用 scipy.io.wavfile 读取 wav 文件然后写入不会重现原始文件

python - 基于标签的共现图像聚类

python - Django:没有名为应用程序的模块

python - 如何在刻度(matplotlib)之间对齐条形图中的条形图?

python - 如何从列表中获取元素的组合?

Python 四舍五入到最接近的 0.25

python - 使用 Anaconda 安装 Python 3.7 时出错

python - 如何在不使用 numpy/pandas 的情况下处理 csv 文件中的缺失数据?

python - Django - 如何为模型的外键制作表格?

python - 从 crontab 运行 python 时出现问题 - "invalid Python installation"