Python Warm/Cold在while循环外声明变量

2024-10-04 03:18:15 发布

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

我正在用Python编写一个简单的冷暖数字猜谜游戏。在

我有它的工作,但我有一些重复的代码,导致一些问题,我不确定如何修复它。在

from __future__ import print_function
import random

secretAnswer = random.randint(1, 10)

gameOver = False
attempts = 0
currentGuess = int(input("Please enter a guess between 1 and 10: "))
 originalGuess = currentGuess

while gameOver == False and attempts <= 6:
    currentGuess = int(input("Please enter a guess between 1 and 10: "))
    attempts += 1

originalDistance = abs(originalGuess - secretAnswer)
currentDistance = abs(currentGuess - secretAnswer)

if currentDistance < originalDistance and currentGuess != secretAnswer:
    print("Getting warmer")

elif currentDistance > originalDistance:
    print("Getting colder")

if currentDistance == originalDistance:
    print("You were wrong, try again")

if currentGuess == secretAnswer or originalGuess == secretAnswer:
    print("Congratulations! You are a winner!")
    gameOver = True

if attempts >= 6 and currentGuess != secretAnswer:
    print("You lose, you have ran out of attempts.")
    gameOver = True

print("Secret Answer: ", secretAnswer)
print("Original Dist: ", originalDistance)
print("Current Dist: ", currentDistance)

在我进入循环之前,它要求输入,这允许我设置一个原始的猜测变量,帮助我计算出与秘密答案的距离。在

但是,因为这需要在循环之前输入,所以我在那里的任何验证/逻辑都无效,比如if语句,然后在这个猜测之后直接需要输入,现在在循环中。在

有没有一种方法可以让我在循环中声明originalGuess,而不必每次迭代都更新为用户输入guess,反之亦然,而不复制currentGuess?在

谢谢


Tags: andimportyoufalseifrandomprintguess
1条回答
网友
1楼 · 发布于 2024-10-04 03:18:15

在进入循环之前似乎不需要询问用户。。。你可以只检查第一个猜测是否为1。。。在

gameOver=False
guesses = 0
while not gameOver:
    guesses += 1
    getUserInput
    if guesses = 1 and userInput != correctAnswer:
      print "try again!"  
    checkUserInput
print "good job!, it took you {} guesses!".format(guesses)

相关问题 更多 >