鱼C论坛

 找回密码
 立即注册
查看: 1684|回复: 8

[已解决]处理异常

[复制链接]
发表于 2021-6-27 09:56:42 | 显示全部楼层 |阅读模式

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

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

x
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!"后让我重新输入第二个数字,我输入后得到两个数字加总结果?
最佳答案
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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-27 10:06:57 | 显示全部楼层
nahongyan1997 发表于 2021-6-27 10:00
两个用单独的 try ... except..就好了:

这样确实能实现只重新输入第二个数字,但是整个过程只能重复一遍,不能多次输入
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

你在实际使用的时候,会发现他的代码报错我的不会报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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=[0,0]
flag=False
while not flag:
    for i in range(2):
        while True:#把每个数字输入单独放在一个循环中,遇到q终止程序
            try:
                number = input(quote[i])
                if number == "q":
                    flag=True #遇到q终止程序
                    break
                n[i] = int(number)
                break
            except ValueError:
                print("Please enter a number!")
        if flag:
            break
    print(n[0] + n[1])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-27 10:22:03 | 显示全部楼层
nahongyan1997 发表于 2021-6-27 10:15
你在实际使用的时候,会发现他的代码报错我的不会报错

我运行了一下并没有报错,还是非常感谢你的帮助!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-27 10:24:36 | 显示全部楼层
sunrise085 发表于 2021-6-27 10:19
程序的最佳方式是重复利用代码
修改一下

你提供的两种方法都能实现同样的效果,不过第二种以我目前的水平还不太能理解,我会继续学习,争取早日理解,非常感谢你的帮助!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-27 13:23:27 | 显示全部楼层
Nakupenda_wewe 发表于 2021-6-27 10:22
我运行了一下并没有报错,还是非常感谢你的帮助!

你输入 “q” 就会报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-15 06:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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