尝试用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…”它就结束了!在
谢谢!在
你的诊断不正确。如果},则最后一个语句将匹配:
die3
等于die1
或{但是,如果}的比较有缺陷:
^{pr2}$die1
大于die2
你的第一个elif
匹配,但与{而且从来没有印刷过任何东西。你需要理清那个案子的逻辑。在
因为你只有三种不同的结果:赢、输和命中,你可以把整个过程简化为:
请注意,我使用chained comparisons进一步简化了第一个
if
表达式。您还确保die1
低于die2
,因此对die2 < die3 < die1
的测试是始终是False
。在另一个注意事项:
==
应该是可传递的,所以die1 == die2 or die2 == die1
是多余的。您可以将其简化为die1 == die2
。在简化整个计划:
与其让它让你发疯,不如保持冷静,使用^{} 。在
现在运行它,当它中断时,开始调试(下一步使用
n
,检查每个条件的值,等等)。在通过简化您的代码,它将更容易调试。只有3个条件},因此不需要有6个(嵌套)条件。另外,通过切换
win
、lose
或{die1
和die2
如果die1 > die2
你的程序输出和变量保持有意义。这是更理智的:相关问题 更多 >
编程相关推荐