kaobiel 发表于 2023-6-17 23:26:44

小白求助

importrandom
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("你输了")
       

isdkz 发表于 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 :
            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 ,并打印错误信息。然后程序将回到循环的开始,要求用户重新输入。

歌者文明清理员 发表于 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("你输了")

sfqxx 发表于 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")

求最佳答案{:10_254:}
页: [1]
查看完整版本: 小白求助