python基础—03三大流程控制:顺序,分支,循环

文章目录

  • 三大流程控制
    • 顺序、分支、循环
    • 一、顺序
    • 二、分支(有条件)
  • 还是一些案例,分支
    • 案例一:闰年检测计算器
    • 案例二:偶数判断器
    • 案例三:解一元二次方程
    • 三、循环
  • 两个案例,循环
    • 案例一:打印九九乘法表
    • 案例二、防黑客暴力破解的用户登录系统

三大流程控制

顺序、分支、循环

python基础—03三大流程控制:顺序,分支,循环_第1张图片

一、顺序

按步骤一步一步执行

案例:
用户按圆的半径计算圆的周长和面积circle.py
输入圆的半径:5.3
输出:半径为5.3cm的圆的周长为33.3,面积为88.2
代码:

import math             #导入数学模块
r = float(input("输入圆的半径"))
c = 2 * math.pi * r     #math.pi表示数学中的Π
s = math.pi * pow(r,2)  #pow()函数求次方

二、分支(有条件)

1、if(表达式)

age = int(input("年龄是:"))
if(age < 18):   #条件,满足表达式,执行下面语句
	print("未成年")

注意 : 和 代码块缩进
python基础—03三大流程控制:顺序,分支,循环_第2张图片

2、if-else(有两种情况)

name = input("name:")
password = input("password:")
if(name == 'westos' and password = '123'):
	print("用户%s登录成功"%(name))  #满足表达式,执行这句
else:
	print("用户%s登录失败"%(name))	#不满足表达式,执行这句

python基础—03三大流程控制:顺序,分支,循环_第3张图片

3、if -elif…-else(有多种情况)
案例:
提示学生输入平均成绩,判断学生成绩等级 score.py
输入平均成绩:100
输出:学生的成绩等级为A

score >= 85 A等级
70 <= score < 85 B等级
60 <= score < 70 C等级
score < 60 D等级

代码:

score = float(input("输入平均成绩:"))
if(score >= 85):
	print("学生的成绩等级为A")
elif (70 <= score < 85):
	print("学生的成绩等级为B")
elif (60 <= score < 70):
	print("学生的成绩等级为C")
elif(score < 60):
	print("学生的成绩等级为D")	
else:
	print("成绩无效")		

4、三元运算符
(语句1) if(表达式) else(语句2)
满足表达式执行语句1,不满足表达式执行语句2

a = 10
b = 5
print(max = a if(a > b) else min = b) #如果a>b,输出max=a,否则,输出min=b

5、嵌套
在一个分支中又分出一个分支
在一个 if - else 中,又包含一个 if - else
案例:
用户登录系统
输入用户名,密码正确,登录成功
输入用户名错误,提示用户不存在
输入用户名正确,密码错误,提示密码错误

import getpass
print("**********用户登录***********")
name = input("输入用户名:")
password = getpass.getpass("输入密码:")
if (name == 'westos'):
	if(password == '123'):
		print("%s登录成功"%(name))
	else:
		print("%s登录失败,密码输入错误"%(name))
else:
	print("该用户不存在")

python基础—03三大流程控制:顺序,分支,循环_第4张图片

还是一些案例,分支

案例一:闰年检测计算器

需求:
随机生成一个1900~2000之间的年份,判断给定的年份是否是闰年。
规则:
一个闰年就是能被4整除但是不能被100整除 或者能被400整除。
生成随机数:
需要用到python中的 random 模块
常用函数:
random.random() :随机生成一个[0,1)的浮点数
random.uniform(a,b) :随机生成[a,b]之间的浮点数
random.randint(a,b) :随机生成[a,b]之间的整数
random.choice(‘saveefd’) :随机从序列中选取一个元素
random.shuffle([1,2,3,4,5,6]) :将列表里的元素顺便随机打乱
代码(用if - else):

import random   #导入模块
year = random.randint(1900,2000) #随机生成一个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)
is_leap = (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)  #用一个变量把语句存起来
print("%d年份是闰年"%(year) if(is_leap) else "%d年份不是闰年"%(year))

案例二:偶数判断器

需求:
随机生成一个0~100之间的整数,判断是否为偶数.
规则:
偶数是能够被2整除的整数,0也是一个特殊的偶数
代码:

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

案例三:解一元二次方程

需求:求解一元二次方程,用户依次输入a,b,c对应的值
规则:

python基础—03三大流程控制:顺序,分支,循环_第5张图片
求平方根用需要用到python中的 math 模块
math.sqrt() 函数来求平方根
代码:

import math               #导入模块
a = float(input("输入a:"))
b = float(input("输入b:"))
c = float(input("输入c:"))
delta = pow(b,2) - 4*a*c  #pow()函数,计算次方 b^2
if(delta = 0):
	x1 = (-b + math.sqrt(delta)) / 2*a  #math.sqrt()函数求平方根
	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("方程无解")

三、循环

1、while
(1)计数循环
while (表达式):
语句
(语句缩进)

