小时候和伙伴们玩过一个数字游戏:
两个人玩,从小到大轮流数数,一个人每次只能数1-3个数,谁先数到21算输。
当时琢磨出了这个游戏的制胜诀窍,然后凭借这个游戏赢了伙伴不少零食。今天用Python写出来,让不明真相的同学试试,哈哈。
def game(step = 3, count = 5):
'''两人轮流从1开始从小到大数数,每次只能数1-3个数,谁数到21谁就输
泛化一下:
n 为每次最大步数
max = (n + 1) * m + 1
制胜诀窍是抢n + 1的倍数
'''
current_number = 0
target = (step + 1) * count + 1
print('-------游戏规则-------')
print('''人和电脑轮流从1开始从小到大数数,每次只能数1-%d个数,
谁数先到%d谁就输''' % (step, target))
while True:
n = input('走几步?')
if n.isdigit():
n = int(n)
if not 0 < n < (step + 1):
print('-------只能输入1和%d之间的数-------' % step)
continue
else:
print('-------只能输入数字-------')
continue
#玩家走
print('-------您选择走%d步-------' % n)
for i in range(1,n + 1):
current_number += 1
print('您>', current_number)
if current_number >= target:
print('-------Game Over! 您输了!-------')
return
#电脑走
m = step + 1 - n
print('-------电脑选择走%d步-------' % m)
for i in range(1,m + 1):
current_number += 1
print('电脑>', current_number)
game()
网友评论