Scsdndzh 2023-08-22 18:46 采纳率: 100%
浏览 14
已结题

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")


```

  • 写回答

4条回答 默认 最新

  • 梦幻精灵_cq 2023-08-22 19:05
    关注
    • “都是缩进惹的祸”😂

      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()
    
    
    

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 8月30日
  • 已采纳回答 8月22日
  • 创建了问题 8月22日