python 石头剪刀布

石头剪刀布游戏,语句最后的一个else会出现说是应为语句 这是为啥呀然后咋改也不行 这是怎么回事


```python
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内的数")

![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/476060107296154.png "#left")


```

  • “都是缩进惹的祸”😂

    img


    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内的数")

  • 代码运行效果截屏图片

    img


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

    img

代码

#!/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 循环把游戏代码“包”起来,设置一个“开关”,就可以与“机器”玩儿到不想玩才退出。

    img

代码

#!/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}")


  • 函数自调用实现循环游戏代码运行效果截屏图片

    img

代码

#!/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()



猜拳游戏过程的那一段 应比前一个if 往后缩进一级,然后最后一个else 里的print语句也要往后缩进一级。

修改如下:

参考链接:

Python代码缩进规则说明_python程序的缩进规则_元尘yc的博客-CSDN博客 尽管Python语法允许使用任意数量的空格进行缩进,但混合使用不同数量的空格会使代码难以阅读,也可能导致错误。解决这些问题的方法是检查你的代码,确保所有的代码块都有正确的缩进,并且在整个文件中使用相同数量的空格进行缩进。例如,如果你在同一个代码块中既使用了4个空格的缩进又使用了2个空格的缩进,Python解释器会报错。函数的使用(最后一行)则没有额外的缩进,因为它不在其他的控制结构或函数内部。在上面的代码中,“if”和“else”后面的print语句是一个新的代码块,因此它们有一个额外的缩进级别。_python程序的缩进规则 https://blog.csdn.net/YunxiaoYuji1/article/details/130648822

  

import random
print("*************欢迎来到猜拳游戏*****************")
user=int(input("请输入你所要出的拳,1拳头2剪刀3布\n"))
if user >=1 and user <=3:
    # https://blog.csdn.net/YunxiaoYuji1/article/details/130648822
     # 进行猜拳游戏的过程,放到if里面,往后缩进一级
    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语句放在else分支下,也要往后缩进一级
    print("请输入符合规则的1-3内的数")
 

img

【以下回答由 GPT 生成】

解决方案:

根据你提供的代码和问题描述,这里有两个问题导致语法错误:

  1. 第一行缺少双引号的结束引号。

正确的代码应该是:

print("*************欢迎来到猜拳游戏*****************")
  1. 在Python中,input()函数返回的是字符串类型。然而,你在第3行将其直接转换为整数类型,但如果用户输入的是非数字,则会引发ValueError。为了避免这个问题,你可以先检查用户输入是否为数字并在转换前进行验证。

正确的代码应该是:

user_input = input("请输入你所要出的拳,1拳头2剪刀3布\n")
if user_input.isdigit():
    user = int(user_input)
    # 以下是原始代码
    print("您出的拳为{}".format(user))
    # ... 省略其他代码 ...
else:
    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内的数")