-
支持倒序访问list中的每一个元素
-1开始
查看全部 -
list里面,每一个元素都有一个唯一的位置,我们称之为索引(index),通过中括号
[]
来按位置访问对应的元素。查看全部 -
Python中raw字符串与多行字符串
如果一个字符串包含很多需要转义的字符,对每一个字符都进行转义会很麻烦。为了避免这种情况,我们可以在字符串前面加个前缀
r
,表示这是一个 raw 字符串,里面的字符就不需要转义了。例如:r'\(~_~)/ \(~_~)/'
但是
r'...'
表示法不能表示多行字符串,也不能表示包含'
和"
的字符串。如果要表示多行字符串,可以用
'''...'''
表示:'''Line 1 Line 2 Line 3'''
上面这个字符串的表示方法和下面的是完全一样的:
'Line 1\nLine 2\nLine 3'
还可以在多行字符串前面添加
r
,把这个多行字符串也变成一个raw字符串:r'''Python is created by "Guido". It is free and easy to learn. Let's start learn Python in imooc!'''
任务
请把下面的字符串用
r'''...'''
的形式改写,并用print打印出来:'\"To be, or not to be\": that is the question.\nWhether it\'s nobler in the mind to suffer.'
查看全部 -
Python的布尔类型
前面我们了解到,布尔类型是Python的基础数据类型,布尔类型只有True和False两种值,本节课我们学习布尔类型的集中运算。
与运算
只有两个布尔值都为 True 时,计算结果才为 True。
True and True # ==> True True and False # ==> False False and True # ==> False False and False # ==> False
或运算
只要有一个布尔值为 True,计算结果就是 True。
True or True # ==> True True or False # ==> True False or True # ==> True False or False # ==> False
非运算
把True变为False,或者把False变为True:
not True # ==> False not False # ==> True
这些运算有什么用呢?计算机程序是由无数的逻辑分支组成的,通过布尔运算,可以在计算机中实现条件判断,根据计算结果为True或者False,计算机可以自动执行不同的后续代码,因此学习布尔运算也是非常有必要的。
在Python中,布尔类型还可以与其他数据类型(字符串,数字等)做 and、or和not运算,请看下面的代码:
a = True print(a and 0 or 99) # ==> 99
得到的计算结果不是布尔类型,而是数字99,这是为什么呢?
因为Python把0、空字符串和None看成False,其他数值和非空字符串都看成True,所以:
True and 0
计算结果是0
继续计算0 or 99
计算结果是 99
因此,结果是99。
需要注意的是,not计算的优先级是高于and和or的。True and not False # ==> True
在上述布尔计算中,先计算
not False = True
,然后再计算True and True
,因此得到True的结果。短路计算
在计算
a and b
时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。在计算
a or b
时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。
所以Python解释器在做布尔运算时,只要能提前确定计算结果,它就不会往后算了,直接返回结果。
任务
请运行如下代码,并解释打印的结果:
a = 'python' print('hello,', a or 'world') b = '' print('hello,', b or 'world')
查看全部 -
函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。
查看全部 -
函数可以返回None、一个值、多个值
查看全部 -
......
查看全部 -
abs()函数:求绝对值
cmp():比较两数大小 cmp(x,y) x>y结果为1 =为0 <为-1
int()函数可以将合法的其它类型数据转换为整数
str()函数可以将其它类型的数据转换为字符串
sum()函数接收一个list作为参数,并返回list所有元素之和
查看全部 -
Python把0、空字符串和None看成False,其他数值和非空字符串都看成True
短路计算
在计算
a and b
时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。在计算
a or b
时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。
查看全部 -
取模运算
Python数字支持取模运算,使用百分号
%
表示取模。print(3 % 2) # ==> 1 print(33 % 10) # ==> 3 print(99 % 30) # ==> 9
恰当使用取模运算,可以判断一个数是否为偶数,当一个数对2取模结果为0时,则这个数为偶数,否则为奇数。
print(3 % 2) # ==> 1 因此3为奇数 print(33 % 2) # ==> 1 因此33为奇数 print(100 % 2) # ==> 0 因此100为偶数
地板除
Python除了普通除法以外,还有一个特殊的除法被称为
地板除
,对于地板除
,得到的结果会忽略纯小数的部分,得到整数的部分,地板除使用//
进行。10//4 # ==> 2 10//2.5 # ==> 4.0 10//3 # ==> 3
小数点位数
使用Python计算小数的时候,经常需要保留小数点后若干位,可以使用round()函数来处理,这里先了解round的调用方式,使用两个参数,第一个是需要保留小数点位数的数值,第二个是保留的位数。
num = 10 / 3 print(num) # ==> 3.3333333333333335 # 使用round保留两位小数 round(num, 2) # ==> 3.33
查看全部 -
整数
整数和我们生活中定义的整数是一个概念,例如:
1
,2
,3
,10
,100
,1000
,-1000
等等,都是整数,Python可以处理任意大小的整数。对于整数,除了生活中常用的十进制以外,计算机由于使用二进制,所以,在计算机中也常用二进制或者十六进制表示整数。相比十进制数,在Python中使用以下方式表示二进制数和十六进制数。
二进制数只使用数字0、1表示,在Python中,二进制整数使用前缀
0b
表示,比如:0b0110
,0b1100
。十六进制数除了0~9十个数字以外,还使用a、b、c、d、e、f,在Python中,十六进制使用前缀
0x
,比如:0x12ef
,0xde2431af
。十进制数、二进制数和十六进制数之间是可以相互转换的,如果感兴趣的同学,可以学习《编程必备基础知识》了解更多转换的细节。
浮点数
浮点数对应我们生活的是小数,例如:
0.1
,0.5
,12.34
,3.1415926
等,都是浮点数。为什么小数在计算机领域被称为浮点数呢?这是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的(浮动的),比如,
1.23x10^9
和12.3x10^8
是相等的,因此称为浮点数。浮点数可以用数学写法,如
1.23
,3.14
,-9.01
。但是对于很大或很小的浮点数,就必须用科学计数法表示,在Python中,把10用e替代,比如:1.23x10^9
就是1.23e9
,或者12.3e8
,0.000012
可以写成1.2e-5
,同学可以自行举出更多的例子。这里有必要提醒一点就是,整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的,而浮点数运算则可能会有四舍五入的误差,如何检验,可以在Python终端中输入以下内容
0.1 + 0.2
,看看可以得到你期望的结果0.3
吗?真实结果可能让你失望了。查看全部 -
变量名由大小写英文字母、数字和下划线
_
组成变量不能用数字开头
变量尽量不要和Python关键字重合(比如前面学习过的:and、or、not,否则可能导致Python原有关键字发挥不出作用)
查看全部 -
s1 = 'ABC' s2 = '123' for x in s1: for y in s2: print(x + y)
在上述代码中,对于外层循环,外层每循环1次,内层就会循环3次
查看全部 -
使用continue,我们可以控制循环继续下去,并跳过continue后面的逻辑,
s=0
num=0
while num<=1000:
num=num+1
if num%2==1:
continue
s=s+num
print(s)
查看全部 -
set提供了remove()方法允许我们删除set中的元素。
使用remove()方法,我们需要格外小心,需要提前判断要remove()的元素是否在set里面,确保存在后,再进行remove。
L = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
S = set([1, 3, 5, 7, 9, 11])
for item in L:
if item in S:
S.remove(item)
else:
S.add(item)
print(S)
查看全部
举报