少于或多于一定数量

时间:2014-10-26 16:08:25

标签: python numbers

此游戏让用户猜测一个4位数的数字并在用户猜测显示“Y”后直接给出反馈,如果用户得到正确数字并且如果猜测最多比数字高3则显示“H”并且显然与显示“L”的数字相反,最多低于3。但这是我的问题,我不能让它在上方或下方显示“H”和“L”!任何帮助表示赞赏..代码位于我尝试过的地方。

from random import randint
guessesTaken = 0
randomNumber = [str(randint(1, 9))  for _ in range(4)] # create list of random nums
while guessesTaken < 10:
    guesses = list(input("Guess Number: ")) # create list of four digits
    check = "".join(["Y" if a==b else "H" if int(a)< 3 int(b) else "L" for a, b in zip(guesses,randomNumber)])
    if check == guesses: # if check has four Y's we have a correct guess
        print("Congratulations, you are correct, it took you", guessesTaken, "guesses.")
        break
    else:
        guessesTaken += 1 # else increment guess count and ask again
        print(check)
    if guessesTaken == 10:
        print("You lose")

1 个答案:

答案 0 :(得分:0)

修复,见评论。

from random import randint
guessesTaken = 1 # repaired that. you cannot guess correctly on "0 guesses".
randomNumber = [str(randint(1, 9))  for _ in range(4)]
while guessesTaken < 10:
        guesses = list(input("Guess Number: "))
        #repaired check cases
        check = "".join(["Y" if a == b else "L" if int(a) < int(b) and int(a)+3 >= int(b) else "H" if int(a) > int(b) and int(a)-3 <= int(b) else '?' for a, b in zip(guesses,randomNumber)])
        if check == "YYYY":  # repaired this check
            print("Congratulations, you are correct, it took you", guessesTaken, "guesses.")
            break
        else:
            guessesTaken += 1
            print(check)
else: # loop is exhausted
    print("You lose")


Guess Number: 4444
?HLH
Guess Number: 2262
?LYL
Guess Number: 7363
LYYY
Guess Number: 8363
LYYY
Guess Number: 9363
Congratulations, you are correct, it took you 5 guesses.

虽然它有效但是如此长的列表理解是PITA的编写和维护。 最好保持你的陈述简短并重构常见的东西。