总结
循环结构
-
1.for循环
-
语法:
``` for 变量 in 序列: 循环体 ```
-
说明:
for, in - 关键字,固定写法
变量 - 变量名(可以是没有定义过的变量的变量名,也可以是定义过的变量的变量名)
-
序列 - 容器型数据类型的数据,常见的序列:字符串, 列表, 元组, 字典, 集合, 迭代器, 生成器和range等
-
- 冒号,固定写法
循环体 - 和for保持一个缩进的一条或者多条语句.(循环体就是需要重复执行的代码)
-
-
执行过程:
-
让变量去序列中取值,一个一个的取,取完为止,每取一个值就执行一次循环体.
-
序列中元素的个数决定for循环的循环次数
-
for x in 'abc': print(x, 'hello world!') ''' 第一次: x = 'a':print(a, 'hello world') 第一次: x = 'b':print(b, 'hello world') 第一次: x = 'c':print(c, 'hello world') 循环结束 '''
-
-
range函数 - 产生指定范围的数字序列
range(N) - 产生0~(N-1)的数字序列,例如:range(3) - 产生一个数字序列,里面的元素是(0, 1, 2)
range(M-N) - 产生M~(N-1)的数字序列,例如:range(10, 15) - 产生一个数字序列,里面的元素是(10, 11, 12, 13, 14)
range(M, N, step) - 产生M~N的序列,步长是step(每次增加step) - 步长为负数是,从大到小
-
for x in range(3): print('循环体') for y in range(-3, 2): print('y:', y) for z in range(1,10,2): print(z) for c in range(10,2,-1):
-
-
while循环
-
语法:
''' while 条件语句: 代码段 ```
-
说明:
while - 关键字,固定写法
-
条件语句 - 任何有结果的表达式(除了赋值语句)
-
- 冒号,固定写法
循环体 - 和while保持一个缩进的一条或者多条语句(需要重复执行的代码)
-
-
执行过程:
-
先判断条件语句是否为True,如果是,就执行循环体;执行完循环体,再判断条件语句是否为True,为True就再执行循环体…以此类推.如果条件语句的结果是False循环就结束
x = 0 while x < 3: print('hello world') x += 1
-
-
for循环 和 while循环的选择
-
循环次数确定的时候使用for循环,循环次数不确定的时候使用为了循环.
pw = '123456' x = input('你的密码:') while x != pw: x = input('你的密码:') # 简化写法 while input('你的密码:') != pw: pass
import random num = random.randint(0, 100) input_num = int(input('请输入数字(0~100):')) count = 1 while input_num != num: # 给出提示 if input_num > num: print('大了,小点!') # 重新输入 else: print('小了,大点!') input_num = int(input('请输入数字(0~100):')) count += 1 print('猜对啦,总共猜了', count, '次') if count < 4: print('天才') elif count <10: print('普通人') else: print('智商有点捉急啊')
-
-
-
循环关键字
-
countinue, break, else
-
1). continue - 结束一次循环 (只能在循环体中使用,执行循环体的时候如果遇到continue,当次循环直接结束,直接进入下次循环)
for x in range(10,20): if x % 3 == 0: continue print('x:', x)
-
2). break - 结束整个循环 (只能在循环体中使用,执行循环体的时候遇到break,整个循环体直接结束)
for x in range(3): print('1') print('2') break print('3') # 使用while循环的套路 ''' while True: 每次循环要做的事: if 循环结束的条件: break '''
-
else
-
总结:
-
else的存在不影响原来循环的执行.
- else后面的代码段在循环自然死亡的时候会执行,循环因为遇到break而结束的时候else后面的代码不会执行
-
-
语法:
for 变量 in 序列:
循环体
else:
代码段
while 条件语句:
循环体
else:
代码段for x in range(3): print('hello world', x) if x == 1: break else: print('交代遗言!')
-
-
-
作业
基础题
4 使用for和while循环输出 0~100内所有3的倍数。
for x in range(1, 100,3):
print(x)
num1 = 1
while num1 < 100:
if num1 % 3 == 0:
print(num1)
num1 += 1
5 使用for和while循环输出100~200内个位数或者十位数能被3整除的数。
for x in range(100,200):
if (x % 10) % 3 == 0 or (x % 100) % 3 == 0:
print(x)
x = 100
while x < 200:
if (x % 10) % 3 == 0 or (x % 100) % 3 == 0:
print(x)
x += 1
进阶题
1.使用循环计算1*2*3*4*...*10
的结果。
num = 1
for x in range(1,11):
num *= x
print(num)
2.统计100以内个位数是2并且能够被3整除的数的个数。
num = 0
for x in range(0, 101,3):
if x % 10 == 2:
num += 1
print('个数:', num)
#
num1 = 0
for x in range(0, 101):
if (x % 10) == 2 and x % 3 == 0:
num1 += 1
print('个数:', num1)
3 输入任意一个正整数,求他是几位数?
注意: 这儿不能使用字符串,只能用循环
num = 1
x = int(input('输入任意整数:'))
while x > 10:
x = x // 10
num += 1
print('这是', num, '位数.')
4 打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如:153是
一个水仙花数,因为 1³ + 5³ + 3³
等于 153。
# range(100, 1000) # x ** 3 + y ** 3 + z ** 3 == x * 100 + y * 10 + z
for num in range(100, 1000):
x = num // 100
y = num % 100 // 10
z = num % 10
if num == x ** 3 + y ** 3 + z ** 3:
print(num)
挑战提
-
判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数)
num = 7 if num < 2: print('不是质数') count = 0 for x in range(2, num): # 取出除本身以内的所有数 if num % x == 0: # 用本身除以所有的数 能否会被整除 count += 1 # 会被整除几次 if count < 1: print('质数') else: print('不是质数')
-
求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34… (这儿的n可以是任意正整数,可以通过输入来确定)
-
输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
-
这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)