Python全栈之单项循环

发布于 2022年 05月 06日 10:12

1. 多项_巢状分支

多项分支 (多选一)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
"""
if 条件表达式1:
    code1
elif 条件表达式2:
    code2
elif 条件表达式3:
    code3
else:
    `code4
如果条件表达式1成立,执行对应的分支code1,反之判断条件表达式2是否成立
如果条件表达式2成立,执行对应的分支code2,反之判断条件表达式3是否成立
如果条件表达式3成立,执行对应的分支code3,如果不成立,直接走else分支,到此程序执行完毕
elif 可以是0个 或者 多个
else 可以是0个 或者 一个
"""
youqian = False
youfang = False
youche = False
if youqian == True:
    print("说明这个人很有实力")
elif youfang == True:
    print("能交给朋友么")
elif youche == True:
    print("开了雅迪艾玛调动车,我们碰一碰吧")  
else:
    print("你还是去做美团骑手吧")
print("<=======================>")
# ### 巢状分支
"""单项分支,双向分支,多项分支的互相嵌套组合"""
youqian = True
youfang = True
youche = True
youyanzhi = True
youtili = False
if youqian == True:
    if youfang == True:
        if youche == True:
            if youyanzhi == True:
                if youtili == True:
                    print("我要嫁给你~")
                else:
                    print("你去吃点大腰子再来~")
            else:  
                print("你去一下泰国+韩国,整整容")
else:
    print("你是个好人呐~")
     
print("<=======================>")
#出题 height
#女生找对象
    # 男生在1米~1.5米之间 小强 你在哪里?
    # 男生在1.5~1.7米之间 没有安全感~
    # 男生 1.7~ 1.8米之间 帅哥 留个电话
    # 男生 1.8~2米之间 帅哥 你建议多一个女朋友吗
# python特有(注意:因为input接受的数都是字符串,又因为我们会输入小数,所以这里只能用float)
"""
height = float(input("请输入您的身高:"))
if 1 <= height < 1.5:
    print("小强 你在哪里?")
elif 1.5 <= height < 1.7:
    print("没有安全感~")
elif 1.7 <= height < 1.8:
    print("帅哥 留个电话")
elif 1.8 <= height < 2:
    print("你建议多一个女朋友吗")
else:
    print("抱歉,没有合适的选项")
"""
# 通用写法
height = float(input("请输入您的身高:"))
if 1 <= height and height < 1.5:
    print("小强 你在哪里?")
elif 1.5 <= height and height < 1.7:
    print("没有安全感~")
elif 1.7 <= height and height < 1.8:
    print("帅哥 留个电话")
elif 1.8 <= height and height < 2:
    print("你建议多一个女朋友吗")
else:
    print("抱歉,没有合适的选项")
"""
tab 向右缩进
shift + tab 向左缩进
"""

2. 循环结构

2.1 循环结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
"""特点:减少冗余代码,提升执行效率"""
"""
语法:
while 条件表达式:
    code1
(1) 初始化一个变量
(2) 写上循环的条件
(3) 自增自减的值
"""
# ### 打印1 ~ 100
# (1) 初始化一个变量
i = 1
# (2) 写上循环的条件
while i <= 100:
    # (4) 写上循环的逻辑
    print(i)
    # (3) 自增自减的值
    i += 1 # i = i + 1
"""
代码解析:
第一次循环
i = 1  i<=100 判断为真,执行循环体 print(1)
i += 1 i => 2
第二次循环
代码回到17行,重新进行条件判定
i = 2  i<=100 判断为真,执行循环体 print(2)
i += 1 i => 3
第三次循环
代码回到17行,重新进行条件判定
i = 3  i<=100 判断为真,执行循环体 print(3)
i += 1 i => 4
....
以此类推
直到i = 101  i <= 100 判断为假,不执行循环体,到此循环结束...
1 ~ 100
"""
# ### 1 ~ 100的累加和
# (1) 初始化一个变量
i = 1
total = 0
# (2) 写上循环的条件
while i <= 100 :
    # (4) 写上自定义的逻辑
    total += i
    # (3) 自增自减的值
    i += 1
print(total)
"""
代码解析:
第一次循环
i = 1 i <= 100 判定为真True 执行循环体 total += i => total = total + i => 0 + 1
i += 1  => i = 2
第二次循环
i = 2 i <= 100 判定为真True 执行循环体 total += i => total = total + i => 0 + 1 + 2
i += 1  => i = 3
第三次循环
i = 3 i <= 100 判定为真True 执行循环体 total += i => total = total + i => 0 + 1 + 2 + 3
i += 1  => i = 4
...
依次类推
当i = 101 101 <= 100 判定为假False 不执行循环体,到此,循环结束..
total += i => total + i => 0 + 1 + 2 + 3 + 4 + .... + 100 => 5050
"""
 
