python初学之三大流程控制语句(顺序、分支、循环)

01 认识三大流程控制

python初学之三大流程控制语句(顺序、分支、循环)_第1张图片

1.顺序执行

  从上到下按顺序执行

2.分支选择 (if else)
         if 表达式:
    执行代码
  elif 表达式:
    执行代码
  elif 表达式:  
    执行代码
.  ...
  else:
    执行代码

说明: 只需要满足一个条件,程序会执行哪个条件下面的代码, 然后退出分支

3.循环语句
  for i in xxxx:
    print(i)

  while 表达式
    print

02.墨守循规的顺序流程控制

python初学之三大流程控制语句(顺序、分支、循环)_第2张图片 

练习1.编写一个程序,提示用户按圆的半径计算圆的周长和面积。
           输入圆的半径: 5.3
           半径为5.3cm的圆的周长为33.3,面积为 88.2 。

代码为:

import math                                # 导入数学模块
r = float(input("输入圆的半径: "))           # py3中, input接收的是什么类型? 字符串类型
C = 2 * math.pi * r
S = math.pi * pow(r, 2)
print("半径为%.1fcm的圆的周长为%.1f ,面积为 %.1f 。" %(r, C, S))

                                           

测试如下:

python初学之三大流程控制语句(顺序、分支、循环)_第3张图片

03 有路任性的分支流程控制

python初学之三大流程控制语句(顺序、分支、循环)_第4张图片

 

python初学之三大流程控制语句(顺序、分支、循环)_第5张图片

python初学之三大流程控制语句(顺序、分支、循环)_第6张图片

1)分支流程控制

python初学之三大流程控制语句(顺序、分支、循环)_第7张图片

第一类分支语句 : if - else 语句

python初学之三大流程控制语句(顺序、分支、循环)_第8张图片

如:

name = input("Name: ")
password = input("Password:")
# 分支语句的条件:name == 'root' and password == 'westos'
#	如果满足条件, 执行第7行语句;
#	如果不满足条件, 执行第9行语句;
if name == 'root' and password == 'westos':
	print("%s登录成功" %(name))
else:
	print("%s登录失败" %(name))

测试:

python初学之三大流程控制语句(顺序、分支、循环)_第9张图片

第二类分支语句 : 标准的 if 语句

python 有两大特性, 一是 简洁,二是可读性好。
Python代码块缩进完全能够清楚地表达一个语句属于哪个代码块。

python初学之三大流程控制语句(顺序、分支、循环)_第10张图片

python初学之三大流程控制语句(顺序、分支、循环)_第11张图片

python初学之三大流程控制语句(顺序、分支、循环)_第12张图片

python初学之三大流程控制语句(顺序、分支、循环)_第13张图片

第三类分支语句 : if - elif - else 语句

练习2:编写一个程序,提示学生输入个人平均成绩, 输出学生成绩的等级。
输入平均成绩: 100
学生的成绩等级为A。

代码为:

# 多分支语句
score = float(input("成绩: "))            ##成绩为浮点型

if 85 <= score <= 100:
	print('A')
#elif score >= 70 and score < 85:  ##或者
elif 70	<= score < 85:
	print("B")
elif 60 <= score < 70:
	print('C')
elif 0 < score < 60:
	print('D')
else:
	print('invaild score')

测试:

python初学之三大流程控制语句(顺序、分支、循环)_第14张图片

python初学之三大流程控制语句(顺序、分支、循环)_第15张图片

第四类分支语句 : 三元运算符的 if 语句

if_suite if expression1 else else_suite
三元运算符是软件编程中的一个固定格式,使用这个算法可以使调用数据时逐级筛选。
语法:条件表达式?表达式1:表达式2。
含义: 如果条件表达式成立或者满足则执行表达式1,否则执行第二个。

python初学之三大流程控制语句(顺序、分支、循环)_第16张图片

python初学之三大流程控制语句(顺序、分支、循环)_第17张图片

#a = 10
#b = 5
#if a > b:
#	max = a
#else:
#	max = b
#print(max)


# 三元运算符, if...else的简写
a = 10
b = 5
print(a if a > b else b)

04.random模块

Python中的random模块用于生成随机数。下面介绍一下random模块中最常用的几个函数。

函数 函数功能
random.random() 生成一个0到1的随机符点数: 0 <= n < 1.0

random.uniform(a, b)
生成一个指定范围内的随机浮点数:a <= n <=
b
random.randint(a, b) 生成一个指定范围内的整数:a <= n <= b
random.choice('abcdef') 从序列中获取一个随机元素
random.shuffle([1, 2, 3, 4,
5, 6])
将的元素打乱顺序

 

 

 

 

 

 

 

 

"""
>>> random.random()
0.8100583312773273
>>> random.uniform(10, 100)
89.2102811051263
>>> random.randint(10, 20)
11
>>> random.choice('abcdefg')
'a'
>>> nums = list(range(1, 10)  )
>>> nums
[1, 2, 3, 4, 5, 6, 7, 8, 9]
# 将的元素打乱顺序
>>> random.shuffle(nums)
>>> nums
[5, 1, 7, 2, 4, 9, 8, 3, 6]

"""

