鱼C论坛

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

[已解决]处理异常

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

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

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

x
  1. print("Give me two numbers, and I will add up them.\nPlease enter q to quit")
  2. while True:
  3.     try:
  4.         first_number = input("First number:")
  5.         if first_number == "q":
  6.             break
  7.         f_number = int(first_number)
  8.         second_number = input("Second number:")
  9.         if second_number =="q":
  10.             break
  11.         s_number = int(second_number)
  12.         print(f_number + s_number)
  13.     except ValueError:
  14.         print("Please enter a number!")
复制代码


如果我第一次输入的是一个数字,第二次输入一个字符串,系统提示"Please enter a number!"后让我重新输入第一个数字,请问怎样修改代码能实现系统提示"Please enter a number!"后让我重新输入第二个数字,我输入后得到两个数字加总结果?
最佳答案
2021-6-27 10:06:35
  1. print("Give me two numbers, and I will add up them.\nPlease enter q to quit")
  2. while True:
  3.     while True:#把每个数字输入单独放在一个循环中,遇到q终止程序
  4.         try:
  5.             first_number = input("First number:")
  6.             if first_number == "q":
  7.                 exit(0) #遇到q终止程序
  8.             f_number = int(first_number)
  9.             break
  10.         except ValueError:
  11.             print("Please enter a number!")
  12.     while True:
  13.         try:
  14.             second_number = input("Second number:")
  15.             if second_number =="q":
  16.                 exit(0)
  17.             s_number = int(second_number)
  18.             break
  19.         except ValueError:
  20.             print("Please enter a number!")
  21.     print(f_number + s_number)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-6-27 10:00:44 | 显示全部楼层
本帖最后由 nahongyan1997 于 2021-6-27 10:03 编辑

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

  11. while True:        
  12.     try:
  13.         second_number = input("Second number:")
  14.         if second_number =="q":
  15.             break
  16.         s_number = int(second_number)
  17.         break
  18.     except ValueError:
  19.         print("Please enter a number!")
  20. try:
  21.     print(f_number + s_number)
  22. except:
  23.     pass
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-27 10:06:35 | 显示全部楼层    本楼为最佳答案   
  1. print("Give me two numbers, and I will add up them.\nPlease enter q to quit")
  2. while True:
  3.     while True:#把每个数字输入单独放在一个循环中,遇到q终止程序
  4.         try:
  5.             first_number = input("First number:")
  6.             if first_number == "q":
  7.                 exit(0) #遇到q终止程序
  8.             f_number = int(first_number)
  9.             break
  10.         except ValueError:
  11.             print("Please enter a number!")
  12.     while True:
  13.         try:
  14.             second_number = input("Second number:")
  15.             if second_number =="q":
  16.                 exit(0)
  17.             s_number = int(second_number)
  18.             break
  19.         except ValueError:
  20.             print("Please enter a number!")
  21.     print(f_number + s_number)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

这样确实能实现只重新输入第二个数字,但是整个过程只能重复一遍,不能多次输入
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

你在实际使用的时候,会发现他的代码报错我的不会报错
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

程序的最佳方式是重复利用代码
修改一下
  1. print("Give me two numbers, and I will add up them.\nPlease enter q to quit")
  2. quote=["First number:","Second number:"]
  3. n=[0,0]
  4. flag=False
  5. while not flag:
  6.     for i in range(2):
  7.         while True:#把每个数字输入单独放在一个循环中,遇到q终止程序
  8.             try:
  9.                 number = input(quote[i])
  10.                 if number == "q":
  11.                     flag=True #遇到q终止程序
  12.                     break
  13.                 n[i] = int(number)
  14.                 break
  15.             except ValueError:
  16.                 print("Please enter a number!")
  17.         if flag:
  18.             break
  19.     print(n[0] + n[1])
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

我运行了一下并没有报错,还是非常感谢你的帮助!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

你提供的两种方法都能实现同样的效果,不过第二种以我目前的水平还不太能理解,我会继续学习,争取早日理解,非常感谢你的帮助!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

你输入 “q” 就会报错
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-22 06:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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