相比烙铁们都耳熟能详,直接上代码:
>>> score = 87
>>> if score < 60:
... print('不及格')
... elif score < 80:
... print('及格')
... elif score < 90:
... print('良好')
... else:
... print('优秀')
...
良好
以下为if中常用的操作运算符:
操作符 | 描述 |
---|---|
< | 小于 |
<= | 小于或等于 |
> | 大于 |
>= | 大于或等于 |
== | 等于,比较两个值是否相等 |
!= | 不等于,比较两个值是否不相等 |
Python 3.10 增加了 match…case 的条件判断,类似于Java与Javascript中的switch语句,解释器中代码如下:
>>> gender = 'male'
>>> match gender:
... case 'male':
... print('boy')
... case 'female':
... print('girl')
... case _:
... print('Are you sure?')
...
boy
Python for 循环可以遍历任何可迭代对象,如一个列表或者一个字符串,解释器中代码如下:
>>> list = [1,2,3,4,5]
>>> str = 'Richie'
>>> for num in list: # 遍历数组
... print(num)
...
1
2
3
4
5
>>> for word in str: # 遍历字符串
... print(word)
...
R
i
c
h
i
e
也可以配合 range() 函数使用,解释器中代码如下:
>>> for num in range(1,11,2):
... print(num)
...
1
3
5
7
9
在 Python 中,for…else 语句用于在循环结束后执行一段代码,解释器中代码如下:
>>> for num in range(6):
... print(num)
... else:
... print('循环结束咯~')
...
0
1
2
3
4
5
循环结束咯~
如果在循环过程中遇到了 break 语句,则会中断循环,此时不会执行 else 子句,解释器中代码如下:
>>> for num in range(6):
... if num == 3:
... break
... else:
... print(num)
... else:
... print('输出不了这句话的!!!')
...
0
1
2
使用了 while 来计算 1 到 100 的总和,解释器中代码如下:
>>> end_num = 100
>>> sum_num = 0
>>> start_num = 1
>>> while start_num <= 100:
... sum_num += start_num
... start_num += 1
...
... sum_num
5050
无限循环
注意:以下的无限循环你可以使用 CTRL+C 来中断循环
>>> num = 1
while num == 1: # 此处条件永远为Ture
... print('停不下来啦!!!!')
...
停不下来啦!!!!
停不下来啦!!!!
停不下来啦!!!!
停不下来啦!!!!
停不下来啦!!!!
................
在 Python 中,while…else 语句用于在循环结束后执行一段代码,解释器中代码如下:
>>> num = 0
>>> while num < 5:
... print(num)
... num += 1
... else:
... print('循环结束咯~')
...
0
1
2
3
4
循环结束咯~
如果在循环过程中遇到了 break 语句,则会中断循环,此时不会执行 else 子句,解释器中代码如下:
>>> num = 0
>>> while num < 5:
... if num == 3:
... break
... else:
... print(num)
... num += 1
... else:
... print('到不了这里的~')
...
0
1
2
break 语句可以跳出 for 和 while 的循环体,如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行
>>> list = [1,2,3,4,5]
>>> for num in list:
... if num == 3:
... break
... else:
... print(num)
... else:
... print('循环到不了这里的~')
...
1
2
continue 语句被用来告诉 Python 跳过当前循环块中的剩余语句,然后继续进行下一轮循环
>>> list = [1,2,3,4,5]
>>> for num in list:
... if num == 3:
... continue
... else:
... print(num)
... else:
... print('循环能到这里~')
...
1
2
4
5
循环能到这里~
pass 不做任何事情,一般用做占位语句
>>> list = [1,2,3,4,5]
>>> for num in list:
... if num == 3:
... pass
... print('上面那个pass啥用也没')
... else:
... print(num)
... else:
... print('循环能到这里~')
...
1
2
上面那个pass啥用也没
4
5
循环能到这里~
过滤掉长度小于或等于3的字符串列表,并将剩下的转换成大写字母,解释器中代码如下:
>>> list = ['Mike','nancy','dog','cat','Richie']
>>> new_list = [name.upper() for name in list if len(name) > 3]
>>> new_list
['MIKE', 'NANCY', 'RICHIE']
将列表中各字符串值为键,各字符串的长度为值,组成键值对来创建一个字典,解释器中代码如下:
>>> name = ['Richie','Mike','Nancy','Doggy','Taylor Swift']
>>> name_dict = {name1:len(name1) for name1 in name}
>>> name_dict
{'Richie': 6, 'Mike': 4, 'Nancy': 5, 'Doggy': 5, 'Taylor Swift': 12}
计算数字 1,2,3 的平方数,解释器中代码如下:
>>> set = {num ** 2 for num in range(1,4)}
>>> set
{1, 4, 9}
元组推导式和列表推导式的用法也完全相同,只是元组推导式是用 () 圆括号将各部分括起来,而列表推导式用的是中括号 [],另外元组推导式返回的结果是一个生成器对象
我们可以使用下面的代码生成一个包含数字 1~9 的元组,解释器中代码如下:
>>> tup1 = (num for num in range(1,10))
>>> tup1
<generator object <genexpr> at 0x00000249FE704940>
>>> tuple(tup1)
(1, 2, 3, 4, 5, 6, 7, 8, 9)
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段
定义一个函数有以下的规则:
举个简单的例子,解释器中代码如下:
>>> def say_hello():
... print('Hello')
...
>>> say_hello()
Hello
给上述例子加个参数,解释器中代码如下:
>>> def say_hello(name):
... print('Hello,' + name)
...
>>> say_hello('Richie')
Hello,Richie
再来个计算面积的函数,使用return来返回面积的值以供调用函数者来使用,解释器中代码如下:
>>> def calculate_area(width,height):
... area = width * height
... return area # return语句用于退出函数并返回值供调用者使用
...
>>> print(calculate_area(10,20))
200
函数参数分为以下几个类型:
必须参数,顾名思义,调用函数时必须要给的参数,解释器中代码如下:
>>> def sayHello(name):
... print('Hello,' + name)
...
>>> sayHello() # 不给name参数会报错
TypeError: sayHello() missing 1 required positional argument: 'name'
>>> sayHello('Taylor Swift')
Hello,Taylor Swift
关键词参数,使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值,解释器中代码如下:
>>> def sayHello(name,age):
... print(name + str(age) + '岁了')
...
>>> sayHello('Richie',22)
Richie22岁了
>>> sayHello(name='Richie',age=22)
Richie22岁了
>>> sayHello(age=22,name='Richie') # 顺序不对也没事,因为python可以用参数名来匹配参数值
Richie22岁了
默认参数,调用函数时,如果没有传递参数,则会使用默认参数
>>> def sayHello(name,age=18):
... print(name + str(age) + '岁了')
...
>>> sayHello('Richie') # 使用了默认值
Richie18岁了
>>> sayHello('Richie',22)
Richie22岁了
不定长参数,你可能需要一个函数能处理比当初声明时更多的参数,这些参数叫做不定长参数,不定长参数声明时不会命名,加了星号 * 的参数会以元组的形式导入,存放所有未命名的变量参数,如果在函数调用时没有指定参数,它就是一个空元组,解释器中代码如下:
>>> def printNum(num1,*anotherNum):
... print(num1)
... print(anotherNum)
...
>>> printNum(1,2,3,4,5,6,7)
1
(2, 3, 4, 5, 6, 7)
还有一种就是参数带两个星号 ** 的,加了两个星号 ** 的参数会以字典的形式导入,解释器中代码如下:
>>> def printInfo(info1,**anotherInfo):
... print(info1)
... print(anotherInfo)
...
>>> printInfo('Richie',age=22,gender='male')
Richie
{'age': 22, 'gender': 'male'}
其他情况的参数
声明函数时,参数中星号 * 可以单独出现,如果单独出现星号 *,则星号 * 后的参数必须用关键字传入,解释器中代码如下:
>>> def func1(a,b,*,c,d):
... return a + b + c + d
...
>>> func1(1,2,3,4)
TypeError: func1() takes 2 positional arguments but 4 were given
>>> func1(1,2,c = 3,d = 4)
10
强制位置参数
Python3.8 新增了一个函数形参语法 / 用来指明函数形参必须使用指定位置参数,不能使用关键字参数的形式
在以下的例子中,形参 a 和 b 必须使用指定位置参数,c 或 d 可以是位置形参或关键字形参,而 e 和 f 要求为关键字形参, 解释器中代码如下:
>>> def func1(a,b,/,c,d,*,e,f):
... print(a,b,c,d,e,f)
...
>>> func1(1,2,3,4,e=5,f=6) # 正确
1 2 3 4 5 6
>>> func1(1,b=2,c=3,d=4,5,6) # 错误
File "" , line 1
func1(1,b=2,c=3,d=4,5,6)
^
SyntaxError: positional argument follows keyword argument
>>> func1(1,2,3,4,5,6) # 错误
Traceback (most recent call last):
File "" , line 1, in <module>
TypeError: func1() takes 4 positional arguments but 6 were given
Python 使用 lambda 来创建匿名函数
lambda 函数是一种小型、匿名的、内联函数,它可以具有任意数量的参数,但只能有一个表达式
匿名函数不需要使用 def 关键字定义完整函数
lambda 函数通常用于编写简单的、单行的函数,通常在需要函数作为参数传递的情况下使用,例如在 map()、filter()、reduce() 等函数中
lambda函数的特点:
以下的 lambda 函数没有参数,解释器中代码如下:
>>> func1 = lambda:'Hello,Richie'
>>> func1
<function <lambda> at 0x000001DA30028A40>
>>> print(func1())
Hello,Richie
设置一个参数,解释器中代码如下:
>>> func1 = lambda a : a + 10
>>> func1
<function <lambda> at 0x000001E6635F8A40>
>>> print(func1(10))
20
设置多个参数,解释器中代码如下:
>>> func1 = lambda a,b,c : a + b + c
>>> func1
<function <lambda> at 0x000002875CD98A40>
>>> func1(1,2,3)
6
lambda 函数通常与内置函数如 map()、filter() 和 reduce() 一起使用,以便在集合上执行操作,解释器中代码如下:
>>> numberList = [1,2,3,4,5]
>>> numberList1 = list(map(lambda x : x**2,numberList))
>>> numberList1
[1, 4, 9, 16, 25]