章节分篇链接:
【李刚-21天通关Python-11】之 if 分支
【李刚-21天通关Python-12】之 循环
【李刚-21天通关Python-13】之 实操:控制台打印菱形和圆
【李刚-21天通关Python-14】之 实操:绕圈圈面试题
一、三种程序结构
1、顺序结构
2、分支结构
3、循环结构
二、if 分支的三种语法格式
# 1
'''
if 条件:
执行体
'''
# 2
'''
if 条件:
执行体1
else:
执行体2
'''
# 3
'''
if 条件:
执行体1
elif 条件:
执行体2
elif 条件:
执行体2
……
else:
执行体3
'''
score = int(input("请输入成绩:"))
if score > 90:
print("优秀")
elif score > 80:
print("良好")
elif score > 70:
print("中等")
elif score > 60:
print("及格")
else:
print("不及格")
三、注意点
1、缩进
2、冒号
四、if 条件的类型
五、if 条件的逻辑问题
score = int(input("请输入成绩:"))
if score > 60:
print("及格")
# else的隐藏条件为score<=60,加上elif现有的条件score>70,所以不可能成立
# 即 print("中等") 这条语句不可能执行
else score > 70:
print("中等")
六、if 表达式
age = int(input("请输入您的年龄: ")) # input 25
print("年龄大于25岁") if age > 25 else print("年龄等于25岁") if age == 25 else print("年龄小于25岁")
# 年龄等于25岁
七、pass 语句
score = int(input("请输入成绩:"))
if score > 90:
pass
一、循环的意义
二、while 循环
1、while 循环的语法格式:
'''
[init_statements]
while test_expression:
body_statements
[iteration_statements]
'''
2、由于列表和元组的元素都是有索引的,因此程序可通过 while 循环、列表或元组的索引来遍历列表或元组中所有的元素
my_data = ['java', 'swift', 'python', 'kotlin']
i = 0
while i < len.(my_data):
print(my_data[i])
i += 1
# java
# swift
# python
# kotlin
三、for-in 循环
'''
for 变量 in 字符串/范围/集合等
statements
'''
s = 'python'
for c in s:
print(c)
# p
# y
# t
# h
# o
# n
说明:
四、循环中使用else
for c in 'abc':
print(c)
else:
print("循环结束")
五、嵌套循环
for i in range(10):
j = 0
while j < 20:
print("i: %d, j: %d" % (i, j))
j += 1
六、列表推导式(for表达式)
r = [i * 2 for i in range(10)]
print(r)
# 计算1~100的和
print(sum([i for i in range(1,101)])) # 5050
七、for表达式与普通for循环的区别
八、使用 break 跳出循环
for i in range(100):
print(i)
if i < 5:
break
else:
print("循环结束")
# 0
# 1
# 2
# 3
# 4
# 5
# 6
九、使用 continue 忽略本次循环
for i in range(6):
print(i)
if i > 3:
continue
print("循环第%d次" % i)
# 0
# 循环第0次
# 1
# 循环第1次
# 2
# 循环第2次
# 3
# 循环第3次
# 4
# 5
十、使用 return 结束函数
一、打印菱形
# 在控制台用“*”打印菱形
'''
*
* *
* *
* *
* *
* *
*
'''
N = 5
# 上半部分:
# 菱形内每行的空格为:0,1,3,5,……
# 菱形前的空格为:层数-1,层数-2,……
for i in range(N):
# 第一行
if i == 0:
print(' ' * (N - 1 - i) + '*')
else:
s = ' ' * (N - 1 - i) + '*' + (i * 2 - 1) * ' ' + '*'
print(s)
# 下半部分:
# 菱形前的空格为:1,2,3,4,……
# 菱形内每行的空格为:层数*2-5,层数*2-7,……
for i in range(N - 1):
# 最后一行
if i == N - 2:
print(' ' * (N - 1) + '*')
else:
s = ' ' * (i + 1) + '*' + (N * 2 - 5 - i * 2) * ' ' + '*'
print(s)
# 在控制台用“*”打印圆
R = 5
for i in range(R * 2 + 1):
half = (R ** 2 - (R - i) ** 2) ** 0.5
start = round(R - half)
midnum - round(2 * half)
print(' ' * start + '*' + ' ' *midnum + '*')
一、结果呈现
绕圈圈(4):
绕圈圈(5):
二、规则
三、程序设计
SIZE = 6
# 得到一个SIZE*SIZE的二位列表
array = [[0] * SIZE]
for i in range(SIZE - 1):
array += [[0] * SIZE]
# orient控制方向
# 0代表向下,1代表向右,2代表向左,3代表向上
orient = 0
# j控制行,k控制列
j, k = 0, 0
# 将1~SIZE*SIZE的数填入二维数组
for i in range(1, SIZE * SIZE + 1):
array[j][k] = i
# ①号转弯线
if j + k == SIZE - 1:
# 行大于列,下半部分,方向转为向右
if j > k:
orient = 1
# 列大于行,下半部分,方向转为向左
else:
orient = 2
# ②号转弯线,方向转为向上
elif j == k and j >= SIZE / 2:
orient = 3
# ③号转弯线,方向转为向下
elif j + 1 == k and k <= SIZE / 2:
orient = 0
# 根据方向,控制行与列
if orient == 0:
j += 1
elif orient == 1:
k += 1
elif orient == 2:
k -= 1
elif orient == 3:
j -= 1
# 打印二位列表
# array是一个二维列表,array的元素也是列表
for ele in array:
for e in ele:
# '%02d'中,0:多余的位置用0代替,2:数字站2位
print('%02d' % e, end=' ')
print('')
输出结果: