目录
if else条件语句
import sys
age = int( input("请输入你的年龄:") )
if age < 18 :
print("警告:你还未成年,不能使用该软件!")
print("未成年人应该好好学习,读个好大学,报效祖国。")
sys.exit() #sys 模块的 exit() 函数用于退出程序。
else:
print("你已经成年,可以使用该软件。")
print("时间宝贵,请不要在该软件上浪费太多时间。")
print("软件正在使用中...")
运行结果1:
请输入你的年龄:16
警告:你还未成年,不能使用该软件!
未成年人应该好好学习,读个好大学,报效祖国。
运行结果2:
请输入你的年龄:20
你已经成年,可以使用该软件。
时间宝贵,请不要在该软件上浪费太多时间。
软件正在使用中...
if else对缩进的要求
if、elif 和 else 后面的代码块一定要缩进,而且缩进量要大于 if、elif 和 else 本身。
age = int( input("请输入你的年龄:") )
if age < 18 :
print("警告:你还未成年,不能使用该软件!")
else:
print("你已经成年,可以使用该软件。")
结果:
#语法错误:需要一个缩进的代码块
IndentationError: expected an indented block
另外需要注意的是,不需要使用代码块的地方千万不要缩进,一旦缩进就会产生一个代码块。
if语句嵌套
if 表示式 1:
if 表达式 2:
代码块 1
else:
代码块 2
else:
if 表达式 3:
代码块 3
else:
代码块 4
pass语句及其作用
pass 是 Python 中的关键字,用来让解释器跳过此处,什么都不做。
有时候程序需要占一个位置,或者放一条语句,但又不希望这条语句做任何事情,此时就可以通过 pass 语句来实现。
age = int( input("请输入你的年龄:") )
if age < 12 :
print("婴幼儿")
elif age >= 12 and age < 18:
print("青少年")
elif age >= 18 and age < 30:
print("成年人")
elif age >= 30 and age < 50:
pass
else:
print("老年人")
print("结束————————")
结果:
请输入你的年龄:40
结束————————
assert断言函数
可以看做是功能缩小版的 if 语句,它用于判断某个表达式的值,
如果值为真,则程序可以继续往下执行;
反之,Python 解释器会报 AssertionError 错误。
assert 语句的语法结构为:
assert 表达式
assert 语句的执行流程可以用 if 判断语句表示,如下所示:
if 表达式==True:
程序继续执行
else:
程序报 AssertionError 错误
与其让程序在晚些时候崩溃,不如在错误条件出现时,就直接让程序崩溃,这有利于我们对程序排错,提高程序的健壮性。因此,assert 语句通常用于检查用户的输入是否符合规定,还经常用作程序初期测试和调试过程中的辅助工具。
print("请输入:" ,end="")
mathmark = int(input())
#断言数学考试分数是否位于正常范围内
assert 0 <= mathmark <= 100
#只有当 mathmark 位于 [0,100]范围内,程序才会继续执行
print("数学考试分数为:",mathmark)
结果:
请输入:1
数学考试分数为: 1
请输入:-1
Traceback (most recent call last):
AssertionError
while循环语句
while 语句的语法格式如下:
while 条件表达式:
代码块
打印 1~6 的所有数字,就可以使用 while 循环,实现代码如下:
# 循环的初始化条件
num = 1
# 当 num 小于100时,会一直执行循环体
while num < 7 :
print("num=", num)
# 迭代语句
num += 1
print("循环结束!")
结果:
num= 1
num= 2
num= 3
num= 4
num= 5
num= 6
循环结束!
for循环
常用于遍历字符串、列表、元组、字典、集合等序列类型,逐个获取序列中的各个元素。
for 循环的语法格式如下:
for 迭代变量 in 字符串|列表|元组|字典|集合:
代码块
格式中,迭代变量用于存放从序列类型变量中读取出来的元素,所以一般不会在循环中对迭代变量手动赋值;
代码块指的是具有相同缩进格式的多行代码(和 while 一样),由于和循环结构联用,因此代码块又称为循环体。
add = "www,baidu.com"
#for循环,遍历 add 字符串
for ch in add:
print(ch,end="")
结果:
www,baidu.com
循环结构中else用法
无论是 while 循环还是 for 循环,其后都可以紧跟着一个 else 代码块,它的作用是当循环条件为 False 跳出循环时,程序会最先执行 else 代码块中的代码。
嵌套循环实现冒泡排序
array = [3,2,6,2,1,4,9]
for i in range(len(array)-1):
for j in range(len(array)-i-1):
if(array[j]>array[j+1]):
array[j],array[j+1] = array[j+1],array[j]
print(array[i])
结果:
2
2
2
3
4
6
break、continue用法
- 使用 continue 语句,可以跳过执行本次循环体中剩余的代码,转而执行下一次的循环。
- 只用 break 语句,可以完全终止当前循环。
各种推导式(列表推导式、字典推导式、集合推导式)
推导式comprehensions(又称解析式),是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。 共有三种推导,在Python2和3中都有支持:
- 列表(list)推导式
- 字典(dict)推导式
- 集合(set)推导式
使用[]生成list
def squared(x):
return x * x
multiples = [squared(i) for i in range(30) if i % 3 is 0]
print(multiples)
结果:
[0, 9, 36, 81, 144, 225, 324, 441, 576, 729]
使用()生成generator
import sys
multiples = (i for i in range(18) if i % 3 is 0)
print(type(multiples))
print(multiples)
结果:
<class 'generator'>
<generator object <genexpr> at 0x000001A01E92B3C8>
#生成器进行输出
while True:
try:
print(next(multiples))
except StopIteration:
sys.exit()
结果:
0
3
6
9
12
15
大小写key合并(字典)
mcase = {'a': 10, 'b': 34, 'A': 7, 'Z': 3}
mcase_frequency = {
k.lower():
mcase.get(k.lower(), 0) + mcase.get(k.upper(), 0)
for k in mcase.keys()
if k.lower() in ['a','b']
}
print (mcase_frequency)
结果:
{'a': 17, 'b': 34}
快速更换key和value(字典)
mcase = {'a': 10, 'b': 34}
mcase_frequency = {v: k for k, v in mcase.items()}
print (mcase_frequency)
结果:
{10: 'a', 34: 'b'}
集合推导式
squared = {x**2 for x in [1, 1, 2]}
print(squared)
结果:
{1, 4}
zip函数及用法
它可以将多个序列(列表、元组、字典、集合、字符串以及 range() 区间构成的列表)“压缩”成一个 zip 对象。
所谓“压缩”,其实就是将这些序列中对应位置的元素重新组合,生成一个个新的元组。
zip() 函数的语法格式为:
zip(iterable, ...)
其中 iterable,... 表示多个列表、元组、字典、集合、字符串,甚至还可以为 range() 区间。
my_list = [11,12,13]
my_tuple = (21,22,23)
print([x for x in zip(my_list,my_tuple)])
结果:
[(11, 21), (12, 22), (13, 23)]
my_dic = {31:2,32:4,33:5}
my_set = {41,42,43,44}
print([x for x in zip(my_dic)])
结果:
[(31,), (32,), (33,)]
my_pychar = "python"
my_shechar = "shell"
print([x for x in zip(my_pychar,my_shechar)])
结果:
[('p', 's'), ('y', 'h'), ('t', 'e'), ('h', 'l'), ('o', 'l')]
在使用 zip() 函数“压缩”多个序列时,它会分别取各序列中第 1 个元素、第 2 个元素、... 第 n 个元素,各自组成新的元组。需要注意的是,当多个序列中元素个数不一致时,会以最短的序列为准进行压缩。
可以通过调用 list() 函数将 zip() 对象强制转换成列表。
reversed函数及用法
功能是对于给定的序列(包括列表、元组、字符串以及 range(n) 区间),该函数可以返回一个逆序序列的迭代器(用于遍历该逆序序列)。使用 reversed() 函数进行逆序操作,并不会修改原来序列中元素的顺序。
reserved() 函数的语法格式如下:
reversed(seq)
其中,seq 可以是列表,元素,字符串以及 range() 生成的区间列表。
#将列表进行逆序
print([x for x in reversed([1,2,3,4,5])])
结果:[5, 4, 3, 2, 1]
#将元组进行逆序
print([x for x in reversed((1,2,3,4,5))])
结果:[5, 4, 3, 2, 1]
#将字符串进行逆序
print([x for x in reversed("abcdefg")])
结果:['g', 'f', 'e', 'd', 'c', 'b', 'a']
#将 range() 生成的区间列表进行逆序
print([x for x in reversed(range(10))])
结果;[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
#将列表进行逆序,还可以使用 list() 函数,将 reversed() 函数逆序返回的迭代器,直接转换成列表。
print(list(reversed([1,2,3,4,5])))
结果:[5, 4, 3, 2, 1]
sorted函数
其功能是对序列(列表、元组、字典、集合、还包括字符串)进行排序。
使用 sorted() 函数对序列进行排序, 并不会在原序列的基础进行修改,而是会重新生成一个排好序的列表。
sorted()函数默认对序列中元素进行升序排序,通过手动将其 reverse 参数值改为 True,可实现降序排序。
还可传入一个 key 参数,它可以接受一个函数,该函数的功能是指定 sorted() 函数按照什么标准进行排序。
sorted() 函数的基本语法格式如下:
list = sorted(iterable, key=None, reverse=False)
其中,iterable 表示指定的序列,key 参数可以自定义排序规则;reverse 参数指定以升序(False,默认)还是降序(True)进行排序。sorted() 函数会返回一个排好序的列表。
注意,key 参数和 reverse 参数是可选参数,即可以使用,也可以忽略。
#对列表进行排序
a = [5,3,4,2,1]
print(sorted(a))
结果:[1, 2, 3, 4, 5]
#对元组进行排序
a = (5,4,3,1,2)
print(sorted(a))
结果:[1, 2, 3, 4, 5]
#字典默认按照key进行排序
a = {4:1,\
5:2,\
3:3,\
2:6,\
1:8}
print(sorted(a.items()))
结果:[(1, 8), (2, 6), (3, 3), (4, 1), (5, 2)]
#对集合进行排序
a = {1,5,3,2,4}
print(sorted(a))
结果:[1, 2, 3, 4, 5]
#对字符串进行排序
a = "51423"
print(sorted(a))
结果:['1', '2', '3', '4', '5']