今天,我把2301_78319359的问题的其中的石头、剪刀、布给做出来了,大家可以参考一下(逐句分析是给初学者看的,明白的看代码就行)。
本程序来自问题请问下这两题要怎么做呀_编程语言-CSDN问答
逐句分析
这个程序首先要导入所需的模块:
from random import randint
这个程序虽然编程量有些大,但多于用户来说体验还是比较短的,所以应该是一个while结构(让用户不断进行,退出就用终端自带的叉号关闭):
然后,利用random模块的randint生成一个整数,然后转换成石头、剪刀、布这三个实现程序随机出一个:
n=randint(1,3)
if n==1:
a="石头"
elif n==2:
a="剪刀"
else:
a="布"
你也可以换成1、2、3,更简便,我就为了后面的分析简单点。
接下来,就该是制作用户输入了(为了尽量缩短打字时间,程序要允许用户使用1、2、3来代替,if语句是将1、2、3转成汉字):
b=input("请输入石头、剪刀、布(或使用1、2、3)")
if b=="石头" or b=="1":
b="石头"
elif b=="剪刀" or b=="2":
b="剪刀"
elif b=="布" or b=="3":
b="布"
else:
b="无效的输入"
要有无效输入(万一用户故意不好好输入,如直接给你输一个乱码,怎么办)的反应。
if a=="石头" and b=="剪刀":
r="输"
elif a=="剪刀" and b=="布":
r="输"
elif a=="布" and b=="石头":
r="输"
if a=="石头" and b=="布":
r="赢"
elif a=="剪刀" and b=="石头":
r="赢"
elif a=="布" and b=="剪刀":
r="赢"
if a==b:
r="平局"
if b=="无效的输入":
r="无效的输入"
判断胜负(胜负为用户的,好输出)
if r!="无效的输入":
print(f"你{r}了(程序出的是{a},你出的是{b})")
else:
print("对不起,由于你输入的是无效的输入,所以无法分析。")
if让乱输入的内容单独输出,输出用f字符串填上。
全部代码
from random import randint
while True:
n=randint(1,3)
if n==1:
a="石头"
elif n==2:
a="剪刀"
else:
a="布"
b=input("请输入石头、剪刀、布(或使用1、2、3)")
if b=="石头" or b=="1":
b="石头"
elif b=="剪刀" or b=="2":
b="剪刀"
elif b=="布" or b=="3":
b="布"
else:
b="无效的输入"
if a=="石头" and b=="剪刀":
r="输"
elif a=="剪刀" and b=="布":
r="输"
elif a=="布" and b=="石头":
r="输"
if a=="石头" and b=="布":
r="赢"
elif a=="剪刀" and b=="石头":
r="赢"
elif a=="布" and b=="剪刀":
r="赢"
if a==b:
r="平局"
if b=="无效的输入":
r="无效的输入"
if r!="无效的输入":
print(f"你{r}了(程序出的是{a},你出的是{b})")
else:
print("对不起,由于你输入的是无效的输入,所以无法分
最终效果
可以看到,效果还不错,有赢有输有平局,输入无效内容也有特定回复。