对python不熟悉,完全不明白为什么这个脚本不能工作?

2024-10-16 17:22:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python非常陌生,并且尝试修改我发现的一个脚本,但是不管我做什么它都不起作用。我试图让它允许我说一件事,如果1是输入和说一些其他东西,如果2是输入。。。请帮忙:(这是密码

    #Computer attempts to guess a number you choose between 1 and 100 in 10 tries
answer = 'yes'
print ("Please, think of a number between 1 and 200. I am about to try to guess it in 20 tries.")
while answer == "yes":
    NumOfTry = 20
    NumToGuess = 50
    LimitLow = 1
    LimitHigh = 200
    while NumOfTry != 0:
        try:
            print ("I try: ",NumToGuess)
            print ("Please type: 1 for my try is too high")
            print ("             2 for my try is too low")
            print ("             3 I guessed your number")
            HumanAnswer  = int (input("So did I guess right?"))
            if 1 < HumanAnswer > 3:
                print ("Please enter a valid answer. 1, 2 and 3 are the valid choice")
                NumOfTry = NumOfTry + 1
            if HumanAnswer == 1:
                LimitHigh = NumToGuess
                print ("Hmm, so your number is between ",LimitLow, "and ", LimitHigh)
                NumOfTry = NumOfTry - 1
                print (NumOfTry, "attempts left")
                NumToGuess = int (((LimitHigh - LimitLow)/2) + LimitLow)
                if NumToGuess <= LimitLow:
                    NumToGuess = NumToGuess + 1
                if LimitHigh - LimitLow == 2:
                    NumToGuess = LimitLow + 1
            elif HumanAnswer == 2:
                LimitLow = NumToGuess
                print ("Hmm, so your number is between ",LimitLow, "and ", LimitHigh)
                NumOfTry = NumOfTry - 1
                print (NumOfTry, "attempts left")
                NumToGuess = int (((LimitHigh - LimitLow)/2) + LimitLow)
                if NumToGuess <= LimitLow:
                    NumToGuess = NumToGuess + 1
                if LimitHigh - LimitLow == 2:
                    NumToGuess = LimitLow + 1
            elif HumanAnswer == 3:
                print ("Woo hoo! I won")
                NumOfTry = 0
                answer = input ('Do you want to play again? (yes=1/no=2)')
                if 'yes':
                print ("ok")
                if 'no':
                print ("thanks for playing")

Tags: andtoanswernumberifisbetweenyes
3条回答

我认为这样可以解决这个问题:当您使用try:关键字时,没有使用except:,除此之外,我测试了它,效果很好。你知道吗

answer = 'yes'
print ("Please, think of a number between 1 and 200. I am about to try to guess it in 20 tries.")
while answer == "yes":
    NumOfTry = 20
    NumToGuess = 50
    LimitLow = 1
    LimitHigh = 200
    while NumOfTry != 0:
        try:
            print ("I try: ",NumToGuess)
            print ("Please type: 1 for my try is too high")
            print ("             2 for my try is too low")
            print ("             3 I guessed your number")
            HumanAnswer  = int (input("So did I guess right?"))
            if 1 < HumanAnswer > 3:
                print ("Please enter a valid answer. 1, 2 and 3 are the valid choice")
                NumOfTry = NumOfTry + 1
            if HumanAnswer == 1:
                LimitHigh = NumToGuess
                print ("Hmm, so your number is between ",LimitLow, "and ", LimitHigh)
                NumOfTry = NumOfTry - 1
                print (NumOfTry, "attempts left")
                NumToGuess = int (((LimitHigh - LimitLow)/2) + LimitLow)
                if NumToGuess <= LimitLow:
                    NumToGuess = NumToGuess + 1
                if LimitHigh - LimitLow == 2:
                    NumToGuess = LimitLow + 1
            elif HumanAnswer == 2:
                LimitLow = NumToGuess
                print ("Hmm, so your number is between ",LimitLow, "and ", LimitHigh)
                NumOfTry = NumOfTry - 1
                print (NumOfTry, "attempts left")
                NumToGuess = int (((LimitHigh - LimitLow)/2) + LimitLow)
                if NumToGuess <= LimitLow:
                    NumToGuess = NumToGuess + 1
                if LimitHigh - LimitLow == 2:
                    NumToGuess = LimitLow + 1
            elif HumanAnswer == 3:
                print ("Woo hoo! I won")
                NumOfTry = 0
                answer = input ('Do you want to play again? (yes=1/no=2)')
                if 'yes':
                    print ("ok")
                if 'no':
                    print ("thanks for playing")
        except:
            print("Out of tries!")

由于许多错误,代码将无法工作。它需要完全重写。这里是一个简洁的重写版本没有错误!!!!基本上,我的观点是重写代码比修复代码要快。你知道吗

from random import choice
try:
    your_answer = int(raw_input("Enter number:")) 
except:
    print "Not a number"
    raise SystemExit # No mercy.
all_numbers = range(1,101)
for repeat in range(10):
    print "Guess:", all_numbers.pop(choice(all_numbers))

修复最后一个if块

编辑:

if answer == 'yes':
    print ("ok")
if answer ==  'no':
    print ("thanks for playing")

您应该有一个except块,但在本例中也不需要try

相关问题 更多 >