Python的游戏

2024-10-06 10:30:56 发布

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

尝试用Python制作一个游戏。。虽然我似乎不能让某些代码正常工作?!我快疯了!在

非常感谢任何帮助!在

import random

die1 = random.randint(1,10)
die2 = random.randint(1,10)
die3 = random.randint(1,10)


if die1 > die2:
    print ('Die 1:', die2,'  Die 2:', die1,)
else:
    print ('Die 1:', die1,'  Die 2:', die2,)

    if die1 == die2 or die2 == die1:
        print('\nEven-steven!')
    else:
        print('\nNot the same, let\'s play!')

print ('\nDie 3:', die3,)



if die3 > die1 and die3 < die2 or die3 < die1 and die3 > die2: 
    print ('\n*** You win! ***')
elif die1 > die2:
    if die3 < die2 or die3 > die1:
        print('\n*** Sorry - You lose! ***')
elif die2 > die1:
    if die3 < die1 or die3 > die2:
        print('\n*** Sorry - You lose! ***')
**elif die3 == die1 or die3 == die2:
    print ('\n*** You hit the post - You lose double your bet! ***')**


print ('\nThanks for playing!')

它在第二个if语句结构中,不管出于什么原因,如果die1或die2与die3相同,它就不会打印“You hit the post…”它就结束了!在

谢谢!在


Tags: orandtheyouifrandomelseprint
3条回答

你的诊断不正确。如果die3等于die1或{},则最后一个语句匹配:

>>> die1, die2 = 1, 2
>>> die3 = die1
>>> die3 == die1 or die3 == die2
True
>>> die3 = die2
>>> die3 == die1 or die3 == die2
True

但是,如果die1大于die2你的第一个elif匹配,但与{}的比较有缺陷:

^{pr2}$

而且从来没有印刷过任何东西。你需要理清那个案子的逻辑。在

因为你只有三种不同的结果:赢、输和命中,你可以把整个过程简化为:

if die1 < die3 < die2:
    print('\n*** You win! ***')
elif die3 == die1 or die3 == die2:
    print('\n*** You hit the post - You lose double your bet! ***')
else:
    print('\n*** Sorry - You lose! ***')

请注意,我使用chained comparisons进一步简化了第一个if表达式。您还确保die1低于die2,因此对die2 < die3 < die1的测试是始终是False。在

另一个注意事项:==应该是可传递的,所以die1 == die2 or die2 == die1是多余的。您可以将其简化为die1 == die2。在

简化整个计划:

import random

die1 = random.randint(1,10)
die2 = random.randint(1,10)

if die1 > die2:
    die1, die2 = die2, die1

print ('Die 1:', die1,'  Die 2:', die2,)

if die1 == die2:
    print('Even-steven!')
else:
    print("Not the same, let's play!")
    die3 = random.randint(1,10)

    print ('Die 3:', die3)

    if die1 < die3 < die2:
        print('\n*** You win! ***')
    elif die3 == die1 or die3 == die2:
        print('\n*** You hit the post - You lose double your bet! ***')
    else:
        print('\n*** Sorry - You lose! ***')

print ('Thanks for playing!')

与其让它让你发疯,不如保持冷静,使用^{}。在

if die3 in (die1, die2):
    import pdb; pdb.set_trace()

if die3 > die1 and die3 < die2 or die3 < die1 and die3 > die2: 
    print ('\n*** You win! ***')
elif die1 > die2:
    if die3 < die2 or die3 > die1:
        print('\n*** Sorry - You lose! ***')
elif die2 > die1:
    if die3 < die1 or die3 > die2:
        print('\n*** Sorry - You lose! ***')
**elif die3 == die1 or die3 == die2:
    print ('\n*** You hit the post - You lose double your bet! ***')**


print ('\nThanks for playing!')

现在运行它,当它中断时,开始调试(下一步使用n,检查每个条件的值,等等)。在

通过简化您的代码,它将更容易调试。只有3个条件winlose或{},因此不需要有6个(嵌套)条件。另外,通过切换die1die2如果die1 > die2你的程序输出和变量保持有意义。这是更理智的:

import random

die1 = random.randint(1,10)
die2 = random.randint(1,10)

if die1 > die2:
    die1, die2 = die2, die1

print('Die 1:',die1,'Die 2:',die2)

if die1 == die2:
    print('Even-steven!')
else:
    print("Not the same, let's play!")  

    die3 = random.randint(1,10) 
    print('Die 3:',die3)

    if die3 > die1 and die3 < die2 or die3 < die1 and die3 > die2: 
        print ('You win!')
    elif die3 == die1 or die3 == die2:
        print ('You hit the post - You lose double your bet!')
    else:
        print('Sorry - You lose!')

print('Thanks for playing!')

相关问题 更多 >