Python错误解决

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))

                                  

 

posted @ 2017-10-21 17:09  一枚小菜鸟  阅读(4567)  评论(0编辑  收藏  举报