# 死循环
"""
while True:
    print(1)
"""
 
# ### 用死循环的方法实现 1 ~ 100累加和
i = 1
total = 0
sign = True
while sign:
    total += i
    i+=1
    # 判断i是否加到了101 , 不参与循环
    if i == 101:
        # 终止循环
        sign = False
print(total) #1 ~ 100 = 5050

2.2 单项循环的练习

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
# (1)打印 一行十个小星星* help(print)
# help 查看某个方法的文档
help(print)
"""
# print("*",end='')
# print("*",end='')
# print("*",end='')
# print("*",end='')
# print("*",end='')
# print("*",end='')
# print("*",end='')
# print("*",end='')
# print("*",end='')
# print("*",end='')
"""
i = 0
while i<10
    # end='' 打印时,尾部默认不加换行
    print("*",end='')  
    i += 1
# 默认换行
# print()
# (2)通过打印一个变量的形式,展现一行十个小星星
print("<======>")
i = 0
strvar = ""
while i < 10:
    # 写上循环的逻辑
    strvar += "*" # strvar = strvar + "*"
    i +=1
print(strvar)
"""
strvar += "*" => strvar = "*"
strvar += "*" => strvar = "*" + "*"  = "**"
strvar += "*" => strvar = "**" + "*" = "***"
...
strvar += "*" => strvar = "********" + "*" = "*********"
"""
# (3)一行十个换色的星星 ★☆★☆★☆★☆★☆
"""
# 方法一
i = 0
while i < 5:
    print("★☆",end="")
    i+=1
"""
# 方法二
i = 0
while i < 10:
    if i % 2 == 0 :
        print("★",end="")
    else:
        print("☆",end="")
    i+=1
print("<=============>")
# 方法三
i = 0
strvar = ""
while i < 10:
    if i % 2 == 0 :
        strvar += "★"
    else:
        strvar += "☆"
    i+=1
print(strvar)
"""
***公式: 任意数 和 n 进行取余,余数的范围: 0 ~ (n-1)***
0 % 2 = 0
1 % 2 = 1
2 % 2 = 0
3 % 2 = 1
被除数 % 2 => 0 或者 1
0 % 5 = 0
1 % 5 = 1
2 % 5 = 2
3 % 5 = 3
4 % 5 = 4
5 % 5 = 0
6 % 5 = 1
7 % 5 = 2
被除数 % 5 => 0 或者 1,2,3,4
"""
# (4)用一个循环,打印十行十列小星星
"""
★★★★★★★★★★
★★★★★★★★★★
★★★★★★★★★★
★★★★★★★★★★
★★★★★★★★★★
★★★★★★★★★★
★★★★★★★★★★
★★★★★★★★★★
★★★★★★★★★★
★★★★★★★★★★
"""
# 方法一
i = 0
while i < 100:
    # 逻辑写在这里
    print("*" , end="")
    # 打印换行 (在9 19 29 .. 99 )
    if i % 10 == 9:
        print()
    i += 1
 
"""
0123456789
**********
10111213141516171819
**********
20212223242526272829
**********
...
90919293949596979899
**********
9 19 29 39 49 59 69 79 89 99
9 % 10  = 9
19 % 10 = 9
29 % 10 = 9
...
99 % 10 = 9
"""
 
print("<======>")
# 方法二
i = 1
while i <= 100:
    # 逻辑写在这里
    print("*" , end="")
    # 打印换行 (在9 19 29 .. 99 )
    if i % 10 == 0:
        print()
    i += 1
"""
12345678910
**********
11121314151617181920
**********
21222324252627282930
**********
...
919293949596979899100
**********
10 20 30 ... 100
"""
# (5) 一个循环实现十行十列,格列换色的小星星
"""
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
"""
i = 0
while i < 100:
    # (1)打印星星
    if i % 2 == 0 :
        print("★",end="")
    else:
        print("☆",end="")
    # (2)打印换行 (在9 19 29 .. 99 )
    if i % 10 == 9:
        print()
    i += 1
