python--17个新手常见Python运行时错误

当初学 Python 时,想要弄懂 Python 的错误信息的含义可能有点复杂。这里列出了常见的的一些让你程序 crash 的运行时错误。

1)忘记在 if , elif else for while class ,def 声明末尾添加 :(导致 “SyntaxError :invalid syntax”)

该错误将发生在类似如下代码中:

if spam == 42print('Hello!')

2)使用 = 而不是 ==(导致“SyntaxError: invalid syntax”)

 = 是赋值操作符而 == 是等于比较操作。该错误发生在如下代码中:

if spam = 42:print('Hello!')

3)错误的使用缩进量。(导致“IndentationError:unexpected indent”、“IndentationError:unindent does not match any outer indetation level”以及“IndentationError:expected an indented block”)

记住缩进增加只用在以:结束的语句之后,而之后必须恢复到之前的缩进格式。该错误发生在如下代码中:

print('Hello!')print('Howdy!')或者:if spam == 42:print('Hello!')print('Howdy!')或者:if spam == 42:
print('Hello!')

4)在 for 循环语句中忘记调用 len() (导致“TypeError: 'list' object cannot be interpreted as an integer”)

通常你想要通过索引来迭代一个list或者string的元素,这需要调用 range() 函数。要记得返回len 值而不是返回这个列表。

该错误发生在如下代码中:

spam = ['cat', 'dog', 'mouse']
for i in range(spam):print(spam[i])

5)尝试修改string的值(导致“TypeError: 'str' object does not support item assignment”)

string是一种不可变的数据类型,该错误发生在如下代码中:

spam = 'I have a pet cat.'
spam[13] = 'r'
print(spam)

而你实际想要这样做:

spam = 'I have a pet cat.'
spam = spam[:13] + 'r' + spam[14:]
print(spam)

6)尝试连接非字符串值与字符串(导致 “TypeError: Can't convert 'int' object to str implicitly”)

该错误发生在如下代码中:

numEggs = 12
print('I have ' + numEggs + ' eggs.')

 

而你实际想要这样做:

numEggs = 12
print('I have ' + str(numEggs) + ' eggs.')或者:numEggs = 12
print('I have %s eggs.' % (numEggs))

7)在字符串首尾忘记加引号(导致“SyntaxError: EOL while scanning string literal”)

该错误发生在如下代码中:

 

print(Hello!')或者:print('Hello!)或者:myName = 'Al'
print('My name is ' + myName + . How are you?')

8)变量或者函数名拼写错误(导致“NameError: name 'fooba' is not defined”)

该错误发生在如下代码中:

foobar = 'Al'
print('My name is ' + fooba)或者:spam = ruond(4.2)或者:spam = Round(4.2)

9)方法名拼写错误(导致 “AttributeError: 'str' object has no attribute 'lowerr'”)

该错误发生在如下代码中:

spam = 'THIS IS IN LOWERCASE.'
spam = spam.lowerr()

10)引用超过list最大索引(导致“IndexError: list index out of range”)

该错误发生在如下代码中:

spam = ['cat', 'dog', 'mouse']
print(spam[6])

11)使用不存在的字典键值(导致“KeyError:‘spam’”)

该错误发生在如下代码中:

spam = {'cat': 'Zophie', 'dog': 'Basil', 'mouse': 'Whiskers'}
print('The name of my pet zebra is ' + spam['zebra'])

12)尝试使用Python关键字作为变量名(导致“SyntaxError:invalid syntax”)

Python关键不能用作变量名,该错误发生在如下代码中:

class = 'algebra'

Python3的关键字有:and, as, assert, break, class, continue, def, del, elif, else, except, False, finally, for, from, global, if, import, in, is, lambda, None, nonlocal, not, or, pass, raise, return, True, try, while, with, yield

13)在一个定义新变量中使用增值操作符(导致“NameError: name 'foobar' is not defined”)

不要在声明变量时使用0或者空字符串作为初始值,这样使用自增操作符的一句spam += 1等于spam = spam + 1,这意味着spam需要指定一个有效的初始值。

该错误发生在如下代码中:

spam = 0
spam += 42
eggs += 42

14)在定义局部变量前在函数中使用局部变量(此时有与局部变量同名的全局变量存在)(导致“UnboundLocalError: local variable 'foobar' referenced before assignment”)

在函数中使用局部变来那个而同时又存在同名全局变量时是很复杂的,使用规则是:如果在函数中定义了任何东西,如果它只是在函数中使用那它就是局部的,反之就是全局变量。

