【问题标题】:Python Numbers Guessing GamePython数字猜谜游戏
【发布时间】:2015-09-08 01:38:56
【问题描述】:

我是一名学习 Python(使用版本 2.7.4)的初学者程序员,我制作了这个猜数字游戏。到目前为止,这是我的代码:

import random
name = raw_input("Hi there! What\'s your name?\n")
print "Well, " + name + ", I am thinking of a number between 1 and 100"
number = random.randint(1,100)
guess = int(raw_input("Take a guess:\n"))


count = 1

while guess != number:    
    if guess < number:
        print "Sorry, your guess is too low."                 
    if guess > number:
        print "Sorry, your guess is too high."
    count += 1
    guess = int(raw_input("Take another guess\n"))

print "Good job, %s! You guessed my number in %d guesses!" % (name ,count)
  1. 我如何提醒玩家他们之前已经猜到的猜测?
  2. 如何确保玩家只能输入数字作为猜测?我难住了。 谢谢!

【问题讨论】:

    标签: python random numbers


    【解决方案1】:

    对于第一个问题,使用set 来跟踪之前的输入值:

    seen = set()
    while guess != number:    
        if guess < number:
            print "Sorry, your guess is too low."                 
        if guess > number:
            print "Sorry, your guess is too high."
        count += 1
        while True:
            guess = int(raw_input("Take another guess\n"))
            if guess in seen:
                print "Oops, you have guess than one before"
                continue
            else:
                seen.add(guess)
                break
    

    对于第二个问题,您可以使用isinstance() 函数,但没有太多需要。 int() 函数将为您检查输入,如果您没有获得整数输入,则会引发异常。如果您愿意,您可以捕获该异常并添加一个不错的错误消息:

        try:
            guess = int(raw_input("Take another guess\n"))
        except ValueError:
            print "Sorry, I expected an integer"
    

    【讨论】:

    • 嗯,我收到一条错误消息:seen.add(guess) AttributeError: 'dict' object has no attribute 'add'
    • @Patricia 很奇怪,seen 变量是 set 而不是 dict。你能用你拥有的新代码更新你的问题吗?
    【解决方案2】:

    问题一的答案列出来:

    while run:
        geusslist = []
        number = raw_input("Make A Geuss")
        geusslist.extend((number))
    
    if print_nums:
        print "You Have Guessed:"
        print geusslist
    

    如果运行此代码并且玩家猜测 10、20、30、40、50,它应该返回

    >>> You Have Geussed:
    >>> [10, 20, 30, 40, 50]
    

    至于问题二,我认为“Raymond Hettinger”在上面回答得很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-24
      相关资源
      最近更新 更多