满足表达式,一直循环执行语句,直到表达式为假
要执行的语句都是缩进的

count = 0
while (count < 9):
	print("the index is:",count+1)
	count += 1

(2)死循环

while (True):   #条件一直为真,一直循环执行下面的语句,按键ctrl+d退出
	cmd = input("cmd>>>")

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

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

2、for(生成器时详细说)
遍历序列成员,
for 元素 in 集合:
语句
(语句要缩进)

#序列类型
for item in 'hello'	:
	print("字符显示:",item) #分别打印出字符 h,e,l,l,o
#range()内置函数
for item in range(10):
	print("变量显示:",item)

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结束,步长是step
例:range(0,10,2) [0,2,4,6,8]

python基础—03三大流程控制:顺序,分支,循环_第6张图片
案例:
需求:
求1~100之间所有偶数的和
代码:

sum = 0
for num in range(2,101,2):
	sum += num
print("偶数和:",sum)	

需求:用户输入一个整形数,求该数的阶乘
3!=3 * 2* 1
代码:

number = int(input("输入一个整形数:"))
result = 1
for index in range(1,number+1):
	result *= index
print(result)	
number = int(input("输入一个整形数:"))
index = 1
result = 1
while (index <= number):
	result *= index
	index += 1
print(result)	

3、跳出循环的语句
break
用来终止循环语句,就算条件没到false或者序列没递归完,也要停止执行循环语句。

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

continue
跳出当前循环的剩余语句,然后继续下一轮循环

for count in range(10):
	if count == 2:
		continue # 跳出本次循环,不执行下面的语句,继续循环
	print(count)	#0,1,3,4,5,6,7,8,9

两个案例,循环

案例一:打印九九乘法表

python基础—03三大流程控制:顺序,分支,循环_第7张图片
下三角:

for i in range(1,10):    #i是外层循环,循环9次
	for j in range(1,i+1): #j是内层循环,每一层循环i次
		print("%d*%d=%d"%(j,i,i*j),end = ' ')
	print('\n')	 #循环完一个外层,就要换行一次

上三角:

for i in range(9,0-1):    
	for j in range(1,i+1): 
		print("%d*%d=%d"%(j,i,i*j),end = ' ')
	print('\n') 

还记得当年拿c写九九乘法表,写了一大堆。。。。

案例二、防黑客暴力破解的用户登录系统

需求:
根据输入用户名和密码,判断用户名和密码是否正确,为了防止暴力破解,登录仅有三次机会,如果超过三次,报错提示。
代码:

import getpass
num = 0
while (num < 3):
	print("用户进行第%d次登录"%(num))
	name = input("请输入用户名:")
	password = getpass.getpass("请输入密码:")

	if(name == 'westos' and password == '1234'):
		print("%s登录成功"%(name))
		break
	else:
		print("%s登录失败"%(name))	
	num += 1
else:
	print("尝试次数超过三次,请稍后再试")	# while-else的结合是python中特有的	

经过一天的学习,简直身心俱疲,OK,我们来搞一个好玩的

太阳花绘制,惊不惊喜,意不意外
python基础—03三大流程控制:顺序,分支,循环_第8张图片

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

命令 说明
turtle.pensize(width) 绘制图形时的宽度
turtle.pencolor() 画笔颜色
turtle.fillcolor(colorstring) 绘制图形的填充颜色
turtle.color(color1,color2) 同时设置pencolor=color1,fillcolor=color2
turtle.filling() 返回当前是否在填充状态
turtle.begin_fill() 准备开始填充图片
turtle.end_fill() 填充完成
turtle.hideturtle() 隐藏箭头显示
turtle.showturtle() 与hideturtle对应
命令 说明
turtle.forward(distance) 向当前画笔方向移动distance像素长
turtle.backward(distance) 向当前画笔相反方向移动distance像素长度
turtle.right(degree) 顺时针旋转degree°
turtle.left(degree) 逆时针旋转degree°
turtle.pendown() 移动时绘制图形,缺省时也为绘制
turtle.goto(x,y) 将画笔移动到坐标为x,y的位置
turtle.penup() 移动时不绘制图形,提起笔,用于另起一个地方绘制时用
turtle.speed(speed) 画笔绘制的速度范围[0,10]整数
turtle.circle() 画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆

太阳花绘制:

  1. 设置画笔颜色和填充颜色, 并设置画笔移动速度
  2. turtle.begin_fill()准备开始填充图形
  3. 向当前画笔方向移动distance像素长为200
  4. 逆时针(向左)移动170°
  5. 循环3、4步50次
  6. turtle.end_fill()实现填充完成
  7. turtle.done()完成绘制
import turtle
#1. 设置画笔颜色和填充颜色, 并设置画笔移动速度
turtle.color('green','red')
turtle.speed(10)
#2. turtle.begin_fill()准备开始填充图形
turtle.begin_fill()
#5.循环3、4步50次
for num 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,python)