这意味着你不能在定义它之前把它当全局变量在函数中使用。

该错误发生在如下代码中:

someVar = 42
def myFunction():print(someVar)someVar = 100
myFunction()

15)尝试使用 range()创建整数列表(导致“TypeError: 'range' object does not support item assignment”)

有时你想要得到一个有序的整数列表,所以 range() 看上去是生成此列表的不错方式。然而,你需要记住 range() 返回的是 “range object”,而不是实际的 list 值。

该错误发生在如下代码中:

spam = range(10)
spam[4] = -1

也许这才是你想做:

spam = list(range(10))
spam[4] = -1

(注意:在 Python 2 中 spam = range(10) 是能行的,因为在 Python 2 中 range() 返回的是list值,但是在 Python 3 中就会产生以上错误)

16)不错在 ++ 或者 -- 自增自减操作符。(导致“SyntaxError: invalid syntax”)

如果你习惯于例如 C++ , Java , PHP 等其他的语言,也许你会想要尝试使用 ++ 或者 -- 自增自减一个变量。在Python中是没有这样的操作符的。

该错误发生在如下代码中:

spam = 1
spam++

也许这才是你想做的:

spam = 1
spam += 1

17)忘记为方法的第一个参数添加self参数(导致“TypeError: myMethod() takes no arguments (1 given)”)

该错误发生在如下代码中:

class Foo():def myMethod():print('Hello!')
a = Foo()
a.myMethod()

转载于:https://www.cnblogs.com/R-bear/p/7726521.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487364.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux alsa声卡命令,Linux ALSA声卡驱动之一:ALSA架构简介

一. 概述ALSA是Advanced Linux Sound Architecture 的缩写,目前已经成为了linux的主流音频体系结构,想了解更多的关于ALSA的这一开源项目的信息和知识,请查看以下网址:http://www.alsa-project.org/。在内核设备驱动层&#xff0…

寒武纪上市:AI芯片和普通芯片有何不同?全球AI芯片公司大全都在这里了

来源:Zach小生作者:腾讯新闻知识官、美国宾州州立大学硕士、芯片工程师Zach小生7月20日,寒武纪正式在A股科创板上市,成为AI芯片第一股,引起了业内的热议和关注。根据相关的资料显示,目前中国IC设计企业已超…

Python3-笔记-B-003-数据结构-元组tuple( )

# 元组[有序不变序列](不可修改)def tuples():# --- 元组 --- # 创建 (类似于列表的数据存储方式,但是不能修改) tuples ("柳岩", 21, "女")tuples tuple(["a", "b", "c"]) # 将 列表 转为 元组 (注:将字典转为元组会损失…

linux java输出到文件,linux java输出到文件内容

linux java输出到文件内容[2021-01-30 07:48:37] 简介:php去除nbsp的方法:首先创建一个PHP代码示例文件;然后通过“preg_replace("/(\s|\&nbsp\;| |\xc2\xa0)/", " ", strip_tags($val));”方法去除所有nbsp即可。推荐&#x…

关于TCP/IP协议及网络通信相关问题

