目录
流程控制
- 顺序结构
- 选择结构,if
- 循环结构,for
1、顺序结构
# 顺序结构
'''去上学一共分为几步'''
print('----------程序开始---------------')
print('1、起床')
print('2、吃早饭')
print('3、步行去学校')
print('----------程序结束---------------')
对象的布尔值
- Python一切皆对象,所有对象都有一个布尔值
- 获取对象的布尔值:使用内置函数bool()
以下对象的布尔值为False
- False
- 数值0
- None
- 空字符串
- 空列表
- 空元组
- 空字典
- 空集合
# 对象的布尔值
print('----------以下对象的布尔值为False---------------')
print(bool(False)) # False
print(bool(0)) # False
print(bool(0.0)) # False
print(bool(None)) # False
print(bool('')) # False
print(bool("")) # False
print(bool([])) # False,空列表
print(bool(list())) # False,空列表
print(bool(())) # False,空元组
print(bool(tuple())) # False,空元组
print(bool({})) # False,空字典
print(bool(dict())) # False,空字典
print(bool(set())) # False,空集合
print('----------其他对象的布尔值为True---------------')
print(bool(10)) # True
print(bool('hello')) # True
print(bool(True)) # True
可以把对象放在条件表达式进行判断:(根据对象取值对应的布尔值判断True或False)
# 使用对象的布尔值做表达式来进行判断
age = int(input('请输入年龄:'))
if age:
print(age)
else:
print('年龄为:', age)
输出结果:
2、选择结构
1)单分支结构
语法结构:
if 条件表达式:
条件执行体
# 单分支结构
money = 1000 # 账户余额
s = int(input('请输入取款金额:'))
# 判断余额是否充足
if money >= s:
money = money - s
print('取款成功,余额为:', money)
输出结果:
2)双分支结构
语法结构:
if 条件表达式:
条件执行体1
else:
条件执行体2
# 双分支结构
num = int(input('请输入一个整数:'))
if num % 2 == 0:
print(num, '是偶数')
else:
print(num, '是奇数')
输出结果:
3)多分支结构
语法结构:
if 条件表达式1:
条件执行体1
elif 条件表达式2:
条件执行体2
elif 条件表达式N:
条件执行体N
[else:]
条件执行体N+1
# 多分支结构
score = int(input('请输入一个成绩:'))
if score >= 90 and score <=100:
print('A级')
elif score >=80 and score <90:
print('B级')
elif score >= 60 and score < 80:
print('C级')
elif score < 60:
print('D级')
else:
print('非法数据')
4)嵌套if
语法结构:
if 条件表达式1:
if 内层条件表达式:
内层条件执行体1
else:
内层条件执行体2
else:
条件执行体
# 嵌套if
answer = input('请是会员吗?y/n:')
money = int(input('请输入您的购物金额:'))
if answer == 'y':
if money >= 200:
print('会员大于200元,打8折')
elif money >= 100:
print('会员大于100元,打9折')
else:
print('会员购物没有折扣')
else:
if money >= 200:
print('非会员大于200元,打9折')
else:
print('非会员购物没有折扣')
5)条件表达式
语法结构:条件表达式是 if else 的简写
x if 判断条件 else y
运算规则:
- 如果判断条件的布尔值为True,条件表达式的返回值为x;否则,条件表达式的返回值为y
# 条件表达式
num1 = int(input('请输入第一个整数:'))
num2 = int(input('请输入第二个整数:'))
print(str(num1) + '大于' + str(num2) if num1 > num2 else str(num1) + '小于' + str(num2))
6)Pass语句
- pass语句什么都不做,只是一个占位符,用在语法上需要语句的地方
- 什么时候使用:先搭建语法结构,还没想好代码怎么写的时候
哪些语句一起使用:
- if 语句的条件执行体
- for-in 语句的循环体
- 定义函数时的函数体
# Pass语句,先占个位置,语法不报错
answer = input('你是会员吗?y/n:')
if answer == 'y':
pass
else:
pass
3、循环结构
- while
- for in
1)While循环
语法结构:
while 条件表达式:
条件执行体(循环体)
选择结构的 if 与循环结构的 while 的区别:
- if 是判断一次,条件为True执行一行;
- while是判断N+1次,条件为True执行N次;
# 循环结构
a = 1
while a < 5:
print(a)
a += 1
# 计算1-100之间的偶数和
a = list(range(1, 101))
s = 0
i = 0
while i < len(a):
if a[i] % 2 == 0:
s += a[i]
i += 1
print('1-100之间的偶数和:', s) # 2550
2)for in循环
- in 表达从(字符串、序列等)中依次取值,遍历。
- for in 遍历的对象,必须是可迭代的对象
语法结构:
for 自定义的变量 in 可迭代对象:
循环体
# for in循环
for item in 'Python':
print(item)
# range() 产生一个整数序列,也是一个可迭代对象
for i in range(4):
print(i)
循环体内不需要访问自定义变量,可以将自定义变量替代为下划线_
# 如果循环体内不需要访问自定义变量,可以将自定义变量替代为下划线_
for _ in range(4):
print('国庆快乐')
计算1-100之间的偶数和
# 计算1-100之间的偶数和
s = 0
for i in range(1, 101):
if i % 2 == 0:
s += i
print('1-100之间的偶数和:', s)
输出100-999之间的水仙花数
# 输出100-999之间的水仙花数
# 即个位的三次方与十位的三次方与百位的三次方之和为该数字,这个数字就是水仙花数
for i in range(100, 1000):
ge = i % 10 # 个位
shi = i // 10 % 10 # 十位
bai = i // 100 # 百位
total = ge **3 + shi**3 + bai**3
if total == i:
print('这是水仙花数:%d, %d+%d+%d=%d' % (i, ge**3, shi**3, bai**3, total))
4、流程控制语句
- break
- continue
1)break
- 用于结束循环结构,可在 for in 和 while 循环中使用,常与分支结构 if 搭配一起使用
- 满足什么样的条件,就退出
从键盘录入密码,最多输入3次,如果正确结束循环
# 从键盘录入密码,最多输入3次,如果正确结束循环
pwd = input('请输入密码:')
max = max_input = 3
for _ in range(1, max+1):
if pwd == '8888':
print('密码输入正确')
break
else:
max_input -= 1
if max_input == 0:
print('密码输入错误超过%d次,请明天再试。' % max)
break
else:
pwd = input('密码输入错误,请重新输入密码(剩余%d次机会):' %(max_input))
输出结果:
请输入密码:999
密码输入错误,请重新输入密码(剩余2次机会):111
密码输入错误,请重新输入密码(剩余1次机会):000
密码输入错误超过3次,请明天再试。
2)continue
- 用于结束当前循环,进入下一次循环,可在 for in 和 while 循环中使用,常与分支结构 if 搭配一起使用
输出1-50之间,所有5的倍数
# 输出1-50之间,所有5的倍数
for i in range(1, 51):
if i % 5 != 0:
continue
print(i)
3)else语句
与else语句配合使用的三种情况
- if else,if 条件表达式不成立时,执行else
- while else,没有碰到break时,在循环体执行完后执行else;如果执行到break,就不再执行else
- for else,没有碰到break时,在循环体执行完后执行else;如果执行到break,就不再执行else
for else :密码输入(只能输入3次)
# 密码输入(只能输入3次)
for i in range(3):
pwd = input('请输入密码:')
if pwd == '8888':
print('密码输入正确')
break
else:
print('密码输入不正确')
else:
print('对不起,密码输入次数超过3次,请明天再试')
输出结果:没有执行到break,最后再执行for语句的else部分
请输入密码:999
密码输入不正确
请输入密码:999
密码输入不正确
请输入密码:999
密码输入不正确
对不起,密码输入次数超过3次,请明天再试
或输出结果:执行了break后,就不再执行for语句的else部分
请输入密码:8888
密码输入正确
5、嵌套循环
- 循环结构中又嵌套了另外的完整的循环结构,其中内层循环做外层循环的循环体执行;
语法结构:
while 条件表达式:
循环体
for 条件表达式:
循环体
else:
else:
打印3行4列的矩形
# 打印3行4列的矩形
for i in range(3):
for j in range(4):
print('*', end='\t') # 不换行输出
print() # 换行输出
打印九九乘法表
# 打印九九乘法表
for j in range(1, 10):
for i in range(1, 10):
if i > j:
continue
print('%d*%d=%d' % (i, j, i*j), end='\t')
print()
输出结果:
1)二重循环中的break和continue
- 二重循环中的break和continue,用于控制本层循环,不影响外层循环的执行;
a)没有break和continue时
# 二重循环中的break和continue
for i in range(5):
for j in range(5):
print('*', end='\t')
print()
输出结果:
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
b)使用break
# 二重循环中的break和continue
for i in range(5):
for j in range(5):
if j == 2:
break
print('*', end='\t')
print()
输出结果:内层循环,因为break,没有再打印第三列即其后列数;外层循环不受影响,还是打印了5行
* *
* *
* *
* *
* *
c)使用continue
# 二重循环中的break和continue
for i in range(5):
for j in range(5):
if j == 2:
continue
print('*', end='\t')
print()
输出结果:内层循环,因为continue,没有打印第三列,第四第五列有打印;外层循环不受影响,还是打印了5行
* * * *
* * * *
* * * *
* * * *
* * * *