Python的控制流语句使用

判断语句 if分支

示意图

单、双、多分支:
在这里插入图片描述

语法介绍

# 单分支
if condition:
	expression
# 双分支
if condition:
	expression1
else:
	expression2
# 多分支
if condition1:
	expression1
elif condition2:
	expression2
else:
	expression3

注意事项

关键词(if、elif和else)所在的行末必须加上英文状态的冒号。
冒号所在行的下一行必须缩进(目的是为了代码的好看与好用)。
elif的正确写法 (错误写法:elseif else if )。
else后面永远不要写条件。

示例

1.二分支:返回一个数的绝对值

# 二分支:返回一个数的绝对值
x = -3
if x >= 0:
    print(x)
else:
	print(-1*x)

输出:

3

2.多分支:返回成绩对应的等级

# 多分支:返回成绩对应的等级
score = 68
if score < 60:
    print('不及格')
elif score < 70:
    print('合格')
elif score < 80:
    print('良好')
else:
	print('优秀')

输出:

合格

3.使用input函数输入一个整数,并判断该整数是否与7相关(可被7整除或含7字样的整数)。

# 使用input函数输入一个整数,并判断该整数是否与7相关(可被7整除或含7字样的整数)
number = input('请输入一个整数:')
if (int(number) % 7 == 0) | (number.find('7') != -1):
    print('与7相关')
else:
    print('与7不相关')

输出:

请输入一个整数:28
与7相关
请输入一个整数:8
与7不相关

4.使用input函数输入一个身份证号码,并提取出出生日期。

# 使用input函数输入一个身份证号码,并提取出出生日期
ID = input('请输入身份证号码:')
if len(ID) == 18:
    birthday = ID[6:14]
    print(birthday)
elif len(ID) == 15:
    birthday = 19+ID[6:12]
    print(birthday)
else:
    print('请重新输入身份证号码')

输出:

请输入身份证号码:123456789987654321
78998765

5.使用input函数输入一个身份证号码,并识别性别
18位身份证号性别是倒数第二位
15位身份证号码性别是倒数第一位
(偶数为女,奇数为男)

# 使用input函数输入一个身份证号码,并识别性别;
ID = input('请输入身份证号码:')
if len(ID) == 18:
    if int(ID[-2]) % 2 == 0:
        print('女')
    else:
        print('男')
elif len(ID) == 15:
    if int(ID[-1]) % 2 == 0:
        print('女')
    else:
        print('男')
else:
    print('请重新输入身份证号码')

输出:

请输入身份证号码:123456789987654321

请输入身份证号码:123456789012345

for循环

示意图

对于for循环来说,就是把可迭代对象中的元素(如列表中的每一个元素)通过漏斗的小口依次倒入之后的执行语句中。
在这里插入图片描述

语法介绍

for i in iterable:
	if condition:
		expression
	elif condition:
		expression
	else:
		expression

列表推导式

语法介绍
[expression for i in iterable if condition]
注意:
• expression就是对每一个元素的具体操作表达式
• iterable是某个可迭代对象,如列表、元组或字符串等
• if condition是对每一个元素做分支判断,如果条件符合,则expression操作对应的元素

示例

1.将列表中的每个元素做平方加1处理

# 将列表中的每个元素做平方加1处理
list6 = [1,5,2,8,10,13,17,4,6]
result = []
for i in list6:
    y = i ** 2 + 1
    result.append(y)
print(result)

输出:

[2, 26, 5, 65, 101, 170, 290, 17, 37]

2.计算1到100之间的偶数和

# 计算1到100之间的偶数和
s1_100 = 0
for i in range(1,101):
    if i % 2 == 0:
        s1_100 = s1_100 + i
    else:
        pass
print('1到100之间的偶数和为%d'%s1_100)

输出:

1到100之间的偶数和为2550

3.对列表中的偶数做三次方减10的处理

# 对列表中的偶数做三次方减9的处理
list7 = [3,1,18,13,22,17,23,14,19,28,16]
result = [i ** 3 - 9 for i in list7 if i % 2 == 0]
print(result)

输出:

[5823, 10639, 2735, 21943, 4087]

4.区别列表中所有含”e”字母的单词,列表如下:
[‘one’,‘two’,‘three’,‘four’,‘five’,‘six’,‘seven’,‘eight’,‘nine’]

list = ['one','two','three','four','five','six','seven','eight','nine']
res = []
for i in list:
    if i.find('e') != -1:
        res.append(i)
print(res)

输出:

[‘one’, ‘three’, ‘five’, ‘seven’, ‘eight’, ‘nine’]

5.将列表的中的元素做平方减5的操作,列表如下:
[10,23,16,11,14,18,21,25,17,22,19]