练习4. 随机生成一个年份, 年份的范围在2000~2200年之间
代码:

import random

print("随机生成的年份: ", random.randint(2000, 2200))
height = random.uniform(100, 160)
# round设置浮点数的精度
print("随机生成的身高: ", round(height, 1))

测试:

练习5:闰年判断器

需求:
随机生成一个1900~2000之间的年份, 判断给定年份是否是闰年?
规则: 一个闰年就是能被4整除但是不能被100整除 或者 year能被400整除.
输出:年份2000年是闰年。/ 年份1983年不是闰年

代码:

随机生成一个年份,判断是不是闰年
import random
year = random.randint(1900,2000)
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
	print("%d年份是闰年"%(year))
else:
	print("%d年份不是闰年"%(year))


##或者

import random
year = random.randint(1900,2000)
isleap = (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)
print("%d年份是闰年"%(year) if isleap else "%d年份不是闰年"%(year))

测试:

python初学之三大流程控制语句(顺序、分支、循环)_第18张图片

练习6:偶数判断器:

需求:
随机生成一个0~100之间的整数, 判断该数是否为偶数?
规则:
偶数是能够被2所整除的整数。0是一个特殊的偶数。
输出:
数值10是偶数。 / 数值11不是偶数。

代码:

import random

num = random.randint(0, 100)
is_even = (num % 2 == 0)
print( "数值%d是偶数" %(num) if is_even else "数值%d不是偶数" %(num) )

测试:

练习7:解一元二次方程:

代码:

#解一元二次方程,用户一次输入a,b,c的值
import math
a = float(input("输入a="))
b = float(input("输入b="))
c = float(input("输入c="))
delta = pow(b,2)-4*a*c

if delta == 0:
        x1 = (-b+math.sqrt(delta))/(2*a)
        print("该方程有一个解,解为 x1=%.1f"%(x1))
elif delta > 0:
        x1 = (-b+math.sqrt(delta))/(2*a);
        x2 = (-b-math.sqrt(delta))/(2*a)
        print("该方程有两个解,解为x1=%.1f,x2=%.1f"%(x1,x2))
else:
        print("该方程无解")

测试:

python初学之三大流程控制语句(顺序、分支、循环)_第19张图片

05.循环流程控制

while循环语句语法结构

python初学之三大流程控制语句(顺序、分支、循环)_第20张图片

while循环语句语法结构
while循环原理: while 循环的 suite_to_repeat 子句会一直循环执行, 直到 expression 值为布尔假.

python初学之三大流程控制语句(顺序、分支、循环)_第21张图片

第一类循环语句 : while 循环语句

while循环语句语法结构

python初学之三大流程控制语句(顺序、分支、循环)_第22张图片

                                                   1. 计数循环

count = 0
while(count < 9):
	print("the index is : ", count)
	count += 1
# 循环打印了9次。
# count = 0    print(0)   1
# count = 1    print(1)   2
# count = 2    print(2)   3
# ..........
# count = 8    print(8)   9
# count = 9
#

python初学之三大流程控制语句(顺序、分支、循环)_第23张图片

                                                      2.无限(死)循环

# 用户一直输入命令, 打印命令的执行结i果.

# 导入os模块, 封装了操作系统常用的方法, 比如: 创建/删除文件, 执行shell命令等.
import os
while True:
	cmd = input("cmd>> ")  #  date
	# os.system方法执行shell命令并打印命令的执行结果。
	os.system(cmd)

第二类循环语句:for循环语句

  • for循环语句语法结构
  • 与传统语言(e.g.C/C++,Java )中的 for 语句不同, Python 的 for语句更加简洁.
  • for循环原理(有概念即可, 讲生成器时详细说):
  • 可以遍历序列成员, 可以用在 列表解析 和 生成器表达式中, 它会自动地调用迭代器的 next()方法, 捕获 StopIteration 异常并结束循环(所有这一切都是在内部发生的).

python初学之三大流程控制语句(顺序、分支、循环)_第24张图片 


# for、in: 关键字
# for item in 'hello': item的值是变化的, 并依次赋值,
#	item = 'h'
#	item = 'e'
#	item = 'l'
#	item = 'l'
#	item = 'o'
"""
for item in 'hello':
	print("字符显示: ", item)
"""


# ["粉条", "粉丝", "粉带"]: 列表
for name in ["粉条", "粉丝", "粉带"]:
	print("猫的姓名是: ", name)

 

4.range() 内建函数
range语法:
range(start, end, step =1)返回一个包含所有 k 的列表, start <= k < end , k每次递增step
 

# 需求: 循环10次
# 需求: 循环100次
"""
range的用法: 
	**range(stop)    	 	从0开始到stop-1结束
	range(4)			[0, 1, 2, 3]
	**range(start, end)		从start开始到end-1结束
	range(1,6)			[1, 2, 3, 4, 5]
	**range(start, end, step)	从start开始到end-1结束, 步长是指定的
	range(0,10,2)			[0, 2, 4, 6, 8]
"""