# (6)一个循环实现十行十列,隔行换色的小星星
"""
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
*** 公式:任意数和n进行地板除,会出现n个相同的数
0 // 10 = 0
1 // 10 = 0
2 // 10 = 0
..
9 // 10 = 0
0 ~ 9 // 10 => 0 (10个相同的0)
10 // 10 = 1
11 // 10 = 1
12 // 10 = 1
...
19 // 10 = 1
10 ~ 19 // 10 => 1 (10个相同的1)
.... 以此类推
20 ~ 29 // 10 => 2 (10个相同的2)
30 ~ 39 // 10 => 3 (10个相同的3)
40 ~ 49 // 10 => 4 (10个相同的4)
...
90 ~ 99 // 10 => 9 (10个相同的9)
0~ 100 会出现10个相同的0,1,2 , 3 ... 9
0 // 3 0
1 // 3 0
2 // 3 0
3 // 3 1
4 // 3 1
5 // 3 1
"""
""""""
# 方法一
i = 0
while i < 100:
    # (1)打印星星
    if i // 10 % 2 == 0:
        print("★",end="")
    else:
        print("☆",end="")
    # (2)打印换行 (在9 19 29 .. 99 )
    if i % 10 == 9:
        print()
    i += 1
# 方法二
print("<=================>")
i = 10
while i < 110:
    # 打印星星
    num = int(str(i)[-2])
    if num % 2 == 0 :
        print("★",end="")
    else:
        print("☆",end="")
    # 打印换行
    if i % 10 == 9:
        print()
    i+=1
"""
10 ~ 100 101 102 103 110...
10 ~ 19 => 1
20 ~ 29 => 2
30 ~ 39 => 3
90 ~ 99 => 9
100 ~ 109 => 0
"""

3. 字符串的切片

字符串相关操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# (1)字符串的拼接 +
str1 = "赵沈阳,"
str2 = "so strong"
res = str1 + str2
res = "赵沈阳," + "so strong"
print(res)
# res = res + ",旁边的同学很喜欢他~"
res += ",旁边的同学很喜欢他~"
print(res)
# (2)字符串的重复 *
strvar = "重要的事情说三遍~"
res = strvar * 3
print(res)
# (3)字符串跨行拼接 \
str1 = "kskfjskjfklsjfklasdjklfjaskldjfaskljfklasjdfklasjdklfjaskldfjaskldjflasjfsf" \
"1122334"
print(str1)
# (4)字符串的索引
#          0 1 2 3 4 5
strvar = "赵世超真帅呀"
#         -6-5-4-3-2-1
print(strvar[1])
# (5)字符串的切片: (截取)
"""
语法 => 字符串[::]  完整格式:[开始索引:结束索引:间隔值]
    (1)[开始索引:]  从开始索引截取到字符串的最后
    (2)[:结束索引]  从开头截取到结束索引之前(结束索引-1)
    (3)[开始索引:结束索引]  从开始索引截取到结束索引之前(结束索引-1)
    (4)[开始索引:结束索引:间隔值]  从开始索引截取到结束索引之前按照指定的间隔截取字符
    (5)[:]或[::]  截取所有字符串
"""
strvar = "王文是这个宇宙当中,最完美,无暇,善良,漂亮,英俊,帅气,潇洒,风流倜傥的神秘男孩"
# (1)[开始索引:]  从开始索引截取到字符串的最后
res = strvar[3:]
print(res)
# (2)[:结束索引]  从开头截取到结束索引之前(结束索引-1)
"""4这个最大值本身获取不到,要获取到4之前的那一个数据 : 取头舍尾"""
res = strvar[:5]
print(res)
# (3)[开始索引:结束索引]  从开始索引截取到结束索引之前(结束索引-1)
res = strvar[10:16]
print(res)
# (4)[开始索引:结束索引:间隔值]  从开始索引截取到结束索引之前按照指定的间隔截取字符
# 从左向右截取
res = strvar[::3]
# 0 3 6 9 12 15 ...
print(res)
# 从右向左截取
res = strvar[::-1]
# -1 -2 -3 -4 -5 -6 ....
print(res)
res = strvar[-3:-10:-2]
# -3 -5 -7 -9   秘的倜风
print(res)
print("<====>")
"""从左到右截,间隔值为正值,反过来,间隔值是负值,才能保证截取到数据"""
"""
res = strvar[-3:-10:10] # 错误的逻辑
print(res)
res = strvar[1:10]
print(res)
"""

4. 小练习

问题:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
1.猜大小的游戏:
设定一个理想数字比如:66,让用户输入数字,如果比66大,则显示猜测的结果大了;如果比66小,则显示猜测的结果小了;只有等于66,显示猜测结果正确。
2.输出 1-100 内的所有奇数
3.输出 1-100 内的所有偶数
4.用户登陆(有三次输错机会)且每次输错误时显示剩余错误次数(提示:使用字符串格式化)
5.写代码,有如下字符串利用切片实现每一个功能
strvar = "132a4b5c"
1)对字符串进行切片形成新的字符串 "132"
2)对字符串进行切片形成新的字符串 "a4b"
3)对字符串进行切片形成新的字符串 "1245"
4)对字符串进行切片形成新的字符串 "3ab"
5)对字符串进行切片形成新的字符串 "c"
6)对字符串进行切片形成新的字符串 "ba3"
6.国际棋盘效果

