【问题标题】:Python Warm / Cold Declaring Variable outside while loopPython暖/冷在while循环外声明变量
【发布时间】:2016-10-13 02:18:46
【问题描述】:

我正在用 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?

谢谢

【问题讨论】:

    标签: python while-loop


    【解决方案1】:

    在进入循环之前似乎不需要询问用户...您可以检查第一次猜测是否为guesses = 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)
    

    【讨论】:

    • 如果我这样做,我如何区分 originalDistance 和 currentDistance,因为它们依赖于存储 originalGuess?如果我在循环中声明,它将随着用户输入的每次迭代而更新
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 2020-03-11
    • 1970-01-01
    • 1970-01-01
    • 2014-06-15
    • 2012-06-17
    相关资源
    最近更新 更多