鱼C论坛

 找回密码
 立即注册
查看: 1645|回复: 5

[已解决]小白求助

[复制链接]
发表于 2017-4-26 21:14:42 | 显示全部楼层 |阅读模式

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

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

x
让用户输入2个数字,输入非int类型报错,代码如下哪里有问题呢?

def int_sure(x):
        try:
                x=int(x)
        except TypeError:
                print('number only')

               
x1=input('数字1:')
int_sure(x1)
x2=input('数字2:')
int_sure(x2)
print(sum(x1+x2))
最佳答案
2017-4-27 13:02:25
本帖最后由 小锟 于 2017-4-27 13:16 编辑
  1. #方案一
  2. def int_sure(x):
  3.         try:
  4.                 x=int(x)
  5.         except ValueError:
  6.                 print('number only')
  7.         else:

  8.             return x
  9. x1 = input('数字1:')
  10. while True:            
  11.     x1 = int_sure(x1)
  12.     if x1 == None :
  13.         x1 = input('重新输入数字1:')
  14.     else:
  15.         break
  16.    

  17. x2 = input('数字2:')
  18. while True:
  19.     x2 = int_sure(x2)
  20.     if x2 == None :
  21.         x2 = input('重新输入数字2:')
  22.     else:
  23.         break
  24. print(sum([x1,x2]))


  25. #方案二

  26. while True:
  27.     try:
  28.         x1 = int(input('数字1:'))
  29.         x2 = int(input('数字2:'))
  30.     except ValueError:
  31.         print('number only')
  32.     else :
  33.         break

  34. print(sum([x1,x2]))     
  35.         
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-4-26 21:46:21 | 显示全部楼层
  1. def int_sure():
  2.     y = input('输入数字:')
  3.     x = input('输入数字:')   
  4.     try:
  5.         y = int(y)
  6.         x = int(x)
  7.     except TypeError:
  8.         print('number only')
  9.     print(sum(x+y))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-26 21:47:01 | 显示全部楼层
函数没返回值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-27 12:14:17 | 显示全部楼层
试试把TypeError换成ValueError
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-27 12:42:20 | 显示全部楼层
  1. def int_sure():
  2.     x1=raw_input('数字1:')

  3.     x2=raw_input('数字2:')
  4.     try:
  5.             x1,x2=int(x1),int(x2)
  6.             print sum([x1,x2])
  7.             
  8.     except ValueError:
  9.             print('number only')
  10.                
  11. int_sure()
复制代码

把TypeError改成了ValueError,还有两个问题:
1.在函数内部修改全局变量是不可行的,除非你在函数内声明变量为全局变量
2.sum求和函数的参数是可迭代对象,所以我在sum()内将x1和x1用中括号括起,让其形成列表形式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-27 13:02:25 | 显示全部楼层    本楼为最佳答案   
本帖最后由 小锟 于 2017-4-27 13:16 编辑
  1. #方案一
  2. def int_sure(x):
  3.         try:
  4.                 x=int(x)
  5.         except ValueError:
  6.                 print('number only')
  7.         else:

  8.             return x
  9. x1 = input('数字1:')
  10. while True:            
  11.     x1 = int_sure(x1)
  12.     if x1 == None :
  13.         x1 = input('重新输入数字1:')
  14.     else:
  15.         break
  16.    

  17. x2 = input('数字2:')
  18. while True:
  19.     x2 = int_sure(x2)
  20.     if x2 == None :
  21.         x2 = input('重新输入数字2:')
  22.     else:
  23.         break
  24. print(sum([x1,x2]))


  25. #方案二

  26. while True:
  27.     try:
  28.         x1 = int(input('数字1:'))
  29.         x2 = int(input('数字2:'))
  30.     except ValueError:
  31.         print('number only')
  32.     else :
  33.         break

  34. print(sum([x1,x2]))     
  35.         
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 10:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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