1、IndentationError:expected an indented block
原因:Python對縮進非常敏感
解決:在出現此問題的哪一行進行縮進就好,注意tab不能與空格混用,有冒號的下一句一般要縮進
2、TypeError: unorderable types: str() >= int()
原因:input返回的是字符串,所以輸入數字返回的也是字符串
解決:強制類型轉換,int(input())
3、can't assign to function call
原因:圓括號()表示函數調用,方括號[]表示列表值的引用
解決:改為[]
def normalize(name):
l=list(name)
l[0]=l[0].upper()
for i in range(1,len(name)):
l[i]=l[i].lower()
l=''.join(l)
return l
l1=['adam','LISA','barT']
l2=list(map(normalize,l1))
print(l2)
4、descriptor 'lower' of 'str' object needs an argument
原因:調用的是函數的返回值,但是調用函數時沒有傳參
解決:此處正確的是調用函數本身,即不帶括號的函數調用
5、ValueError: invalid literal for int() with base 2: '16'
原因:int('16',2)意思是按照二進制將字符串‘16’轉化成十進制,不是將16十進制轉化成二進制,所以base=2時應該只有0,1,超出0,1范圍就會報錯
int('16',8) ——>1*8+6=14
int('16',16) ——>1*16+6=22
擴展:十進制轉化為二進制:bin(x)
十進制轉化為八進制:oct(x)
十進制轉化為十六進制:hex(x)
返回值均為字符串,並且帶有0b,0o,0x,可以采用replace去掉:bin(x).replace('0b','');可以再套一個int轉化為十進制整數:int(int('1111',2))