Python流程控制(循环、判断等)

目录

if else条件语句

if else对缩进的要求

if语句嵌套

pass语句及其作用

assert断言函数

 while循环语句

for循环

循环结构中else用法

嵌套循环实现冒泡排序

break、continue用法

各种推导式(列表推导式、字典推导式、集合推导式)

使用[]生成list

使用()生成generator

大小写key合并(字典)

快速更换key和value(字典)

集合推导式

zip函数及用法

reversed函数及用法

sorted函数


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用法

  1. 使用 continue 语句,可以跳过执行本次循环体中剩余的代码,转而执行下一次的循环。
  2. 只用 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']

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萌新待开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值