簡體   English   中英

使用 python 的簡單骰子游戲出現問題

[英]Problem with simple dice game using python

我是 python 的新手,所以我決定使用 while 循環制作一個簡單的骰子游戲,只是為了對自己做一個簡單的測試。 在游戲中,我使用模塊 random 和方法random.randint(1, 6)來打印一個隨機的 integer 從“1 到 6”的任何值,這顯然是骰子在現實生活中的運作方式。 但是為了讓這個游戲成為一個游戲,如果打印的 integer 是偶數(random.randint(1, 6) % 2 ==0)則打印“you win”。 如果 integer 是奇數,則打印“你輸了”。 在此之后,控制台詢問您是否要再次擲骰子,如果您說是(不區分大小寫,因此.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
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')

您正在生成一個隨機數兩次,打印的數字與您在 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

您需要將隨機數分配給一個變量,現在打印出來,另一個是不同的數字。

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 

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM