1.顺序执行
从上到下按顺序执行
2.分支选择 (if else)
if 表达式:
执行代码
elif 表达式:
执行代码
elif 表达式:
执行代码
. ...
else:
执行代码
说明: 只需要满足一个条件,程序会执行哪个条件下面的代码, 然后退出分支
3.循环语句
for i in xxxx:
print(i)
while 表达式
print
练习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))
测试如下:
1)分支流程控制
第一类分支语句 : if - else 语句
如:
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))
测试:
第二类分支语句 : 标准的 if 语句
python 有两大特性, 一是 简洁,二是可读性好。
Python代码块缩进完全能够清楚地表达一个语句属于哪个代码块。
第三类分支语句 : 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')
测试:
第四类分支语句 : 三元运算符的 if 语句
if_suite if expression1 else else_suite
三元运算符是软件编程中的一个固定格式,使用这个算法可以使调用数据时逐级筛选。
语法:条件表达式?表达式1:表达式2。
含义: 如果条件表达式成立或者满足则执行表达式1,否则执行第二个。
#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)
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))
测试:
练习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("该方程无解")
测试:
while循环语句语法结构
while循环语句语法结构
while循环原理: while 循环的 suite_to_repeat 子句会一直循环执行, 直到 expression 值为布尔假.
第一类循环语句 : while 循环语句
while循环语句语法结构
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
#
2.无限(死)循环
# 用户一直输入命令, 打印命令的执行结i果.
# 导入os模块, 封装了操作系统常用的方法, 比如: 创建/删除文件, 执行shell命令等.
import os
while True:
cmd = input("cmd>> ") # date
# os.system方法执行shell命令并打印命令的执行结果。
os.system(cmd)
第二类循环语句:for循环语句
# 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 跳过当前循环的剩余语句,然后继续跳过当前循环进行下一轮循环。
"""
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()
练习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("尝试次数超过三次, 请稍后再试")
测试:
练习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()
测试: