【问题标题】:Problem with simple dice game using python使用python的简单骰子游戏的问题
【发布时间】:2020-11-26 23:24:51
【问题描述】:

我是 python 新手,所以我决定使用 while 循环制作一个简单的骰子游戏,只是为了对自己做一个简单的测试。在游戏中,我使用模块 random 和方法random.randint(1, 6) 打印一个从“1 到 6”的任意值的随机整数,这显然是骰子在现实生活中的运作方式。但是为了让这个游戏成为一个游戏,如果打印的整数是偶数(random.randint(1, 6) % 2 ==0),那么会打印“you win”。如果整数是奇数,则打印“你输了”。在此之后,控制台询问您是否要再次掷骰子,如果您说是(不区分大小写,因此.lower())然后它再次掷骰子并继续循环,但如果您说其他任何内容,则循环中断。

我以为这就是它的工作方式,但时不时地,当掷出偶数时,会打印“你输了”,而奇数则相反,这不是我认为我编写的代码循环做。显然我做错了什么。有人可以帮忙吗?

这是我的代码:

import random
min = 1
max = 6

roll_again = True
while roll_again:
    print(random.randint(min, max))
    if random.randint(min, max) % 2 == 0:
        print('you win')

    else:
        print('you lose')

    again = input('roll the dice? ').lower()
    if again == ('yes'):
        continue
    else:
        print('ok')
        break

【问题讨论】:

    标签: python python-3.x while-loop dice


    【解决方案1】:

    random.randint(min,max) 每次执行都会返回不同的值。因此,您可以做的最好的事情是在第一次执行时存储该值,并检查该存储值的赢或输。

    你可以试试这个版本的代码:

    import random
    
    while(True):
        value = random.randint(1,6)
        print(value)
        if(value % 2 == 0):
            print("You Win!")
        else:
            print("You Lose!")
    
        again = input("Want to roll Again? Type 'Yes' or 'No'")
        if(again.lower() != 'yes'):
            break
    

    【讨论】:

      【解决方案2】:

      您生成了两次随机数,打印的数字与您在 if 条件中检查的数字不同。

      您可以将生成的数字保存在这样的变量中,以检查您的代码是否正常工作:

      import random
      min = 1
      max = 6
      
      roll_again = True
      while roll_again:
          number = random.randint(min, max)
          print(number)
          if number % 2 == 0:
              print('you win')
      
      else:
          print('you lose')
      
      again = input('roll the dice? ').lower()
      if again == ('yes'):
          continue
      else:
          print('ok')
          break
      

      【讨论】:

        【解决方案3】:

        您需要将随机数分配给一个变量,现在打印出来,另一个是不同的数字。

        import random
        min = 1
        max = 6
        dice = 0
        
        while True: 
            dice = random.randint(min, max) 
            print(dice) 
         
            if dice % 2 == 0: 
                print('you win') 
            else: 
                print('you lose') 
        
            again = input('roll the dice? ').lower() 
            if again == ('yes'): 
                continue 
            else: 
                print('ok') 
                break 
        

        【讨论】:

          【解决方案4】:
          print(random.randint(min, max))
          if random.randint(min, max) % 2 == 0:
              print('you win')
          

          这是对randint() 的两个单独调用,可能会产生两个不同的数字。

          相反,调用randint() 一次 并保存结果,然后在两个地方都使用该结果:

          roll = random.randint(min, max)
          print(roll)
          if roll % 2 == 0:
              print('you win')
          

          【讨论】:

            猜你喜欢
            • 2014-12-06
            • 1970-01-01
            • 2021-12-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-05-07
            相关资源
            最近更新 更多