答案:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
# 1.猜大小的游戏:
# 设定一个理想数字比如:66,让用户输入数字,如果比66大,则显示猜测的结果大了;如果比66小,则显示猜测的结果小了;只有等于66,显示猜测结果正确。
"""
num = 66
str_num = input("请输入理想的数字")
num_new = int(str_num)
if num_new > num:
    print("猜测的结果大了")
elif num_new == num:
    print("显示猜测结果正确")
elif num_new < 66:
    print("则显示猜测的结果小了")
"""
 
# 2.输出 1-100 内的所有奇数
"""
i = 1
while i <= 100:
    if i % 2 == 1:
        print(i)
    i +=1
"""
# 3.输出 1-100 内的所有偶数
"""
i = 1
while i <= 100:
    if i % 2 == 0:
        print(i)
    i +=1
"""
# 4.用户登陆(有三次输错机会)且每次输错误时显示剩余错误次数(提示:使用字符串格式化)
"""
times = 1
while times <= 3:
    pwd = input("请输入您的密码:")
    if pwd == "111":
        print("恭喜你登录成功~")
        break
    # 剩余次数 = 总次数 - 已经使用的次数
    print("你剩余的输入次数是%d" % (3 - times)) 
    times +=1
"""
"""
sign = True
times = 1
while sign:
    pwd = input("请输入您的密码:")
    if pwd == "111":
        print("恭喜你登录成功~")
        sign = False
    else:
        # 剩余次数 = 总次数 - 已经使用的次数
        print("你剩余的输入次数是%d" % (3 - times))
    # 如果次数已经是3次了,强制终止循环;
    if times == 3:
        print("你已经没有机会了... ")
        sign = False   
    times +=1
"""
# 5.写代码,有如下字符串利用切片实现每一个功能
strvar = "132a4b5c"
# 1)对字符串进行切片形成新的字符串 "132"
print(strvar[0:3])
# 2)对字符串进行切片形成新的字符串 "a4b"
print(strvar[3:6])
# 3)对字符串进行切片形成新的字符串 "1245"
print(strvar[::2])
# 4)对字符串进行切片形成新的字符串 "3ab"
print(strvar[1:6:2])
# 5)对字符串进行切片形成新的字符串 "c"
print(strvar[-1:])
# 6)对字符串进行切片形成新的字符串 "ba3"
print(strvar[-3::-2]) # -3 -5 -7
# 6.国际棋盘效果
# 方法一
j = 0
while j < 8:
    # □■□■□■□■
    if j % 2 == 0:
        print("□■□■□■□■",end="")           
    # ■□■□■□■□
    else:
        print("■□■□■□■□",end="")
    print()
    j +=1
"""
# □■□■□■□■
i = 0      
while i < 8:
    if i % 2 == 0:
        print("□",end="")
    else:
        print("■",end="")
    i +=1
# ■□■□■□■□
i = 0      
while i < 8:
    if i % 2 == 0:
        print("■",end="")              
    else:
        print("□",end="")
    i +=1
"""
print("<=====>")
j = 0
while j < 8:
    # □■□■□■□■
    if j % 2 == 0:
        i = 0      
        while i < 8:
            if i % 2 == 0:
                print("□",end="")
            else:
                print("■",end="")
            i +=1      
    # ■□■□■□■□
    else:
        i = 0      
        while i < 8:
            if i % 2 == 0:
                print("■",end="")              
            else:
                print("□",end="")
            i +=1
    print()
    j +=1
 
# 方法二
"""
□■□■□■□■
■□■□■□■□
□■□■□■□■
■□■□■□■□
□■□■□■□■
■□■□■□■□
□■□■□■□■
■□■□■□■□
"""
print("<=====>")
i = 0
while i < 64:
    # 判断当前是奇数行还是偶数行
    if i // 8 % 2 == 0:
        # □■□■□■□■
        if i % 2 == 0:
            print("□",end="")
        else:
            print("■",end="")
    else:
        # ■□■□■□■□
        if i % 2 == 0:
            print("■",end="")          
        else:
            print("□",end="")
    # 第八个方块换行
    if i % 8 == 7:
        print()    
    i +=1
print("<=====>")
# 方法三
i = 0
while i < 4:
    strvar = ""
    j = 0
    # 打印黑白相间的小方块
    while j < 8:
        if j % 2 == 0:
            strvar += "□"
        else:
            strvar += "■"
        j +=1
    # 正向打印
    print(strvar)
    # 逆向打印
    print(strvar[::-1])
    i +=1

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

推荐文章