Project Python是一本免费的交互式书籍,它通过使用图形、动画和游戏来教你用 Python编写代码。后面你还将学到解决经典计算机科学问题的方法,软件设计的原则,以及如何分析算法性能。...即使基础薄弱你也不会感到吃力;在第一章结束时,你就可以学会用 Python 画出一个笑脸。(我们建议使用 Chrome 或 Firefox 的最新版本来运行交互式示例。)...本书中涉及的内容有: 在内容下面,可以进入 Project Python 。 在这里,知识讲解的语言简练,代码配合知识,还可以马上看到演示结果,在每一个 Exercise 之后,也给出了答案。...之后就是练习时间了,作者很贴心的给了答案链接,不过大家还是要自己先独立实践一下! 在学习完第一章后,大家就可以试着用 Python 画出一个笑脸了。...答案当然是有的,就在下面的链接里,等你去 pick 它。
下午ytkah在自己小博客搜索时看到有几篇文章图片显示不了,再访问一些网站时发现有些图片无法显示出来,显示"此图片来自微信公众号平台未经允许不可引用",如下图所示,这个应该是最近微信团队对有原创保护能力的公众帐号又一举措...没错,第三方网站调用QQ空间里面的图片也是不能完整显示,提示“此图片来自QQ空间,未经允许不可引用”。 ...其实,腾讯这些措施应该也是无赖之举,微信公众平台已有近800万公众号入驻了,很多公众号的单篇图文消息都超过了10+阅读量,可以想象整个公众平台每天的流量有多大,图文消息里面的图片多的话,服务器的负载也是快超负荷了...这也促使了一批采集类网站站长的青睐,如果大量的第三方网站调用微信公众平台,那微信服务器就更亚历山大了,所以微信团队只好出此对策。 网站上显示微信公众平台上图片未经允许不可使用怎么办?...复制文章标题或选取文中一小段文字直接在搜狗微信搜索(weixin.sogou.com)搜一下,基本上可以找到相对应的微信图文消息,图片也可以看得到,想下载的话点击右键 - 图片另存 就可以了 最近测试了一种新方法很实用
TypeError: unhashable type: 'dict'在Python编程中,TypeError是一种常见的错误类型。...而可变(mutable)对象,如列表和字典,就不能被哈希。TypeError: unhashable type: 'dict'错误的原因在Python中,字典是可变的,也就是说它们可以被修改。...希望本篇文章对你理解TypeError: unhashable type: 'dict'错误,并解决相关问题提供了帮助。在Python编程中,对错误的正确理解和解决是成长为一名优秀开发者的重要一步。...10 # 更新元素print(list1) # 输出: [10, 3, 4]不可变(immutable)对象: 不可变对象是指它的值创建后就不能改变的对象。...pythonCopy code# 字符串是不可变对象的例子str1 = "Hello"str2 = str1.upper() # 调用字符串的upper()方法,返回一个新的字符串print(str1
python编程时是尽量去使用自定义类型还是尽可能多的使用内置类型呢? 内置类型对python本身来讲它的理解能力更好一点,对其执行时所能够带来的性能上也会更好一点。...python对象的相关术语: python程序中保存的所有数据都是围绕对象这个概念展开的: 程序中存储的所有数据都是对象。 每个对象都有一个身份、一个类型和一个值。 ...实例被创建后,其身份和类型就不可改变 如果对象值是可修改的,则称为可变对象; 如果对象值不可修改,则称为不可变对象 如果某个对象包含对其它对象的引用,则将其称为容器。 ...对实例内部的数据可以执行某些类型的操作,这些操作只能是附加在这些实例上的操作,这些操作是由类在内部定义的。 一个对象在内存中存储,如果有变量名指向它,它就被引用了。 ...对于属性来说,通过点号运算符来访问时返回一个数据,若想显示则要使用print语句; 对于方法来说,调用时则执行对应方法内部的代码。 使用内置函数dir()来获取对象支持的属性和方法。
代码对缩进的要求非常严格,代码缩进层级决定了代码的所属关系。..., in x.count(3) AttributeError: 'set' object has no attribute 'count' 错误原因分析与解决方案: 错误信息显示当前对象并不具有一个叫做...: 'str' object does not support item assignment 错误原因分析与解决方案: 在自己编写代码时,一般并不会发生这样的错误,因为作为Python程序员我们肯定知道元组和字符串是不可变的容易对象...遇到这种错误时,一般是调用了其他函数或方法而不知道该函数或方法返回的是元组或字符串或其他不可变容易对象,应仔细检查出现错误的代码之前的函数或方法调用代码。...中,列表、元组、字符串和range对象支持使用整数作为下标去访问指定位置上的元素值;列表支持使用整数作为下标去修改指定位置上的元素值;字典支持使用指定的键去访问或修改对应的值。
空的列表返回true print(all([1, 2, 0])) # 列表中的0是False,所以返回False print(all([1, 2, 5])) # 列表中的所有值都是True,所以返回...空的列表返回false any()列表中的任意一个为True,就返回True print(any([1, 2, 0])) print(any([1, 2, 5])) # 列表中的任意一个是True...: 'int' object is not iterable 26.callable()判断是否可调用,即通过abs()方式调用,函数是可调用的,可用于判断是否是函数 callable()判断是否可调用...,即通过abc()方式调用 函数是可调用的,可用于判断是否是函数 >>> callable(abs) True >>> callable(list) True >>> callable([1,2,3])...值 不可变数据类型才是可hash的,包含整数,字符串,元组,都是不可变的,是可hash的 >>> hash("12") 8731980002792086209 >>> hash("123") -1620719444414375290
在本例中,定义了整数列表, 将sorted作为数字变量进行参数调用....此示例显示了sorted()的四个重要特征: 1. Sorted()函数不需要被定义。它是一个内置的函数, 可在Python的标准安装中使用。 2. ...'int' and 'NoneType' 此错误显示了为什么 Python 无法对给定的值进行排序的原因。...下面的示例显示了带有两个参数的加法函数的定义。 当该函数用于数字列表中的键时,它会失败,因为它缺少第二个参数。...每次在排序期间调用add()时,它一次只从列表中接收一个元素: >>> def add(x, y):...
注意:调用字符串方法的方法 像这样的字符串方法.split()在这里主要显示为在字符串上调用的实例方法。它们也可以被称为静态方法,但这并不理想,因为它更“冗长”。...一个常见的例子是在列表上使用的.append()方法:当你调用一个列表时,通过将输入添加到同一个列表来直接更改该列表。....,这展示了 Python 中字符串的不变性:后续调用.split()处理原始字符串,而不是第一次调用.split()....练习:“部分理解检查”显示隐藏 您最近收到了一个格式非常糟糕的逗号分隔值 (CSV) 文件。您的工作是将每一行提取到一个列表中,该列表的每个元素代表该文件的列。是什么让它格式错误?...顾名思义,它告诉正在读取字符串的任何人,它后面的每个字符都应该显示在下一行。在像我们这样的多行字符串中,每行末尾input_string都有一个隐藏\n。 最后一部分可能是新的:[1:].
该错误发生在如下代码中: 4)在for循环语句中忘记调用len()(导致“TypeError: ‘list’ object cannot be interpreted as an integer”) 通常你想要通过索引来迭代一个...list或者string的元素,这需要调用range()函数。...该错误发生在如下代码中: 5)尝试修改string的值(导致“TypeError: ‘str’ object does not support item assignment”) string是一种不可变的数据类型...before assignment”) 在函数中使用局部变来那个而同时又存在同名全局变量时是很复杂的,使用规则是:如果在函数中定义了任何东西,如果它只是在函数中使用那它就是局部的,反之就是全局变量。...该错误发生在如下代码中: 15)尝试使用 range()创建整数列表(导致“TypeError: ‘range’ object does not support item assignment”) 有时你想要得到一个有序的整数列表
先铺垫一个小知识,列表的魔法函数 __iadd__ 相当于列表的 extend 函数,但是会返回扩展后的结果: >>> [1,2,3]....异常,告诉我们,元组不支持元素赋值,此时,你会选择 C,但是打印第一个元素(列表)时发现列表添加了 'z',你又选择了 B。...你又想了想,Python 是不是搞错了,既然你不支持元组内的元素重新赋值,还让它赋值了,是不是搞错了,你想选择 D。 所以这很 crazy ! 现在来一起梳理一下。...总结:元组的不可变,在于元组内元素的地址不可变。如果元组内元素是字符串、数字、元组等不可变对象,其内容永久不变,如果元组内元素是是列表、字典、集合等可变对象,其内容可以被改变。...具体可参考前文Python 基础系列--可变/不可变的数据类型 最后的话 本文分享了一道有趣的 Python 题目,希望对你对 Python 编程有所思考。独学而无友,则孤陋而寡闻
该错误发生在如下代码中: 4.在 for 循环语句中忘记调用 len() 提示:“TypeError: 'list' object cannot be interpreted as an integer...” 通常你想要通过索引来迭代一个list或者string的元素,这需要调用 range() 函数。...该错误发生在如下代码中: 5.尝试修改string的值 提示:“TypeError: 'str' object does not support item assignment” string是一种不可变的数据类型...使用规则是: 如果在函数中定义了任何东西,如果它只是在函数中使用那它就是局部的,反之就是全局变量。...该错误发生在如下代码中: 15.尝试使用 range()创建整数列表 提示:“TypeError: 'range' object does not support item assignment” 有时你想要得到一个有序的整数列表
字符和元组属于不可变序列,而列表则支持插入、删除和替换元素 所有序列都支持迭代 如果要使用unicode编码,则在字符之前使用字符u进行标识,如u“magedu” 文档字符串:模块、类或函数的第一条语句是一个字符串的话...: list(s)可将任意可迭代类型转换为列表,而如果s已经是一个列表,则该函数构造的新列表是s的一个浅复制 ?...l1+l2:是合并2个列表,返回一个新的列表,不会修改原列表 l1*N:把l1重复N次,返回一个新列表 in:成员判定符, not in: 列表解析:[ ] In [76]: l1=[1,23,"xj"...} {}:空字典 映射类型表示一个任意对象的集合,而且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,它通过键进行索引 任何不可变对象都可用作字典的键...返回一个数据,显示则要使用print语句 方法:操作(),就是函数 调用,执行一段代码 括号:调用可调用对象(函数,类,对象中的方法) 3
4)在 for 循环语句中忘记调用 len() (导致“TypeError: 'list' object cannot be interpreted as an integer”) 通常你想要通过索引来迭代一个...list或者string的元素,这需要调用 range() 函数。...是一种不可变的数据类型,该错误发生在如下代码中: [python] view plaincopy spam = 'I have a pet cat.'...使用规则是:如果在函数中定义了任何东西,如果它只是在函数中使用那它就是局部的,反之就是全局变量。...”) 有时你想要得到一个有序的整数列表,所以 range() 看上去是生成此列表的不错方式。
可变数据类型 不可变数据类型 在Python当中的列表(List)、字典(Dict) 是属于可变数据类型。...不可变类型:在内存当中一旦进行了定义并且指定了内容之后,便不再允许进行修改了。 不可变类型: 在内存当中分配了空间的话,我们是可以通过变量名调用方法来去修改它的列表或者是字典当中的内容的。...通过方法进行调用可以做到通过方法调用(appedn、pop...)列表字典的内容发生变化,但是它们的内存地址是依旧不会发生变化的。...因此对 a、b任意一个列表进行修改都会影响到另外一个列表的值。 哈希(hash) Python 当中内置有一个名字叫做 hash(o) 的函数。...接收一个不可变类型的数据作为它的参数,注:整形(int)、浮点型(float)、字符串型(string)、元组(Tuple) 是属于不可变数据类型。 接收一个不可变的数据类型作为参数。
; 元组:封闭的列表,一旦定义,就不可改变(不能添加、删除或修改) 16、元组推导式 tuple1 = (x**2 for x in range(10)) tuple1是一个生成器,用next()方法调用...,使用nonlocal关键字; 21、递归 函数调用自身 设置了正确的返回条件 22、字典 字典不支持一键多值。...__init__() should return None 32、子类定义了父类的方法 当子类定义了与父类相同的属性和方法时,会将父类属性或方法覆盖,子类对象调用的时候会调用到覆盖之后的新属性或方法...如果第二个参数不是类或者由类对象组成的元祖,会抛出一个 TypeError 异常。...它跟其他魔法方法不同,它的第一个参数不是 self 而是这个类(cls),而其他的参数会直接传递给 init() 方法的。
4)在 for 循环语句中忘记调用 len() (导致“TypeError: 'list' object cannot be interpreted as an integer”) 通常你想要通过索引来迭代一个...list或者string的元素,这需要调用 range() 函数。...“TypeError: 'str' object does not support item assignment”) string是一种不可变的数据类型,该错误发生在如下代码中: spam = 'I...(导致“TypeError: 'range' object does not support item assignment”) 有时你想要得到一个有序的整数列表,所以 range() 看上去是生成此列表的不错方式...该错误发生在如下代码中: spam = 1 spam++ 也许这才是你想做的: spam = 1 spam += 1 17)忘记为方法的第一个参数添加self参数(导致“TypeError: myMethod
11.问:在我的代码中x是一个列表,我使用y=x.sort()语句把它排序后的结果赋值给y,然后使用y.index(3)查看3在y中的下标时,为什么会提示“AttributeError: 'NoneType...12.问:我创建了一个集合,想在里面加入一个列表作为元素,结果提示“TypeError: unhashable type: 'list'”,这是什么意思呢?...答:在Python中,不可哈希(unhashable)和可变的意思是一样的。整数、实数、复数、字符串、元组这些是不可变的,或者说是可哈希的。而列表、字典、集合是可变的,或者说是不可哈希的。...13.问:我调用函数时提示“TypeError: f() missing 2 required positional arguments: 'a' and 'b'”,该怎么办呢?...答:在Python中,元组和字符串这样的容器类对象是不可变的,不支持其中元素的增加、修改和删除操作。
4)在 for 循环语句中忘记调用 len() (导致“TypeError: ‘list’ object cannot be interpreted as an integer”) 通常你想要通过索引来迭代一个...list或者string的元素,这需要调用 range() 函数。...“TypeError: ‘str’ object does not support item assignment”) string是一种不可变的数据类型,该错误发生在如下代码中: spam = 'I...(导致“TypeError: ‘range’ object does not support item assignment”) 有时你想要得到一个有序的整数列表,所以 range() 看上去是生成此列表的不错方式...该错误发生在如下代码中: spam = 1spam++ 也许这才是你想做的: spam = 1spam += 1 17)忘记为方法的第一个参数添加self参数(导致“TypeError: myMethod
4)在 for 循环语句中忘记调用 len() (导致“TypeError: 'list' object cannot be interpreted as an integer”) 通常你想要通过索引来迭代一个...list或者string的元素,这需要调用 range() 函数。...(导致“TypeError: 'str' object does not support item assignment”) string是一种不可变的数据类型,该错误发生在如下代码中: spam =...(导致“TypeError: 'range' object does not support item assignment”) 有时你想要得到一个有序的整数列表,所以 range() 看上去是生成此列表的不错方式...该错误发生在如下代码中: spam = 1 spam++ 也许这才是你想做的: spam = 1 spam += 1 17)忘记为方法的第一个参数添加self参数(导致“TypeError:
随着代码量的积累,熟能生巧当遇到一些运行时错误时能够很快的定位问题原题。下面整理了一些常见的 17 个错误,等你写出的代码不怎么出现这些错误的时候,你的 Python 功力就上一个台阶了。...4 在 for 循环语句中忘记调用 len() 导致“TypeError: 'list' object cannot be interpreted as an integer” 通常你想要通过索引来迭代一个...list或者string的元素,这需要调用 range() 函数。...“TypeError: 'str' object does not support item assignment” string是一种不可变的数据类型,该错误发生在如下代码中: spam = 'I have...导致“TypeError: 'range' object does not support item assignment” 有时你想要得到一个有序的整数列表,所以 range() 看上去是生成此列表的不错方式
领取专属 10元无门槛券
手把手带您无忧上云