一、网络模型: OSI标准模型七层架构以及其传输数据的模型如下: 传输信息的过程由上之下逐渐封装,接收过程则是由下至上逐渐拆包,每一层只解析自己独立的部分。 二、网络的机要素 1、IP 1 public class NetTest { 2 public sta…

linux编写复制脚本程,常用的Shell脚本

1、通过位置变量创建linux系统账户及密码$1 是执行脚本的第一个参数,$2 是执行脚本的第二个参数1 #!/bin/bash2 #Author: Peter zh3 #Blog: https://home.cnblogs.com/zhangwduoduoj/4 #Time: 2019-08-17 19:19:455 #Name: userad.sh6 #Version: v1.07 #Description…

世界人工智能发展究竟到了什么水平

来源:第一财经关于人工智能在当今科技界的发展水平,学术界、产业界和媒体界可能会有不同的看法。我经常听到的一个说法是:现在基于大数据与深度学习的人工智能是一种完全新颖的技术形态,它的出现能够全面地改变未来人类的社会形态…

37-字符的全排列

题目内容:对字符串(数字,字母,符号)进行全排列,并统计全排列的种树输入描述输入一个字符串输出描述输出字符串的全排列,每种情况占一行,最后一行输出全排列的个数输入样例123输出样例…

Quanta杂志长文翻译:通过信息论判定个体的边界

本文是“Quanta magazine”文章“What Is an Individual? Biology Seeks Clues in Information Theory” 的全文翻译。译者Peter,原文地址 https://www.quantamagazine.org/what-is-an-individual-biology-seeks-clues-in-information-theory-20200716/导读&#x…

linux语言 翻译工具,Linux文本转语音工具eSpeak介绍

Text to speech tool in LinuxeSpeak是一款 Linux 命令行工具,能把文本转换成语音。它是一款简洁的语音合成器,用C语言编写而成,它支持英语和其它多种语言。eSpeak 从标准输入或者输入文件中读取文本。虽然语音输出与真人声音相去甚远。但是&…

python--*args和**kwargs可变参数

先来看个例子: #! /usr/bin/env python #codingutf-8def foo(*args, **kwargs):print(args,args)print(kwargs,kwargs)print(----------------------------)if __name__ __main__:foo(1,2,3,4)foo(a1,b2,c3)foo(1,2,3,4,a1,b2,c3)foo(a,1,None,a1,b2,c3) 结果&…

因果学习的三个层次

来源:混沌巡洋舰昨天龚鹤扬博士在集智的讲座因果学习综述,我借此机会结合我的理解给大家总结客串下这个讲座,和因果学习的核心内容,及巡洋舰一段时间关于因果的文章汇总。这个讲座分为三部分,第一是什么因果及其哲学基…

查看文件详细信息linux,linux命令stat,查看文件详细信息

搜索引擎广告过滤Chrome插件搜索广告屏蔽Chrome插件:自动过滤:百度,360,搜狗,google,bing的搜索广告,让魏则西的悲剧不再重演.珍爱生命,远离搜索广告! 下载:FuckAd.zip 安装:方法自行百度. 关闭百 ...如何解读SQL Server日志(2/3)接下来说说返回的Ro…

BZOJ1010玩具装箱 - 斜率优化dp

传送门 题目分析: 设\(f[i]\)表示装前i个玩具的花费。 列出转移方程:\[f[i] max\{f[j] ((i - (j 1)) sum[i] - sum[j] - L))^2\}\] 令\(x[i] sum[i] i\), \(P L 1\),上式化为:\[f[i] max\{f[j] (x[i] - x[j] - P)^2\}\]…

人与机器——解析人工智能的三大类别以及哲学家的相关思想实验

来源:北京物联网智能技术应用协会你是否曾经产生过怀疑,你身边的某个人可能是个机器人呢?毕竟现在由于技术的发展,机器人的外观、行为都有可能被设置得和人类十分相像。这似乎有些荒谬和匪夷所思,但是你如何能百分之百…

linux暂停线程和恢复,是否有可能在Linux [暂停]中检测到线程已进行上下文切换?...

能够当所述线程中的一个被切换上下文(即,暂停),以检测可以找到?至于你的问题是否可能 - 它认为这是可能的。至少SystemTap(https://sourceware.org/systemtap/)可以做到这一点。probe scheduler.ctxswitch{if (target_pid ! 0&& next…

大战设计模式【12】—— 迭代器模式

迭代器模式(Iterator) 设计模式使用的例子https://github.com/LinkinStars/DesignPatternsAllExample 一、定义 提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。 二、结构 Iterator(抽象迭代器&#xff0…

MIT最新报告:完全无人驾驶仍需10年,马斯克:特斯拉已经实现

来源:机器学习研究组订阅号两年前,麻省理工学院成立了「未来工作特别小组」,这个小组目前有20多人,旨在研究「大众创新年代」的工作演变。近期,他们发表了一个最新的报告,重点关注了自动驾驶领域的进展。而…

win7 linux双系统win7启动不了怎么办,双系统windows打不开怎么办|苹果双系统win7打不开怎么解决|mac双系统打不开解决方法-系统城...

2016-03-30 19:28:38  浏览量:22401很多用户都会在电脑上安装Windows双系统甚至多系统,在开机的时候就会出现一个启动菜单让用户选择,如果没有选择将会自动启动默认的系统,那么双系统要怎么修改默认的启动项呢?今天系…

css 外边距合并

1. 当一个元素出现在另一个元素上面时,第一个元素的下外边距会和第二个元素的上边距合并(取较大值) 2. 当一个元素包含另一个元素中时(没有内边距或边框把外边距分隔开),会发生合并; 2.1条件父元素无边框 2.2 父元素和子元素外边距之间无其他分格元素 3.…