list = [10,23,16,11,14,18,21,25,17,22,19]
res = []
for i in list:
    res.append(i**2-5)
print(res)

输出:

[95, 524, 251, 116, 191, 319, 436, 620, 284, 479, 356]

6.统计列表中各元素的频次,并以字典形式存储统计结果,列表如下:
[‘A’,‘C’,‘A’,‘C’,‘B’,‘C’,‘A’,‘A’,‘B’,‘C’]

list = ['A','C','A','C','B','C','A','A','B','C']
res = {}
for i in list:
    res[i] = list.count(i) # count()为统计数目函数
print(res)

输出:

{‘A’: 4, ‘C’: 4, ‘B’: 2}

优化(减少循环次数):

list = ['A','C','A','C','B','C','A','A','B','C']
res = {}
for i in set(list): # set()为几何函数,可以进行排重,从而减少循环数目
    res[i] = list.count(i) # count()为统计数目函数
print(res)

while循环

与for的区别

绝大多数场景下,while循环与for循环是可以互相替代的。
如果存在明确的被迭代对象(如列表、元组、字符串等),可优先使用for循环。
如果不存在明确的被迭代对象,使用while循环将会更加地简单。

语法介绍

while condition:
	if condition1:
		expression1
	elif condition2:
		expression2
	else:
		expression3

示例

首先进行一个示例对比
对于for循环:

# 使用for循环登录某手机银行APP – 已知登录总次数的情况
for i in range(1,6):
    user = input('请输入用户名:')
    password = int(input('请输入密码:'))
    if (user == 'test') & (password == 123):
        print('登录成功!')
        break
    else:
        if i < 5:
            print('错误!您今日还剩%d次输入机会。' %(5-i))
        else:
            print('请24小时后再尝试登录!')

输出:

请输入用户名:123
请输入密码:123
错误!您今日还剩4次输入机会。
请输入用户名:145
请输入密码:123
错误!您今日还剩3次输入机会。
请输入用户名:test
请输入密码:123
登录成功!

对于while循环:

# 使用while循环登录某邮箱账号  -- 无限次登录次数的情况
while True:
    user = input('请输入用户名:')
    password = int(input('请输入密码:'))
    if (user == 'test') & (password == 123):
        print('登录成功!')
        break
    else:
        print('您输入的用户名或密码错误!')

输出:

请输入用户名:123
请输入密码:123
您输入的用户名或密码错误!
请输入用户名:145
请输入密码:123
您输入的用户名或密码错误!
请输入用户名:test
请输入密码:123
登录成功!

1.计算等差数列3n+5的前多少项和不超过1000;

s = 0
n = 0
while s <= 1000:
    n += 1
    s += 3*n+5
    print(n,'--->',s)
print(n-1)

输出:

1 —> 8
2 —> 19
3 —> 33
4 —> 50
5 —> 70
6 —> 93
7 —> 119
8 —> 148
9 —> 180
10 —> 215
11 —> 253
12 —> 294
13 —> 338
14 —> 385
15 —> 435
16 —> 488
17 —> 544
18 —> 603
19 —> 665
20 —> 730
21 —> 798
22 —> 869
23 —> 943
24 —> 1020
23

2.猜数字游戏,给定整数范围,直到猜中为止

import random # 生成随机函数
number = random.randint(10,30) #生成10-30的随机整数
while True:
    guess = input('请输入一个10-30的整数:')
    if number == int(guess):
        print('恭喜你猜中了')
        break
    elif int(guess) < number:
        print('偏小')
    else:
        print('偏大')

输出:

请输入一个10-30的整数:25
偏大
请输入一个10-30的整数:20
偏大
请输入一个10-30的整数:15
偏大
请输入一个10-30的整数:10
恭喜你猜中了

优化(自己设置上下限制+可以看见变化的上下限):

import random # 生成随机函数
min = int(input('范围最小值:'))
max = int(input('范围最大值:'))
number = random.randint(min,max) #生成10-30的随机整数
while True:
    guess = input('请在{}~{}之间猜一个整数:'.format(min,max))
    if number == int(guess):
        print('恭喜你猜中了')
        break
    elif int(guess) < number:
        print('偏小')
        min = guess
    else:
        print('偏大')
        max = guess

输出:

范围最小值:20
范围最大值:60
请在20~60之间猜一个整数:30
偏小
请在30~60之间猜一个整数:50
偏小
请在50~60之间猜一个整数:59
偏大
请在50~59之间猜一个整数:56
偏大
请在50~56之间猜一个整数:55
偏大
请在50~55之间猜一个整数:54
偏大
请在50~54之间猜一个整数:52
恭喜你猜中了

  • 17
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

啥都鼓捣的小yao

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

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

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

打赏作者

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

抵扣说明:

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

余额充值