Range 方法
- 使用 range 可以快速生成指定范围内的列表元素
- range 生成的是列表元素,而不是列表本身
- range(100),生成 100个元素,从0开始,不包含100:0,1,2,...,98,99
- l = list(range(100)),创建一个列表,[0,1,2,...,98,99]
- range(4,12):4,5,6,7,8,9,10,11
- range(3,9,2):3,5,7
列表遍历
- 遍历:依次取出每个元素
- 循环语句:for item in l:
- 如果 for 语句中并没有用到 item 的值,可以用一个下划线 _ 来替代 item
- 列表、元组、字符串、range()都可以使用 for 遍历
For 循环
- for in 循环遍历容器类型
- for in + range 控制循环次数
- 断点的使用:点击资源管理器 先建立一个文件夹,在文件中新建一个 python 文件,在要观察的代码前加断点,然后点击调试,在“监视”一栏内添加要观察的变量,按 F11 单步执行。
- 举例:计算100以内所有偶数的和
# 计算 100 以内所有偶数的和
sum = 0
for i in range(100):
if i % 2 == 0:
sum = sum + i
print(sum)
For 练习
例 1. 提示用户输入5个数,组成一个列表,将这个列表中各个元素的值 * 2,计算这个新列表中所有元素的和
### 方法1
# 1. 提示用户输入 5 个数,组成一个列表
user_value = input('请输入5个整数,以空格隔开:')
print(user_value)
print(type(user_value))
user_value = user_value.split(' ')
print(user_value)
print(type(user_value))
# 2. 将用户输入的数转换为整数
i = 0
sum = 0
for item in user_value:
item = int(item)
user_value[i] = item
i += 1
# 3. 乘 2,求和
for item in user_value:
item = item * 2
sum = sum + item
print(f'用户输入的5个整数是:{user_value},它们乘2之后的和是{sum}')
### 方法2
# 1. 提示用户输入 5 个数,组成一个列表
user_value = []
for i in range(1,6):
num = input(f'请输入第{i}个数:')
num = int(num)
user_value.append(num)
# 2. 乘 2,求和
sum = 0
for item in user_value:
item = item * 2
sum = sum + item
print(f'用户输入的5个整数是:{user_value},它们乘2之后的和是{sum}')
例 2. 找出100以内所有7的倍数以及包含7的数,将它们放在一个列表中
l = []
for i in range(100):
if (i % 7 == 0) or (i % 10 == 7) or (i // 10 == 7):
l.append(i)
print(l)
While循环
- while 条件表达式:
- 不确定循环次数但知道循环结束条件时,可以用while
- 循环控制关键词:break 和 continue (for 和 while 都可以用)
- break:终止整个循环
- continue:终止本轮循环,继续下一轮循环
- pass 循环体占位符
列表推导式
- 列表推导式可以快速构建新的数据序列
- [ 表达式 for 变量 in 列表 ] my_list2 = [ i * 2 for i in range(10) ]
- [ 表达式 for 变量 in 列表 if 筛选条件 ] my_list2 = [ i * 2 for i in range(10) if i % 2 == 0 ]
# 找出100以内所有7的倍数以及包含7的数,将它们放在一个列表中
l = [i for i in range(100) if (i % 7 == 0) or (i % 10 == 7) or (i // 10 == 7)]
print(l)
推导式练习
例 1. 获取 ['Food','Moon','Loop']中每个元素的首字母,并将这三个首字母组成一个新的字符串
my_list = ['Food','Moon','Loop']
new_list = [i[0] for i in my_list]
new_list = ''.join(new_list)
print(new_list)
例 2. l1 = [2,4,6,8,10,12]; l2 = [3,6,9,12],找出同时出现在 l1 和 l2 中的元素
l1 = [2,4,6,8,10,12]
l2 = [3,6,9,12]
new_list = [i for i in l1 if i in l2]
print(new_list)
例 3. 将 [1,3,5,7,9]中所有元素打印在控制台上
[print(i) for i in range(1,10) if i % 2 != 0]
循环嵌套
## 生成一个二维列表
# 方法 1
l = []
item = []
for i in range(3):
item = []
for j in range(4):
item.append(j)
l.append(item)
print(l)
# 方法 2
l = [[j for j in range(4)] for i in range(3)]
print(l)
## 遍历一个二维列表中的所有元素
# 方法 1
for i in l:
for j in i:
print(j)
# 方法 2
[[print(j) for j in i] for i in l]
循环练习
例 1. 找到100-1000内最小的水仙花数。水仙花数:数字中每一位的3次幂之和等于它本身,如 407 = 4^3 + 0^3 + 7^3
l = []
for i in range(100,1000):
ge = i % 10
shi = i // 10 % 10
bai = i // 100
if i == ge ** 3 + shi ** 3 + bai ** 3:
l.append(i)
result = min(l)
print(f'100-1000内水仙花有{l},其中最小的水仙花数是:{result}')
例 2.找出100以内所有的质数。质数:大于1,并且只能被1和它的本身整除
l = []
for i in range(2,100):
j = list(range(2,i))
remain = [i % item for item in j]
if 0 not in remain:
l.append(i)
print(f'100以内的质数有:{l}')
例 3. 在控制台上打印“九九乘法表”(print的使用方法)
for i in range(1,10):
for j in range(1,10):
print(f'{i} * {j} = {i*j}',end = '\t')
print('\n')