for count in range(100):
	print("循环第%d次" %(count+1))

 

练习8:需求1: 求1~100之间所有偶数的和;
需求2: 求1~100之间所有奇数的和;
需求3: 用户输入一个整形数, 求该数的阶乘; 3!=3*2*1=6

"""
# 通过for循环实现阶乘操作
result = 1
for num in range(1,4):
	# num=1, 2, 3, 4, 5
	#result = result * num  
	# result = 1 * 1   result = 1*1*2  result=1*1*2*3
	result *= num
print(result)
"""


# 通过while循环实现阶乘操作
result = 1
num = int(input('N:'))
index = 1

while  index <= num:
	result *= index
	index += 1
print(result)

测试:

"""
result = 0
for num in range(1, 101):
	if num % 2 == 0:
		result = result + num	
print(result)
"""


# sum是内置方法, 求和
# range(2, 101, 2): 获取1-100之间所有的偶数
print(sum(range(2, 101, 2)))

测试:

跳出循环语句break 语句和continue 语句
• break语句用来终止循环语句终止循环语句,即循环条件没False条件或者序列还没被完全递归完,也会停止执行循环语句。
• continue 跳过当前循环的剩余语句,然后继续跳过当前循环进行下一轮循环。

python初学之三大流程控制语句(顺序、分支、循环)_第25张图片

"""
for count in range(10):
	if count == 2:
		# break跳出循环,不再执行循环语句
		break
	print(count)

# 	count		if
#	0		False
#	1 		False
#	2		True	
"""

for count in range(10):
	if count == 2:
		# 跳出本次循环,会再次执行循环语句
		continue
	print(count)

练习10:有意思的九九乘法表

# i: 外层循环


# i是指外层循环, 循环9次
for i in range(9, 0, -1):
	# j是内层循环, 循环i次;
	for j in range(1, i+1):
		# print('sddedd', end=' '), 不换行打印
		print("%d*%d=%d" %(j, i, i*j), end=' ')
	# 每层打印结束, 则换行.
	print()

# i是指外层循环, 循环9次
for i in range(1, 10):
	# j是内层循环, 循环i次;
	for j in range(1, i+1):
		# print('sddedd', end=' '), 不换行打印
		print("%d*%d=%d" %(j, i, i*j), end=' ')
	# 每层打印结束, 则换行.
	print()

python初学之三大流程控制语句(顺序、分支、循环)_第26张图片

练习11:需求:
根据输入用户名和密码,判断用户名和密码是否正确。 为了防止暴力破解,
登陆仅有三次机会, 如果超过三次机会, 报错提示。
数据库信息:
name='root'
passwd='westos'


import getpass

try_count = 0

while try_count < 3:
	try_count += 1
	print("第%d次登录系统" %(try_count))
	name = input("Name: ")
	password = getpass.getpass("Password:")
	
	if name == 'root' and password == 'westos':
		print("%s登录成功" %(name))
		# 登录成功后, 不需要再循环, break跳出循环
		break
	else:
		print("%s登录失败" %(name))
# 当while后面的表达式返回False, 执行else里面的语句。while....else结合再python中是特有的。
else:
	print("尝试次数超过三次, 请稍后再试")

测试:

python初学之三大流程控制语句(顺序、分支、循环)_第27张图片

练习12:太阳花绘制

Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、
纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,
从而在它爬行的路径上绘制了图形。

1. 设置画笔颜色和填充颜色, 并设置画笔移动速度
2. turtle.begin_fill()准备开始填充图形
3. 向当前画笔方向移动distance像素长为200
4. 逆时针(向左)移动170°
5. 循环3、4步50次
6. turtle.end_fill()实现填充完成
7. turtle.done()完成绘制

# Turtle库是Python语言中一个很流行的绘制图像的函数库
import turtle
import random
"""
1. 设置画笔颜色和填充颜色, 并设置画笔移动速度
2. turtle.begin_fill()准备开始填充图形
3. 向当前画笔方向移动distance像素长为200
4. 逆时针(向左)移动170°
5. 循环3、4步50次
6. turtle.end_fill()实现填充完成
7. turtle.done()完成绘制
"""

#1. 设置画笔颜色和填充颜色, 并设置画笔移动速度
turtle.color('red', 'yellow')
turtle.speed(10)

# 2. turtle.begin_fill()准备开始填充图形
turtle.begin_fill()

#5. 循环3、4步50次
for count in range(50):
	#3. 向当前画笔方向移动distance像素长为200
	turtle.forward(200)
	#4. 逆时针(向左)移动170°
	turtle.left(170)	
#6. turtle.end_fill()实现填充完成
turtle.end_fill()
#7. turtle.done()完成绘制
turtle.done()

测试:

python初学之三大流程控制语句(顺序、分支、循环)_第28张图片

 

 

你可能感兴趣的:(python初学之三大流程控制语句(顺序、分支、循环))