Jac*_*ckD 4 python integer slice python-3.x
我正在尝试编写一个名为"middle"的函数,它取奇数的中间3位数,或偶数的中间4位数.如果数字小于5位,则只返回整数.这是我的工作:
def middle(x):
mystring=str(x)
length=len(mystring)
if len(mystring)<=5:
return(x)
elif len(mystring)%2==0:
return (mystring[((length/2)-1):((length/2)+3)])
else:
return (mystring[(length//2):((length//2)+3)])
middle (1234567890)
Run Code Online (Sandbox Code Playgroud)
我一直得到"类型错误:切片索引必须是整数或没有或有an_index_method",我不明白.
DSM*_*DSM 13
你打赌,你使用的是Python 3.[你是 - 我只是注意到了第二个标签.] length/2
将是一个浮点数:
return (mystring[((length/2)-1):((length/2)+3)])
Run Code Online (Sandbox Code Playgroud)
length//2
而是全程使用.
请注意即使length
是偶数也会发生这种情况:
>>> s = 'abcd'
>>> len(s)
4
>>> len(s)/2
2.0
>>> s[len(s)/2:]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: slice indices must be integers or None or have an __index__ method
>>> s[len(s)//2:]
'cd'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8301 次 |
最近记录: |