①游戏中,石头胜剪刀,剪刀胜布,布胜石头;
②当前参与人中,如果出现1种或3种手势时,为平局,继续游戏;
③当前参与人中,如果出现2种手势时,依据规则①出局;
④当前参与人中,只剩下1位,则为赢家,游戏结束。
(1)主程序。输入参与游戏人数,初始化参与游戏人手势状态,统计手势种类,依据规则进行游戏。相关状态说明如图a所示,三种手势呈正时针环状,当1种手势未出现时,下一个手势为赢,再下一个为输。运行结果如图所示。请在程序中划线处填入合适的代码。


图a 图b
n=int (input("请输入参加人数: "))
hand=[9]*n #设置手势的初始状态为9
cnt=[0]*4 #存储各类手势的人数,出局0、石头1、剪刀2、布3
while True:
redo() #为对未出局人员随机生成手势状态,并输出
cnt=counter 0 #分类统计各类手势的人数
lost=0 if cnt[1]==0 and cnt[2]>0 and cnt[3]>0 : lost=3 ; win=2 if cnt[2]==0 and cnt[3]>0 and cnt[1]>0 : lost=1 ; win=3 if cnt[3]==0 and cnt[1]>0 and cnt[2]>0 : lost=2 ; win=1 if lost>0: print("\n出局:", end=' ') out (lost) cnt[lost] = 0 |
print("\n结果:", hand)
for i in range(n):
if hand[i]>0 :
print("\n获胜编号: ",i)
break
(2)编写redo函数。功能为对未出局人员随机生成手势状态,并输出。
from random import randint
def redo ():
for i in range (n):
if ②
hand[i]=randint (1,3)
print("\n开始:", hand, end=' ')
(3)编写counter函数。功能为分类统计各类状态人数,存储在列表s中,并返回列表,程序如下。
def counter() :
s=[0]*4
for i in range(n) :
j=hand[i]
s[j]= ③
return s
(4)编写out函数。功能为把手势k设置为出局,并在对应位置输出为“^”,未出局者输出为“”,程序如下。
def out (k) : #出局
for i in range (n) :
if ④
hand[i]=0
print("^", end=' ')
else:
print(' ', end=' ')
(5)加框部分修改为采用循环结构,程序如下。
for i in range(1,4):
win = i%3+1 #赢手势号
lost = ⑤
if cnt[i]==0 and cnt[win]>0 and cnt[lost]>0: #只 出现2种手势
print("\n出局:", end=' ')
out (lost)
cnt[lost] = 0
(6)某轮参与人员各类状态如列表[1,3,1,3,1,3,3,3],则经过本轮后出局人数为 ⑥

同类型试题

y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2


y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2

