我的程序应该能给我更多的结果

2024-10-01 09:27:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我一辈子都搞不清为什么我的程序在程序开始时没有通过与它相关联的变量。在

在while循环结束时(在for循环内),当plinko磁盘沿游戏板“左/右”[+1或-1]向下移动时,它将显示赢得的奖品。在

每一个“嘀嗒”声都向右移动 它每向左移动一次

最后我只得到两个结果,500或0。在

我对这一点很陌生,我认为当我把变量与奖金数额联系起来时,我做的每件事都是正确的。在

    import random
randomNumber = random.randint( 1, 5 )
    firstMessage = "Congratulations you have " + str(randomNumber) + " disks to play with."
print (firstMessage)


plinkoNeg5 = "0"
plinkoNeg4 = "100"
plinkoNeg3 = "500"
plinkoNeg2 = "1000"
plinkoNeg1 = "0"
plinko0 = "10000"
plinko1 = "0"
plinko2 = "1000"
plinko3 = "500"
plinko4 = "100"
plinko5 = "0"

message1 = "Congratulations the disk landed in "
message2 = "Aw thats too bad, Your disk landed in "






for plinkoRun in range(randomNumber):
    plinkoTrue = True
    plinkoStop = int(5)
    plinko = 0
    while plinkoTrue <= plinkoStop:
        import random
        plinkoRandom1 = random.randint(1, 100)
        if plinkoRandom1 <= 50:
                plinko = plinko + 1
                plinkoStop = plinkoStop - 1
                print ( "tock" )
        elif plinkoRandom1 >= 50:
                plinko = plinko - 1
                plinkoStop = plinkoStop - 1
                print ( "tick" )

if plinko == -5:
        print( str(message2) + (plinkoNeg5))        
elif plinko == -4:
        print( str(message1) + (plinkoNeg4))           
elif plinko == -3:
        print( str(message1) + (plinkoNeg3))          
elif plinko == -2:
        print( str(message1) + (plinkoNeg2))            
elif plinko == -1:
        print( str(message2) + (plinkoNeg1))            
elif plinko == 0:
        print( str(message1) + (plinko0))            
elif plinko == 1:
        print( str(message1) + (plinko1))         
elif plinko == 2:
        print( str(message1) + (plinko2))           
elif plinko == 3:
        print( str(message1) + (plinko3))           
elif plinko == 4:
        print( str(message1) + (plinko4))        
elif plinko == 5:
        print( str(message2) + (plinko5))

Tags: inimport程序forrandomprintelifwhile
1条回答
网友
1楼 · 发布于 2024-10-01 09:27:03

问题来自于这样一个事实:你的程序总是做5圈加减1,这意味着你永远不能停留在任何一个偶数上,只留下奇数,而所有这些数字都有0500。在

这里还有一些代码提示:

import random
randomNumber = random.randint( 1, 5 )
firstMessage = "Congratulations you have " + str(randomNumber) + " disks to play with."
print (firstMessage)

#This section can be replaced with a dict
#plinkoAward = {'-5': 0, '-4': 100, '-3': 500, '-2': 1000, '-1': 0, '0': 10000, '1': 0, '2': 1000, '3': 500, '4': 100, '5': 0}

plinkoNeg5 = "0"
plinkoNeg4 = "100"
plinkoNeg3 = "500"
plinkoNeg2 = "1000"
plinkoNeg1 = "0"
plinko0 = "10000"
plinko1 = "0"
plinko2 = "1000"
plinko3 = "500"
plinko4 = "100"
plinko5 = "0"

#It's better to name those strings something more meaningful for example messageWon and messageLost
message1 = "Congratulations the disk landed in "
message2 = "Aw thats too bad, Your disk landed in "


for plinkoRun in range(randomNumber):
    plinkoTrue = True

    #Change this to random.randint(0,5) if you need random number of turns
    plinkoStop = int(5)
    plinko = 0

    # The loop is not very intuitive you are comparing boolean to a number
    while plinkoTrue <= plinkoStop:

        #No need to import second time + it's generally better to add all the imports in the begging
        import random

        #You can simplify this by generating random number between 1 and 0 1 for left and 0 for right or even use something like random.getrandbits(1)
        plinkoRandom1 = random.randint(1, 100)
        if plinkoRandom1 <= 50:
                plinko = plinko + 1
                plinkoStop = plinkoStop - 1
                print ( "tock" )
        elif plinkoRandom1 >= 50:
                plinko = plinko - 1
                plinkoStop = plinkoStop - 1
                print ( "tick" )
    #This needs to be indented like this so it can execute once for every disk and not only for the last disk

    #You can dramatically simplify this by using the dictionary that I suggested at the top

    if plinko == -5:
            print( str(message2) + (plinkoNeg5))        
    elif plinko == -4:
            print( str(message1) + (plinkoNeg4))           
    elif plinko == -3:
            print( str(message1) + (plinkoNeg3))          
    elif plinko == -2:
            print( str(message1) + (plinkoNeg2))            
    elif plinko == -1:
            print( str(message2) + (plinkoNeg1))            
    elif plinko == 0:
            print( str(message1) + (plinko0))            
    elif plinko == 1:
            print( str(message1) + (plinko1))         
    elif plinko == 2:
            print( str(message1) + (plinko2))           
    elif plinko == 3:
            print( str(message1) + (plinko3))           
    elif plinko == 4:
            print( str(message1) + (plinko4))        
    elif plinko == 5:
            print( str(message2) + (plinko5))

使用建议编辑的代码:

^{pr2}$

相关问题 更多 >