TypeError: slice indices must be integers or None or have an __index__ method


TypeError:切片索引必須為整數或無,或具有__index__方法

def merge_sore(lists):
    if len(lists) <= 1:
        return lists
    num = len(lists) / 2
    left = merge_sore(lists[:num])
    right = merge_sore(lists[num:])
    return merge(left,right)

出錯原因:除號使用/,改成//就好,

在Python2.x中,使用/,整數相除為整數,會把小數部分忽略,浮點數相除會保留小數部分

在Python3.x中,使用/,整數與浮點數相除都是浮點數

使用//,在Python2.x、Python3.x中都一樣,取整除法,會忽略小數部分,向下取整

print(5/3)
print(5//3)

1.6666666666666667
1

 

def merge_sore(lists):
    if len(lists) <= 1:
        return lists
    num = len(lists) // 2
    left = merge_sore(lists[:num])
    right = merge_sore(lists[num:])
    return merge(left,right)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM