python基础-学习记录day05

154 阅读5分钟

循环之for循环

1、while...else...

"""break"""
i = 1
while i <= 5:
    if i == 3:
        print('这遍道歉说的不真诚')
        break
    print('我错了,请你原谅我!')
    i += 1
else:
    print('非常感谢你的原谅!')

运行结果:

image.png

# 总结: 所谓else指的是循环正常结束之后要执行的代码,即如果是break终止循环的情况,
# else下方缩进的代码将不执行。
"""continue"""
i = 1
while i <= 5:
    if i == 3:
        i += 1  # 当用到continue时,计数器一定要加上,不然会出现死循环
        continue
    print('我错了,请你原谅我!')
    i += 1
else:
    print('非常感谢你的原谅!')

运行结果:

image.png

# 总结:因为continue是退出当前你一次循环,继续下一次循环,所以该循环在continue控制下是可以正常结束的,
# 当循环结束后,则执行了else缩进的代码。

2、for循环

"""
可迭代对象
可以从容器(元素的集合体)中 一个一个的拿出我们想要的数据

初始数据类型
数值 字符串 列表 元素 集合 字典
"""

# a = 123
# b = '123'
# c = [1, 2, 3]
# d = 'hello world'
#
# for i in d:
#     print(i)

运行结果:

image.png

name = 'hello world python i love you'
count = 0
for i in name:
    if i == "o":
        print(i)
        count += 1
print(count)

运行结果:

image.png

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列表的关键字

运行结果:

image.png

# 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()

运行结果:

image.png

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("正在刷马自达。。。")

运行结果:

image.png

6、for循环练习

"""
1-100偶数的和
"""
res = 0
for i in range(0, 101, 2):
    res += i
print(res)

运行结果:

image.png

"""
求5的阶乘
5! = 5*4*3*2*1
"""
# res = 1
# for i in range(1, 6):
#     res *= i
# print(res)

运行结果:

image.png

"""
求任意数的阶乘
"""
res = 1
print("请在下方输入一个整数,用于计算该数的阶乘:")
for i in range(1, int(input()) + 1):
    res *= i
print(res)

运行结果:

image.png

"""99乘法表"""
for i in range(1, 10):
    for j in range(1, i + 1):
        print(f"{j}x{i}={j*i}", end="\t")
    print()

运行结果:

image.png

"""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)

运行结果:

image.png

7、字符串定义

"""
什么是字符串
被 ‘’  “”  ”“”“”“ 包裹的数据 就称之为字符串
且不管是单双引号还是三引号 都要成对的出现
"""

a = 1

name1 = 'name'
name2 = "name"
name3 = """      name      
                你好呀 """  # 注释  字符串  不会改变原有的格式
print(name1, name2, name3)
print(type(name1), type(name2), type(name3))
print('name1')

运行结果:

image.png

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}个")

运行结果: image.png