Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 633|回复: 0

初学Python常见异常错误,总有一处你会遇到!

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-7-1 07:11:31 | 显示全部楼层 |阅读模式

    初学Python常见错误

    1. 忘记写冒号
    2. 误用=
    3. 错误 缩紧
    4. 变量没有定义
    5. 中英文输入法导致的错误
    6. 不同数据类型的拼接
    7. 索引位置问题
    8. 使用字典中不存在的键
    9. 忘了括号
    10. 漏传参数
    11. 缺失依赖库
    12. 使用了python中对关键词
    13. 编码问题

    1. 忘记写冒号

    在 if、elif、else、for、while、def语句后面忘记添加 :

    age = 42
    
    if age == 42
    
        print('Hello!')
      File "<ipython-input-19-4303141d6f97>", line 2
    
        if age == 42
    
                    ^
    
    SyntaxError: invalid syntax
    

    2. 误用 =

    =` 是赋值操作,而判断两个值是否相等是 `==
    gender = '男'
    
    if gender = '男':
    
        print('Man')
      File "<ipython-input-20-191d01f95984>", line 2
    
        if gender = '男':
    
                  ^
    
    SyntaxError: invalid syntax
    

    3. 错误的缩进

    Python用缩进区分代码块,常见的错误用法:

    print('Hello!')
    
     print('Howdy!')
      File "<ipython-input-9-784bdb6e1df5>", line 2
    
        print('Howdy!')
    
        ^
    
    IndentationError: unexpected indent
    num = 25
    
    if num == 25:
    
    print('Hello!')
      File "<ipython-input-21-8e4debcdf119>", line 3
    
        print('Hello!')
    
            ^
    
    IndentationError: expected an indented block
    

    4. 变量没有定义

    if city in ['New York', 'Bei Jing', 'Tokyo']:
    
        print('This is a mega city')
    ---------------------------------------------------------------------------
    
    
    NameError                                 Traceback (most recent call last)
    
    
    <ipython-input-22-a81fd2e7a0fd> in <module>
    
    ----> 1 if city in ['New York', 'Bei Jing', 'Tokyo']:
    
          2     print('This is a mega city')
    NameError: name 'city' is not defined
    

    5. 中英文输入法导致的错误

    • 英文冒号
    • 英文括号
    • 英文逗号
    • 英文单双引号
    if 5>3:
    
        print('5比3大')
      File "<ipython-input-46-47f8b985b82d>", line 1
    
        if 5>3:
    
              ^
    
    SyntaxError: invalid character in identifier
    if 5>3:
    
        print('5比3大')
      File "<ipython-input-47-4b1df4694a8d>", line 2
    
        print('5比3大')
    
                    ^
    
    SyntaxError: invalid character in identifier
    spam = [1, 2,3]
      File "<ipython-input-45-47a5de07f212>", line 1
    
        spam = [1, 2,3]
    
                     ^
    
    SyntaxError: invalid character in identifier
    if 5>3:
    
        print('5比3大‘)
      File "<ipython-input-48-ae599f12badb>", line 2
    
        print('5比3大‘)
    
                     ^
    
    SyntaxError: EOL while scanning string literal
    

    6. 不同数据类型的拼接

    字符串/列表/元组 支持拼接

    字典/集合不支持拼接

    'I have ' + 12 + ' eggs.'
    
    #'I have {} eggs.'.format(12)
    ---------------------------------------------------------------------------
    
    
    TypeError                                 Traceback (most recent call last)
    
    
    <ipython-input-29-20c7c89a2ec6> in <module>
    
    ----> 1 'I have ' + 12 + ' eggs.'
    TypeError: can only concatenate str (not "int") to str
    ['a', 'b', 'c']+'def'
    ---------------------------------------------------------------------------
    
    
    TypeError                                 Traceback (most recent call last)
    
    
    <ipython-input-31-0e8919333d6b> in <module>
    
    ----> 1 ['a', 'b', 'c']+'def'
    TypeError: can only concatenate list (not "str") to list
    ('a', 'b', 'c')+['a', 'b', 'c']
    ---------------------------------------------------------------------------
    
    
    TypeError                                 Traceback (most recent call last)
    
    
    <ipython-input-33-90742621216d> in <module>
    
    ----> 1 ('a', 'b', 'c')+['a', 'b', 'c']
    TypeError: can only concatenate tuple (not "list") to tuple
    set(['a', 'b', 'c'])+set(['d', 'e'])
    ---------------------------------------------------------------------------
    
    
    TypeError                                 Traceback (most recent call last)
    
    
    <ipython-input-35-ddf5fb1e6c8c> in <module>
    
    ----> 1 set(['a', 'b', 'c'])+set(['d', 'e'])
    TypeError: unsupported operand type(s) for +: 'set' and 'set'
    grades1 = {'Mary':99, 'Henry':77}
    
    grades2 = {'David':88, 'Unique':89}
    
    
    grades1+grades2
    ---------------------------------------------------------------------------
    
    
    TypeError                                 Traceback (most recent call last)
    
    
    <ipython-input-36-1b1456844331> in <module>
    
          2 grades2 = {'David':88, 'Unique':89}
    
          3 
    
    ----> 4 grades1+grades2
    TypeError: unsupported operand type(s) for +: 'dict' and 'dict'
    

    7. 索引位置问题

    spam = ['cat', 'dog', 'mouse']
    
    print(spam[5])
    ---------------------------------------------------------------------------
    
    
    IndexError                                Traceback (most recent call last)
    
    
    <ipython-input-38-e0a79346266d> in <module>
    
          1 spam = ['cat', 'dog', 'mouse']
    
    ----> 2 print(spam[5])
    IndexError: list index out of range
    

    8. 使用字典中不存在的键

    在字典对象中访问 key 可以使用 []

    但是如果该 key 不存在,就会导致:KeyError: 'zebra'

    spam = {'cat': 'Zophie',
    
            'dog': 'Basil',
    
            'mouse': 'Whiskers'}
    
    
    print(spam['zebra'])
    ---------------------------------------------------------------------------
    
    
    KeyError                                  Traceback (most recent call last)
    
    
    <ipython-input-39-92c9b44ff034> in <module>
    
          3         'mouse': 'Whiskers'}
    
          4 
    
    ----> 5 print(spam['zebra'])
    KeyError: 'zebra'
    

    为了避免这种情况,可以使用 get 方法

    spam = {'cat': 'Zophie',
    
            'dog': 'Basil',
    
            'mouse': 'Whiskers'}
    
    
    print(spam.get('zebra'))
    None
    

    key 不存在时,get 默认返回 None

    9. 忘了括号

    当函数中传入的是函数或者方法时,容易漏写括号

    spam = {'cat': 'Zophie',
    
            'dog': 'Basil',
    
            'mouse': 'Whiskers'}
    
    
    print(spam.get('zebra')
      File "<ipython-input-43-100a51a7b630>", line 5
    
        print(spam.get('zebra')
    
                               ^
    
    SyntaxError: unexpected EOF while parsing
    

    10. 漏传参数

    def diyadd(x, y, z):
    
        return x+y+z
    
    
    diyadd(1, 2)
    ---------------------------------------------------------------------------
    
    
    TypeError                                 Traceback (most recent call last)
    
    
    <ipython-input-44-7184f3f906ca> in <module>
    
          2     return x+y+z
    
          3 
    
    ----> 4 diyadd(1, 2)
    TypeError: diyadd() missing 1 required positional argument: 'z'
    

    11. 缺失依赖库

    电脑中没有相关的库

    12. 使用了python中的关键词

    如try、except、def、class、object、None、True、False等

    try = 5
    
    print(try)
      File "<ipython-input-1-508e87fe2ff3>", line 1
    
        try = 5
    
            ^
    
    SyntaxError: invalid syntax
    def = 6
    
    print(6)
      File "<ipython-input-2-d04205303265>", line 1
    
        def = 6
    
            ^
    
    SyntaxError: invalid syntax
    

    13. 文件编码问题

    import pandas as pd
    
    
    df = pd.read_csv('data/twitter情感分析数据集.csv')
    
    df.head()
    

    尝试encoding编码参数传入utf-8、gbk

    df = pd.read_csv('data/twitter情感分析数据集.csv', encoding='utf-8')
    
    df.head()
    

    都报错说明编码不是utf-8和gbk,而是不常见都编码,这里我们需要传入正确都encoding,才能让程序运行。

    python有个chardet库,专门用来侦测编码。

    import chardet
    
    
    binary_data = open('data/twitter情感分析数据集.csv', 'rb').read()
    
    chardet.detect(binary_data)
    {'encoding': 'Windows-1252', 'confidence': 0.7291192008535122, 'language': ''
    
    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-12-22 21:12 , Processed in 0.062550 second(s), 30 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表