【问题标题】:Python Number Guessing Game Need Help Avoiding Counting Duplicates in "Number of Guesses"Python 猜数游戏需要帮助避免在“猜数”中计算重复
【发布时间】:2015-12-19 00:55:52
【问题描述】:

我是学习 Python 的新手,正在构建一个非常简单的猜数游戏。用户猜测一个介于 1-100 之间的数字,并给出他们的猜测是太低还是太高的反馈。当他们猜对了数字时,程序会告诉他们猜了多少次。我需要帮助:告诉用户他们猜到了重复的数字(如果他们已经输入了)。我还想从最终猜测计数中排除任何重复的猜测。最简单的方法是什么?

这是我目前的游戏:

import random

print("Guess a number between 1-100")

the_number = random.randint(1, 100)
guess = int(input(""))
tries = 0

while guess != the_number:
    if guess > the_number:
        print("Lower")
    if guess < the_number:
        print("Higher")

    guess = int(input("Guess again: "))
    tries += 1
    if guess == the_number:
        print("You win! The number was", the_number)
        print("And it only took you", tries, "tries!\n")

【问题讨论】:

  • 你知道,如果他们在第一次尝试时猜对了,它就永远不会进入循环,所以他们永远不会看到“你赢”的打印,对吧?至于如何按照您的要求进行操作,您必须跟踪他们在list 甚至更好的set 中所做的所有猜测,这样它就会为您“挤压”重复项。然后检查猜测是否已经在列表中

标签: python


【解决方案1】:

跟踪猜中的数字,仅当用户尚未猜中我们猜中的数字时才会增加:

import random

print("Guess a number between 1-100")

the_number = random.randint(1, 100)
tries = 0
# store all the user guesses
guessed = set()

while True:
    guess = int(input("Guess a number: "))
    # if the guess is in our guesses set, the user has guessed before
    if guess in guessed:
        print("You already guessed that number!")
        continue
    # will only increment for unique guessed
    tries += 1
    if guess == the_number:
        print("You win! The number was", the_number)
        print("And it only took you", tries, "tries!\n")
        break
    elif guess > the_number:
        print("Lower")
    # if it's not == or >, it has to be <
    else:
        print("Higher")
    # add guess each time
    guessed.add(guess)

您还对您的排序有一些逻辑,例如在循环之外进行猜测,这可能意味着如果用户第一次猜测,您就永远不会进入循环。

【讨论】:

    【解决方案2】:

    这就是你应该如何编写代码。

    import random
    
    debug = True
    
    
    def number_guessing():
        previous_guesses = set()
        tries = 0
        print("Guess a number between 1-100")
        random_number = random.randint(1, 100)
        while True:
            guess = int(input())
            if guess in previous_guesses:
                print("You already tried that number")
                continue
            previous_guesses.add(guess)
            tries += 1
    
            if random_number < guess:
                print(f"Lower => previous attempts [{previous_guesses}] tries [{tries}]") if debug is True else None
            elif random_number > guess:
                print(f"Higher => previous attempts [{previous_guesses}] tries [{tries}]") if debug is True else None
            elif guess == random_number:
                print("You win! The number was", random_number)
                print(f"And it only took you {tries} attempt{'s' if tries>1 else ''}!\n")
                break
    
    
    number_guessing()
    

    【讨论】:

      猜你喜欢
      • 2014-11-30
      • 1970-01-01
      • 1970-01-01
      • 2017-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-14
      • 2016-06-21
      相关资源
      最近更新 更多