Python模类型错误
我想创建简单的代码来测试数字是奇数还是偶数。 我使用的是Python模类型错误,python,python-2.7,Python,Python 2.7,我想创建简单的代码来测试数字是奇数还是偶数。 我使用的是python2.7.3 def oddoreven(a): try: int(a) except: return "Error" if a%2==0: return 1 else: return 0 相反,代码失败,出现错误:TypeError:在字符串格式化过程中未转换所有参数。如果%2==0…,则错误指向以开头的行。 在研究这个问题时,我发现了一些例子,表明这样的代码应该可以工作。例如,此问题的答案提供
python2.7.3
def oddoreven(a):
try: int(a)
except: return "Error"
if a%2==0: return 1
else: return 0
相反,代码失败,出现错误:TypeError:在字符串格式化过程中未转换所有参数。
如果%2==0…,则错误指向以开头的行。
在研究这个问题时,我发现了一些例子,表明这样的代码应该可以工作。例如,此问题的答案提供了与解决方案类似的代码:
那么,我的代码有什么问题吗?如用户2357112所述。(int)a不会将a转换为int。因此,当您检查其模数时,仍然必须将其转换
def oddoreven(a):
try: int(a)
except: return "Error"
if int(a)%2==0: return 1
else: return 0
print oddoreven(32)
很好
作为旁注,捕获任何异常通常都是不受欢迎的。您可能希望缩小范围,如:
def oddoreven(a):
try: int(a)
except TypeError: return "Error"
if int(a)%2==0: return 1
else: return 0
print oddoreven(32)
如用户2357112所述。(int)a不会将a转换为int。因此,当您检查其模数时,仍然必须将其转换
def oddoreven(a):
try: int(a)
except: return "Error"
if int(a)%2==0: return 1
else: return 0
print oddoreven(32)
很好
作为旁注,捕获任何异常通常都是不受欢迎的。您可能希望缩小范围,如:
def oddoreven(a):
try: int(a)
except TypeError: return "Error"
if int(a)%2==0: return 1
else: return 0
print oddoreven(32)
int
功能不会更改a
的位置,您需要将其分配给a
:
>>> def oddoreven(a):
... try: a=int(a)
... except: return "Error"
... if a%2==0: return 1
... else: return 0
...
>>> oddoreven('2')
1
>>> oddoreven('5')
0
>>> oddoreven('a')
'Error'
int
功能不会更改a
的位置,您需要将其分配给a
:
>>> def oddoreven(a):
... try: a=int(a)
... except: return "Error"
... if a%2==0: return 1
... else: return 0
...
>>> oddoreven('2')
1
>>> oddoreven('5')
0
>>> oddoreven('a')
'Error'
这是因为您首先测试
a
是否可以转换为int
(这很好),然后忽略此测试并继续使用参数中提供的字符串
Python是一种动态类型语言,但也是强类型,这意味着您可以在声明变量后更改其类型,但此更改必须是显式的()
在您的情况下,如果%2==0
如果a
是字符串,则表示您不能执行
您可以这样做,例如:
def oddoreven(a):
try:
my_int = int(a)
except TypeError:
return "The argument provided could not be converted into an int"
if my_int % 2 == 0:
return 1
else:
return 0
这是因为您首先测试a
是否可以转换为int
(这很好),然后忽略此测试并继续使用参数中提供的字符串
Python是一种动态类型语言,但也是强类型,这意味着您可以在声明变量后更改其类型,但此更改必须是显式的()
在您的情况下,如果%2==0
如果a
是字符串,则表示您不能执行
您可以这样做,例如:
def oddoreven(a):
try:
my_int = int(a)
except TypeError:
return "The argument provided could not be converted into an int"
if my_int % 2 == 0:
return 1
else:
return 0
int(a)
对a
没有任何作用int(a)
对a
没有任何作用。