【问题标题】:Simple rock, paper, scissors game [Python]简单的石头、纸、剪刀游戏[Python]
【发布时间】:2015-08-27 15:59:31
【问题描述】:

我正在尝试编写一个简单的 RPS 游戏,但我无法让程序显示游戏结果。请注意,我是一个编程的初学者,所有这些都是我根据以前学到的知识编写的,所以这可能不是编写这样的游戏的最有效方式。

import random
rps = ['rock', 'paper', 'scissors']
rps2 = (random.choice(rps))

print 'Welcome to RPS'
print 'Press 1 to pick Rock'
print 'Press 2 to pick Paper'
print 'Press 3 to pick Scissors'
print 'Press 4 to quit.'


while True:
    game = int(raw_input('What do you pick? '))
    if game == 1:
        print 'You picked rock.'
        print 'The computer picked...' + (random.choice(rps))
        if rps2 == [0]:
            print 'It\'s a tie!'
        elif rps2 == [1]:
            print 'You lose!'
        elif rps2 == [2]:
            print 'You win!'
    elif game == 2:
        print 'You picked paper.'
        print 'The computer picked...' + (random.choice(rps))
        if rps2 == [0]:
            print 'You win!'
        elif rps2 == [1]:
            print 'It\'s a tie!'
        elif rps2 == [2]:
            print 'You lose!'
    elif game == 3:
        print 'You picked scissors.'
        print 'The computer picked...' + (random.choice(rps))
    if rps2 == [0]:
        print 'You lose!'
    elif rps2 == [1]:
        print 'You win!'
    elif rps2 == [2]:
        print 'It\'s a tie!'
    elif game == 4:
        print 'Thank you for playing!'
        break
    else:
        continue

【问题讨论】:

  • 我正在添加 python 标签。如果你把python放在标题里,为什么不使用标签呢?
  • 哦,我只是忘记了 :)
  • 检查最后一块的缩进;这可能是个问题。还有一些其他明显的问题。首先,rps2 会在程序启动时启动一次,然后显示其他随机选择的项目,而无需实际更新 rps2 变量。其次,if rps2 == [0] 无效。试试if rps2 is rps[0]

标签: python if-statement random python-2.x


【解决方案1】:

你的程序没有多大意义;这条线

    print 'The computer picked...' + (random.choice(rps))

rps 中选择一个随机元素,因此可以选择'rock'paperscissors。但是你只是打印那个元素,而不是保存它。

然后你去比较在你第一次询问用户之前随机选择的元素:

    if rps2 == [0]:

这没有意义。您正在将一个字符串(rps 的一个元素)与一个以 0 作为唯一元素的列表进行比较。

你可能想做的事情是这样的

while True:
    game = int(raw_input('What do you pick? '))
    if game == 1:
        print 'You picked rock.'
        computerpick = random.choice(rps)
        print 'The computer picked...' + computerpick
        if computerpick == 'rock':
            print 'It\'s a tie!'
        elif computerpick == 'paper':
            print 'You lose!'
        elif rps2 == 'scissors':
            print 'You win!'
  ...

【讨论】:

    【解决方案2】:

    问题是,在比较中:

        if rps2 == [0]:
            print 'It\'s a tie!'
        elif rps2 == [1]:
            print 'You lose!'
        elif rps2 == [2]:
            print 'You win!'
    

    你应该写它

        if rps2 == rps[0]:
            print 'It\'s a tie!'
        elif rps2 == rps[1]:
            print 'You lose!'
        elif rps2 == rps[2]:
            print 'You win!'
    

    因为你想访问 rps 列表。

    你也有错误的缩进那里。我修改成这样:

    import random
    rps = ['rock', 'paper', 'scissors']
    rps2 = (random.choice(rps))
    
    print 'Welcome to RPS'
    print 'Press 1 to pick Rock'
    print 'Press 2 to pick Paper'
    print 'Press 3 to pick Scissors'
    print 'Press 4 to quit.'
    
    
    while True:
        game = int(raw_input('What do you pick? '))
        if game == 1:
            print 'You picked rock.'
            print 'The computer picked...' + (random.choice(rps))
            if rps2 == rps[0]:
                print 'It\'s a tie!'
            elif rps2 == rps[1]:
                print 'You lose!'
            elif rps2 == rps[2]:
                print 'You win!'
        elif game == 2:
            print 'You picked paper.'
            print 'The computer picked...' + (random.choice(rps))
            if rps2 == rps[0]:
                print 'You win!'
            elif rps2 == rps[1]:
                print 'It\'s a tie!'
            elif rps2 == rps[2]:
                print 'You lose!'
        elif game == 3:
            print 'You picked scissors.'
            print 'The computer picked...' + (random.choice(rps))
            if rps2 == rps[0]:
                print 'You lose!'
            elif rps2 == rps[1]:
                print 'You win!'
            elif rps2 == rps[2]:
                print 'It\'s a tie!'
        elif game == 4:
            print 'Thank you for playing!'
            break
        else:
            continue
    

    经过测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-09
      • 1970-01-01
      • 2020-05-22
      • 2015-01-15
      • 1970-01-01
      • 2017-01-17
      • 2015-05-16
      • 1970-01-01
      相关资源
      最近更新 更多