循环之for循环
1、while...else...
"""break"""
i = 1
while i <= 5:
if i == 3:
print('这遍道歉说的不真诚')
break
print('我错了,请你原谅我!')
i += 1
else:
print('非常感谢你的原谅!')
运行结果:
# 总结: 所谓else指的是循环正常结束之后要执行的代码,即如果是break终止循环的情况,
# else下方缩进的代码将不执行。
"""continue"""
i = 1
while i <= 5:
if i == 3:
i += 1 # 当用到continue时,计数器一定要加上,不然会出现死循环
continue
print('我错了,请你原谅我!')
i += 1
else:
print('非常感谢你的原谅!')
运行结果:
# 总结:因为continue是退出当前你一次循环,继续下一次循环,所以该循环在continue控制下是可以正常结束的,
# 当循环结束后,则执行了else缩进的代码。
2、for循环
"""
可迭代对象
可以从容器(元素的集合体)中 一个一个的拿出我们想要的数据
初始数据类型
数值 字符串 列表 元素 集合 字典
"""
# a = 123
# b = '123'
# c = [1, 2, 3]
# d = 'hello world'
#
# for i in d:
# print(i)
运行结果:
name = 'hello world python i love you'
count = 0
for i in name:
if i == "o":
print(i)
count += 1
print(count)
运行结果:
3、range函数
"""打印1-10000之间的所有整数"""
# i = 1
# while i <= 10000:
# print(i)
# i += 1
# while写法,运行结果此处省略
# print(range(10000), type(range(10000))) # 默认的起始值 从0开始
# print(list(range(10000))) # list列表的关键字
运行结果:
# for i in range(0, 10, 1):
# print(i) # 0 1 2 3 4 5 6 7 8 9
# range函数
"""
range(start, end, step)
start:起始值 默认从0开始
end:终止值 左闭右开的范围
step:步长值 默认为1 可以更改
"""
count = 0
for i in range(2, 101, 2):
print(i, end="\t")
count += 1
if count % 10 == 0:
print()
运行结果:
4、while循环与for循环嵌套使用
# for i in range(1, 6):
# print(f"这是第{i}天")
# for j in range(10, 20):
# print("吃饭饭!")
for i in range(1, 6):
print(f"这是第{i}天")
j = 1
while j <= 10:
print("吃饭饭!")
j += 1
print(f"第{i}天吃饱啦!")
5、break与continue
"""
break 终止循环
continue 跳出一次循环
"""
# 需求是输出1-100的数 遇见7的倍数跳过
# for i in range(1, 01):
# # print(i)
# if i % 7 == 0:
# continue
# print(i)
# 运行结果省略
# 输出1-100之间的整数 且不是7的倍数 且这个数也不能包含7
for i in range(1, 101): # 生成的是数字序列 int
if i % 7 != 0 and '7' not in str(i):
print(i)
# 运行结果省略
# 当马自达刷完后直接停止,因为后面是劳斯莱斯
li = ["马自达", "马自达", "马自达", "劳斯莱斯", "劳斯莱斯", "劳斯莱斯", "劳斯莱斯"]
for i in li:
if i == "劳斯莱斯":
print("碰见劳斯莱斯了")
break
print("正在刷马自达。。。")
运行结果:
6、for循环练习
"""
1-100偶数的和
"""
res = 0
for i in range(0, 101, 2):
res += i
print(res)
运行结果:
"""
求5的阶乘
5! = 5*4*3*2*1
"""
# res = 1
# for i in range(1, 6):
# res *= i
# print(res)
运行结果:
"""
求任意数的阶乘
"""
res = 1
print("请在下方输入一个整数,用于计算该数的阶乘:")
for i in range(1, int(input()) + 1):
res *= i
print(res)
运行结果:
"""99乘法表"""
for i in range(1, 10):
for j in range(1, i + 1):
print(f"{j}x{i}={j*i}", end="\t")
print()
运行结果:
"""1,2,3,4能组成多少个不重复的三位数"""
count = 0
for i in range(1, 5):
for j in range(1, 5):
for k in range(1, 5):
if i != j and i != k and j != k:
print(i * 100 + j * 10 + k, end=" ")
count += 1
print()
print(count)
运行结果:
7、字符串定义
"""
什么是字符串
被 ‘’ “” ”“”“”“ 包裹的数据 就称之为字符串
且不管是单双引号还是三引号 都要成对的出现
"""
a = 1
name1 = 'name'
name2 = "name"
name3 = """ name
你好呀 """ # 注释 字符串 不会改变原有的格式
print(name1, name2, name3)
print(type(name1), type(name2), type(name3))
print('name1')
运行结果:
8、访问字符串中的值
a = 'hellopython'
"""
h e l l o p y t h o n
0 1 2 3 4 5 6 7 8 9 10 # 下标 索引 python中的下标从0开始!!!!!!!!!
-4-3 -2 -1
"""
# 需求: 在字符串中拿到第二个h
# 通过索引进行取值 a[下标]
# print(a[8])
# print(a[-3])
# 需求: 我要拿到python这一段值
# 通过切片进行取值 a[起始值索引:终止值索引:步长]
"""
步长默认为1 可以更改
终止值索引: 左闭右开 不写 默认到结尾 整个字符串
起始值: 默认为0 可以更改
"""
# print(a[:11])
# print(a[0:11])
# print(a[5:11:1])
# print(a[::])
# print(a[:10:])
# print(a[:15:])
# print(a[::-1]) # 逆序输出
name = "hellopython"
# print(name[2:5]) # 从2开始,到5结束(不会拿到5本身) llo
# print(name[2:5:1]) # 从2开始,到5结束,步长为1(不会拿到5本身) llo
# print(name[:5]) # 从0开始,下表为5结束(不会拿到本身) hello
# print(name[1:]) # 从1开始,一直到结束 ellopython
# print(name[:]) # 拿取所有 hellopython
# print(name[::2]) # 从0开始,步长为2,拿取所有 hloyhn
# print(name[:-1]) # 从0开始,到最后一个数结束(-1代表最后一个数,不包含-1本身) n拿不到
# print(name[-4:-1]) # 从倒数第四个开始,到倒数第一个结束(不包含-1本身) tho
# print(name[::-1]) # 从-1开始,倒着打印字符串,步长为1 逆向
# print(name[::-2]) # 从-1开始,倒着打印字符串,步长为2 nhyolh
# print(a[-4:-1:-1]) # 取值的方向与步长的方向不一致 导致取不到值
# print(a[-1:-4:])
# print(name[0:10:-1])
9、练习:0,1,2,3,4能组成多少个各个位数都不重复的三位数 使用for循环进行输出 并统计个数
a = '01234'
b = '01234'
c = '01234'
d = 0
for i in a:
for j in b:
for k in c:
if i != '0' and i != j and j != k and i != k:
print(i + j + k, end=' ')
d += 1
if d % 12 == 0:
print()
print(f"总共可以组成各个位数都不重复的三位数{d}个")
运行结果: