- “都是缩进惹的祸”😂

Python,是用缩进(一般为四个英文空格长度,也是python的默认长度。其长度可以自由设定,但我强烈建议用“四个英文空格”的默认长度,最好不使用制表键tab。)分隔代码语句块的。初学有一定“混乱”很正常,当您“熟识”后,才明白她的简洁与优雅。
1、第一条print() 语句少了一个缩进;
2、第二层if语句块应该全部有一个缩进,以标榜她是内层if语句块;
3、第一层if的else语句漏掉了行末冒号;
4、最后一行print() 应有一个缩进。
修改缩进,加上漏掉的冒号后代码
#!/sur/bin/nve python
# coding: utf-8
import random
print("*************欢迎来到猜拳游戏*****************")
user=int(input("请输入你所要出的拳,1拳头2剪刀3布\n"))
if user >=1 and user <=3:
print("您出的拳为{}".format(user))
a = random.randint(1, 3)
print("电脑出的为{}".format(a))
if user == a:
print("您与电脑达成平局")
elif((user == 1 and a==2) or (user == 2 and a==3) or (user == 3 and a==1)):
print("电脑不服气要和您再来一把!")
else:
print("不要气馁,胜败乃兵家常事")
else:
print("请输入符合规则的1-3内的数")
- 代码运行效果截屏图片

- 直接打印所出拳“石头、剪刀、布”,更好

代码
#!/sur/bin/nve python
# coding: utf-8
import random
print(f"\n{' 欢迎来到猜拳游戏 ':*^33}")
user=int(input(f"\n{'1. 拳头 2. 剪刀 3. 布':^36}\n{'':~^41}\n{'请您出拳:':>14}"))
user_s = '拳头' if user == 1 else '剪刀' if user == 2 else '布'
if user >=1 and user <=3:
print("\n您出的拳为“{}”".format(user_s))
a = random.randint(1, 3)
a_s = '拳头' if a == 1 else '剪刀' if a == 2 else '布'
print("电脑出的为“{}”".format(a_s))
if user == a:
print(f"\n{'':~^41}\n{'您与电脑打成平局。':^32}")
elif (user == 1 and a==2) or (user == 2 and a==3) or (user == 3 and a==1):
print(f"\n{'您赢了!':^37}\n{'':~^41}\n{'电脑不服气要和您再来一把!':^28}")
else:
print(f"\n{'您输了!':^37}\n{'':~^41}\n{'不要气馁,胜败乃兵家常事。':^28}")
else:
print("请输入符合规则的1-3内的数")
- 您还可以用一个while 循环把游戏代码“包”起来,设置一个“开关”,就可以与“机器”玩儿到不想玩才退出。

代码
#!/sur/bin/nve python
# coding: utf-8
import random
clear = '\033[2J' # 清屏控制字符串,清除终端可见屏幕字符。
while True:
print(f"{clear}\n\n{' 欢迎来到猜拳游戏 ':*^33}")
user = input(f"\n{'1. 拳头 2. 剪刀 3. 布':^36}\n{'':~^41}\n{'(直接回车退出程序)':^33}\n\n{'请您出拳:':>14}")
if not user:
print(f"{clear}\n\n{' 欢迎下次再玩猜拳游戏 ':*^31}\n")
break
user = int(user)
user_s = '拳头' if user == 1 else '剪刀' if user == 2 else '布'
if user >=1 and user <=3:
print(f"\n\n{'':>8}{'':.^22}\n\n{'':>12}您出的拳为“{user_s}”")
a = random.randint(1, 3)
a_s = '拳头' if a == 1 else '剪刀' if a == 2 else '布'
print(f"{'':>12}电脑出的为“{a_s}”\n\n{'':>8}{'':.^22}\n")
if user == a:
print(f"\n{'':~^41}\n{'您与电脑打成平局。':^32}")
elif ((user == 1 and a==2)
or (user == 2 and a==3)
or (user == 3 and a==1)):
print(f"\n{'您赢了!':^37}\n{'':~^41}\n{'电脑不服气要和您再来一把!':^28}")
else:
print(f"\n{'您输了!':^37}\n{'':~^41}\n{'不要气馁,胜败乃兵家常事。':^28}")
else:
print(f"\n{'':~^41}\n{'请输入1-3内的数字。':^33}")
input(f"\n{' 任意键继续…… ':~^35}")
- 函数自调用实现循环游戏代码运行效果截屏图片

代码
#!/sur/bin/nve python
# coding: utf-8
import random
def play():
clear = '\033[2J' # 清屏控制字符串,清除终端可见屏幕字符。
print(f"{clear}\n\n{' 欢迎来到猜拳游戏 ':*^33}")
user = input(f"\n{'1. 拳头 2. 剪刀 3. 布':^36}\n{'':~^41}\n{'(直接回车退出程序)':^33}\n\n{'请您出拳:':>14}")
if not user:
print(f"{clear}\n\n{' 欢迎下次再玩猜拳游戏 ':*^31}\n")
return
user = int(user)
user_s = '拳头' if user == 1 else '剪刀' if user == 2 else '布'
if user >=1 and user <=3:
print(f"\n\n{'':>8}{'':.^22}\n\n{'':>12}您出的拳为“{user_s}”")
a = random.randint(1, 3)
a_s = '拳头' if a == 1 else '剪刀' if a == 2 else '布'
print(f"{'':>12}电脑出的为“{a_s}”\n\n{'':>8}{'':.^22}\n")
if user == a:
print(f"\n{'':~^41}\n{'您与电脑打成平局。':^32}")
elif ((user == 1 and a==2)
or (user == 2 and a==3)
or (user == 3 and a==1)):
print(f"\n{'您赢了!':^37}\n{'':~^41}\n{'电脑不服气要和您再来一把!':^28}")
else:
print(f"\n{'您输了!':^37}\n{'':~^41}\n{'不要气馁,胜败乃兵家常事。':^28}")
else:
print(f"\n{'':~^41}\n{'请输入1-3内的数字。':^33}")
input(f"\n{' 任意键继续…… ':~^35}")
play() # 函数自调用实现循环。
if __name__ == '__main__':
play()