搶21遊戲
小時候和夥伴們玩過一個數字遊戲:兩個人玩,從小到大輪流數數,一個人每次只能數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
(
‘————-遊戲規則————-’
)
(
‘’‘人和電腦輪流從1開始從小到大數數,每次只能數1-
%d
個數,
誰數先到
%d
誰就輸’‘’
%
(
step
,
target
))
while
True
:
n
=
input
(
‘走幾步?’
)
if
n
。
isdigit
():
n
=
int
(
n
)
if
not
0
<
n
<
(
step
+
1
):
(
‘————-只能輸入1和
%d
之間的數————-’
%
step
)
continue
else
:
(
‘————-只能輸入數字————-’
)
continue
#玩家走
(
‘————-您選擇走
%d
步————-’
%
n
)
for
i
in
range
(
1
,
n
+
1
):
current_number
+=
1
(
‘您>’
,
current_number
)
if
current_number
>=
target
:
(
‘————-Game Over! 您輸了!————-’
)
return
#電腦走
m
=
step
+
1
-
n
(
‘————-電腦選擇走
%d
步————-’
%
m
)
for
i
in
range
(
1
,
m
+
1
):
current_number
+=
1
(
‘電腦>’
,
current_number
)
game
()