四.循环结构(托更好久,终于到第四章循环结构了,学了这章你就可以用循环写一些平时比较麻烦,用人解决较费时的了。在本章最后会有几道题并且有解答,可以的话自己做一做)
(((((((((这一章的内容主要就是看代码去理解为什么)))))))))
1.while循环结构(很重要)
1.while语句:
while语句的一般格式:
while 表达式:
语句块
注意:while语句中的表达式表示循环条件,可以是结果能解释为True或False的任何表达式,常用的是关系表达式和逻辑表达式。我的理解:while的表达式就是你给一个 a > 2,但a不大于2的时候,循环就结束。
(1)
a = 4
while a > 2:
print("我是大帅哥",a)
a = a - 1
我是大帅哥 4
我是大帅哥 3
(2)while else
a = 4
while a > 2:
print("我是大帅哥")
a = a - 1
else:
print("你是大帅哥")
我是大帅哥
我是大帅哥
你是大帅哥
2.for循环结构(很重要)
1.for循环语句:
for 目标变量 in 序列对象:
语句块
注意:for语句的首行定义了目标变量和遍历的序列对象,后面是需要重复执行的语句块。注意缩进。
(1)
for i in [1,2,3]:
print(i)
1
2
3
for i in ['a','aa','aaa']
a
aa
aaa
(2)range在for循环的应用
for i in range(1,3):
print(i)
1
2
for i in range(1,5,2):
1
3
注意:使用range的时候 range(1,3,5)是左闭右开的,意思就是左边的数取得到,右边的数取不到,这个5 是步长 就是每一次取到的数的间隔,默认是1
3.循环控制语句(也很重要,都很重要,记就完事了)
1.break语句
break语句用在循环体内,迫使所在循环立即终止,即跳出所在循环体,继续执行循环结构后面的语句。
var = 10
while var > 0:
print("谁是帅哥")
var = var - 1
if var == 5:
break
print('GG')
谁是帅哥
谁是帅哥
谁是帅哥
谁是帅哥
谁是帅哥
GG
2.continue语句
当循环结构中执行continue语句时,并不会退出循环结构,而是立即结束本次循环,重新开始下一轮循环。意思就是到了continue这行语句的时候,本次循环就结束了,直接到下一次循环。
var = 10
while var > 0:
var = var - 1
if var == 5:
continue
print("谁是帅哥",var)
print('GG')
谁是帅哥 9
谁是帅哥 8
谁是帅哥 7
谁是帅哥 6
谁是帅哥 4
谁是帅哥 3
谁是帅哥 2
谁是帅哥 1
谁是帅哥 0
GG
3.pass
pass语句是一个空语句,它不做任何操作,代表一个空操作。
for letter in 'Python':
if letter == 'h':
pass
print('123123')
print('this is me',letter)
print('GG')
this is me P
this is me y
this is me t
123123
this is me h
this is me o
this is me n
GG
4.循环的嵌套(循环结构也是可以嵌套的)直接上代码
#输出[100,1000]以内的全部素数
import math
n = 0
for m in range(101,1000,2):
i,j = 2,int(math.sqrt(m))
while i <= j:
if not(m%i):
break
else:
i = i + 1
else:
print(m,end='')
n = n + 1
if n % 10 == 0:
print("\n")
本章内容就这么多,最后每一个结构举一个例子并带着代码:
(1)while: 输入一个整数,输出其位数
n = int(input())
k = 0
while n > 0:
k += 1
n //= 10
print("k=",k)
(2)for:输入20个数,求出其中的最大数与最小数
x = int(input())
max = min = x
for i in range(1,20):
x = int(input())
if max > x:
max = x
elif x < min:
min = x
print("最大数:",max,"最小数",min)
(3)如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。 例如1^3 + 5^3 + 3^3 = 153。
for i in range(1,1000):
a1 = i // 100 #百位
a2 = i % 100 // 10 #十位
a3 = i % 10 #个位
if i <10:
if a1**1 + a2**1 + a3**1 == i:
print(i)
elif i <100:
if a1**2 + a2**2 + a3**2 == i:
print(i)
elif i < 1000:
if a1**3 + a2**3 + a3**3 == i:
print(i)
(4)这个是中国古代的一个经典的数学题,就是说,有一百铜币,买一百只鸡,其中公鸡5铜币一只,母鸡3铜币一只,小鸡一铜币三只, 要求每种鸡必须购买一只,求出一共有几种买法
rmb = 300
f_chicken = 15
m_chicken = 9
lit_chicken = 1
count = 0
for i in range(1,101):
for j in range(1,101):
for k in range(1,101):
if i*f_chicken + j*m_chicken + k * lit_chicken == 300:
print("公鸡"+str(i)+"母鸡"+str(j)+"小鸡"+str(k))
count +=1
print(count)