鱼C论坛

 找回密码
 立即注册
查看: 1994|回复: 3

[已解决]小白求助

[复制链接]
发表于 2023-6-17 23:26:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import  random
x = random.randint(0,2)
s = int(input("请输入:剪刀(0),石头(1),布(2):"))      #接收输入

#判断输入
if s == 0:
    print(f"你输入的是:剪刀{s}")

elif s == 1:
    print(f"你输入的是:石头{s}")
elif s == 2:
    print(f"你输入的是:布{s}")
print(f"随机数是:{x}")                                                                                                                #如果输入的是字符串或者大于2的数据给出提示重新输入代码应该怎么写

#判断随机数和输入的数
if x == 0 and s == 1:
    print("你赢了")
elif x == 1 and s == 2:
    print("你赢了")
elif x == 2 and s == 0:
    print("你赢了")
elif x == s:
    print("重新开始")
else:
    print("你输了")
       
最佳答案
2023-6-17 23:44:32
代码中如果输入的是字符串或者大于2的数据,会产生类型错误,导致程序崩溃。我们可以使用try...except语句来捕获这种异常,给出友好的提示并要求重新输入。代码如下:
import random

while True:
    try:
        s = int(input("请输入:剪刀(0),石头(1),布(2):"))
        if s < 0 or s > 2:
            print("请输入0到2之间的整数!")
            continue
        else:
            break
    except ValueError:
        print("请输入正确的数字!")

x = random.randint(0, 2)

# 判断输入
if s == 0:
    print(f"你输入的是:剪刀{s}")
elif s == 1:
    print(f"你输入的是:石头{s}")
elif s == 2:
    print(f"你输入的是:布{s}")

print(f"随机数是:{x}")

# 判断随机数和输入的数
if x == 0 and s == 1:
    print("你赢了")
elif x == 1 and s == 2:
    print("你赢了")
elif x == 2 and s == 0:
    print("你赢了")
elif x == s:
    print("重新开始")
else:
    print("你输了")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-17 23:29:00 | 显示全部楼层
你希望在输入的数据是字符串或者大于2的数值时给出提示并让用户重新输入,可以通过一个循环来完成。Python提供了 try...except... 语句处理程序在运行中出现的异常。当程序出现异常的时候, try...except... 可以捕获异常并处理,使程序继续运行,而不至于崩溃。下面是你的代码,添加了异常处理和循环的部分:
import random

while True:
    try:
        s = int(input("请输入:剪刀(0),石头(1),布(2):"))  # 接收输入

        if s not in [0, 1, 2]:
            raise ValueError("输入必须是 0,1,2中的一个数字")

        x = random.randint(0, 2)

        # 判断输入
        if s == 0:
            print(f"你输入的是:剪刀{s}")

        elif s == 1:
            print(f"你输入的是:石头{s}")
        elif s == 2:
            print(f"你输入的是:布{s}")

        print(f"随机数是:{x}")  

        # 判断随机数和输入的数
        if x == 0 and s == 1:
            print("你赢了")
        elif x == 1 and s == 2:
            print("你赢了")
        elif x == 2 and s == 0:
            print("你赢了")
        elif x == s:
            print("重新开始")
        else:
            print("你输了")
            
        break  # 如果一切正常,跳出循环

    except ValueError as e:  # 处理错误的输入
        print(f"错误的输入:{e}")
在这个代码中, while True: 将程序置于一个无限循环中,只有当用户输入正确的值或者用户赢了、输了或者平局后,程序才会跳出这个循环。在循环中,使用 try...except... 语句来处理可能出现的错误。当用户输入的不是一个整数或者不是0,1,2时,程序将抛出 ValueError ,并打印错误信息。然后程序将回到循环的开始,要求用户重新输入。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-17 23:44:32 | 显示全部楼层    本楼为最佳答案   
代码中如果输入的是字符串或者大于2的数据,会产生类型错误,导致程序崩溃。我们可以使用try...except语句来捕获这种异常,给出友好的提示并要求重新输入。代码如下:
import random

while True:
    try:
        s = int(input("请输入:剪刀(0),石头(1),布(2):"))
        if s < 0 or s > 2:
            print("请输入0到2之间的整数!")
            continue
        else:
            break
    except ValueError:
        print("请输入正确的数字!")

x = random.randint(0, 2)

# 判断输入
if s == 0:
    print(f"你输入的是:剪刀{s}")
elif s == 1:
    print(f"你输入的是:石头{s}")
elif s == 2:
    print(f"你输入的是:布{s}")

print(f"随机数是:{x}")

# 判断随机数和输入的数
if x == 0 and s == 1:
    print("你赢了")
elif x == 1 and s == 2:
    print("你赢了")
elif x == 2 and s == 0:
    print("你赢了")
elif x == s:
    print("重新开始")
else:
    print("你输了")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-18 11:27:21 | 显示全部楼层
如果输入的是字符串或大于2的数据,可以使用try-except语句捕获异常并给出提示重新输入。以下是修改后的代码:
import random

try:    # 尝试接收输入,如果输入不是整数会抛出异常
    s = int(input("请输入:剪刀(0),石头(1),布(2):"))

    # 判断输入
    if s == 0:
        print(f"你输入的是:剪刀{s}")
    elif s == 1:
        print(f"你输入的是:石头{s}")
    elif s == 2:
        print(f"你输入的是:布{s}")
    else:   # 如果输入了其他数字,给出提示并重新输入
        print("输入无效,请输入0、1或2")
        exit()

    x = random.randint(0, 2)
    print(f"随机数是:{x}")

    # 判断随机数和输入的数
    if x == 0 and s == 1:
        print("你赢了")
    elif x == 1 and s == 2:
        print("你赢了")
    elif x == 2 and s == 0:
        print("你赢了")
    elif x == s:
        print("重新开始")
    else:
        print("你输了")

except ValueError:  # 捕获输入值错误
    print("输入无效,请输入0、1或2")

求最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-26 22:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表