Nakupenda_wewe 发表于 2021-6-27 09:56:42

处理异常

print("Give me two numbers, and I will add up them.\nPlease enter q to quit")
while True:
    try:
      first_number = input("First number:")
      if first_number == "q":
            break
      f_number = int(first_number)
      second_number = input("Second number:")
      if second_number =="q":
            break
      s_number = int(second_number)
      print(f_number + s_number)
    except ValueError:
      print("Please enter a number!")

如果我第一次输入的是一个数字,第二次输入一个字符串,系统提示"Please enter a number!"后让我重新输入第一个数字,请问怎样修改代码能实现系统提示"Please enter a number!"后让我重新输入第二个数字,我输入后得到两个数字加总结果?

nahongyan1997 发表于 2021-6-27 10:00:44

本帖最后由 nahongyan1997 于 2021-6-27 10:03 编辑

两个用单独的 try ... except..就好了:
print("Give me two numbers, and I will add up them.\nPlease enter q to quit")
while True:
    try:
      first_number = input("First number:")
      if first_number == "q":
            break
      f_number = int(first_number)
        break
    except ValueError:
      print("Please enter a number!")

while True:      
    try:
      second_number = input("Second number:")
      if second_number =="q":
            break
      s_number = int(second_number)
        break
    except ValueError:
      print("Please enter a number!")
try:
    print(f_number + s_number)
except:
    pass

sunrise085 发表于 2021-6-27 10:06:35

print("Give me two numbers, and I will add up them.\nPlease enter q to quit")
while True:
    while True:#把每个数字输入单独放在一个循环中,遇到q终止程序
      try:
            first_number = input("First number:")
            if first_number == "q":
                exit(0) #遇到q终止程序
            f_number = int(first_number)
            break
      except ValueError:
            print("Please enter a number!")
    while True:
      try:
            second_number = input("Second number:")
            if second_number =="q":
                exit(0)
            s_number = int(second_number)
            break
      except ValueError:
            print("Please enter a number!")
    print(f_number + s_number)

Nakupenda_wewe 发表于 2021-6-27 10:06:57

nahongyan1997 发表于 2021-6-27 10:00
两个用单独的 try ... except..就好了:

这样确实能实现只重新输入第二个数字,但是整个过程只能重复一遍,不能多次输入

nahongyan1997 发表于 2021-6-27 10:15:56

Nakupenda_wewe 发表于 2021-6-27 10:06
这样确实能实现只重新输入第二个数字,但是整个过程只能重复一遍,不能多次输入

你在实际使用的时候,会发现他的代码报错我的不会报错

sunrise085 发表于 2021-6-27 10:19:42

Nakupenda_wewe 发表于 2021-6-27 10:06
这样确实能实现只重新输入第二个数字,但是整个过程只能重复一遍,不能多次输入

程序的最佳方式是重复利用代码
修改一下
print("Give me two numbers, and I will add up them.\nPlease enter q to quit")
quote=["First number:","Second number:"]
n=
flag=False
while not flag:
    for i in range(2):
      while True:#把每个数字输入单独放在一个循环中,遇到q终止程序
            try:
                number = input(quote)
                if number == "q":
                  flag=True #遇到q终止程序
                  break
                n = int(number)
                break
            except ValueError:
                print("Please enter a number!")
      if flag:
            break
    print(n + n)

Nakupenda_wewe 发表于 2021-6-27 10:22:03

nahongyan1997 发表于 2021-6-27 10:15
你在实际使用的时候,会发现他的代码报错我的不会报错

我运行了一下并没有报错,还是非常感谢你的帮助!

Nakupenda_wewe 发表于 2021-6-27 10:24:36

sunrise085 发表于 2021-6-27 10:19
程序的最佳方式是重复利用代码
修改一下

你提供的两种方法都能实现同样的效果,不过第二种以我目前的水平还不太能理解,我会继续学习,争取早日理解,非常感谢你的帮助!

nahongyan1997 发表于 2021-6-27 13:23:27

Nakupenda_wewe 发表于 2021-6-27 10:22
我运行了一下并没有报错,还是非常感谢你的帮助!

你输入 “q” 就会报错
页: [1]
查看完整版本: 处理异常