为何python函数内部使用try结构依然会报错

发布网友 发布时间:2022-04-24 09:25

我来回答

5个回答

热心网友 时间:2023-10-09 09:25

理解变量的含义,你在函数引用,没加引号,会认为你是一个变量。变量在使用的时候一定要定义,或者你在引用函数的时候直接给变量赋值追问大哥,我现在在做相关试题,题目是“定义一个判断参数类型的函数,但是要有异常处理。”,我不知道如何实现,我明白是因为没定义才会报错的,但是在这种异常情况下如何让代码不报错退出,而是在屏幕返回“输入错误呢?”

追答#代码方便测试改成了s=None,使用的时候改称s=input(),去掉return a b d这些
def select_num(s=None):
try:
b=float(s)
a=int(b)
if a-b==0:
return a
print('整数')
if a-b!=0:
return b
print('浮点数')
except:
try:
d=complex(s)
return d
print('虚数')
except:
a='输入的不是数字'
return a
print('输入的不是数字')
#测试
import unittest
class test(unittest.TestCase):
def test01(self):
t=select_num(s='1.1')
self.assertEqual(type(t),float)
def test02(self):
t=select_num(s='1')
self.assertEqual(type(t),int)
def test03(self):
t=select_num(s='+1')
self.assertEqual(type(t),int)
def test04(self):
t=select_num(s='-1')
self.assertEqual(type(t),int)
def test05(self):
t=select_num(s='-1.1')
self.assertEqual(type(t),float)
def test06(self):
t=select_num(s='+1.1')
self.assertEqual(type(t),float)
def test07(self):
t=select_num(s='0j')
self.assertEqual(type(t),complex)

def test08(self):
t=select_num(s='1+0j')
self.assertEqual(type(t),complex)
def test09(self):
t=select_num(s='abc')
self.assertEqual(t,'输入的不是数字')

if __name__ == '__main__':
unittest.main()

热心网友 时间:2023-10-09 09:25

先把你的字符串用变量定义提到最前面,让代码看上去更简洁明了。

热心网友 时间:2023-10-09 09:26

大哥你想判断”sa“是什么类型,能否带上引号

select_num("sa")

热心网友 时间:2023-10-09 09:26

你没有定义sa,学会读错误信息。

热心网友 时间:2023-10-09 09:27

这个错误在于sa没有定义啊,还没有进入函数,所以不是try...except的问题。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com