【问题标题】:Simple Python Random Number Guesser简单的 Python 随机数猜测器
【发布时间】:2017-09-08 07:22:41
【问题描述】:

我刚刚写了一个猜测随机数的快速脚本。 虽然脚本“恭喜你赢了等”的最后一行没有运行。 同样在某些解释器中,它会给出错误“无法运行脚本”。

import random 
attempts = 0
secret_number = random.randint(1,100)
isCorrect = False
guess = int(input("Take a guess: ")) 

while secret_number != guess: 
    if guess < secret_number:
        print("Higher...")
        guess = int(input("Take a guess: "))
        attempts+= 1 
    elif guess > secret_number:
        print("Lower...")
        guess = int(input("Take a guess: "))
        attempts+= 1 
    else:
        print("\nYou guessed it! The number was " ,secret_number)

【问题讨论】:

  • 如果初始guess正确,则循环条件立即为假,不执行循环。
  • else 行永远不会执行,因为 while 循环条件在正确猜测时得到验证并退出循环。您可以删除 else 并取消缩进该行,以便在它突破 while 后显示
  • 将最后一行移出while循环

标签: python random numbers


【解决方案1】:

我对您的脚本做了一些修改。请注意,它的功能是由执行流调节的,不需要特殊的控制语句(例如continuebreak)或显式干预来使其逻辑一致:

import random 


secret_number = random.randint(1, 100)
guess = None
attempts = 0

while secret_number != guess: 
    guess = int(input("Take a guess: ")) 
    attempts += 1

    if secret_number == guess:
        print("\nYou guessed it! The number was ", secret_number)
    elif guess < secret_number:
        print("Higher...")
    elif guess > secret_number:
        print("Lower...")

我变了:

  1. isCorrect 变量。我删除了它,因为它没有使用过;
  2. guess 变量的初始化方式。在while语句之前是None
  3. while 循环内的条件语句;
  4. 在 while 循环内从用户读取输入的顺序。

我建议您直观地了解脚本工作的原因。

我尝试运行它并收到以下输出:

None@vacuum:~$ python3.6 ./test.py
Take a guess: 70
Higher...
Take a guess: 80
Higher...
Take a guess: 90
Higher...
Take a guess: 95
Lower...
Take a guess: 94
Lower...
Take a guess: 93
Lower...
Take a guess: 92
Lower...
Take a guess: 91

You guessed it! The number was  91

【讨论】:

    【解决方案2】:

    您应该在 while 循环之外打印该行,因为当 secret_number == guess 时您的循环会中断。

    while ...:
        if: 
            ... 
        elif: 
            ...
    
    print "You guessed it! The number was {0}".format(secret_number)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多