总结
循环 : 让代码只写一遍,但是可以多次执行
循环分为:for循环,while循环
for循环
语法是:
# for 变量 in 序列:
# 循环体
变量:可以是没有定义过变量的变量名,也可以是已经定义过变量的变量名
序列:容器型的数据类型:字符串、列表、元组、字典、集合、迭代器、生成器、range等
循环体:和for保持一个缩进的一条或者多条语句(需要重复执行的代码)
执行过程:让变量在序列中取值,一个一个取,取完为止,每取一个值就执行一次循环体;
for x in 'aaa':
print('hello world') # 打印三次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)
# 练习1:打印100以内所有的偶数
for x in range(0, 100, 2):
print(x)
# 练习2:统计100以内奇数的个数
li = 0
for y in range(1, 100, 2):
li += 1
print(li)
# 练习3:统计100以内能被3整除的偶数的个数
count = 0
for z in range(0, 100, 6):
count += 1
print(count)
# 练习4:计算1+2+3+...+100的和
count = 0
for i in range(0, 100):
count += (i+1)
print(count)
# 练习5:计算100到200之间能被3整除,但是不能被5整除的数的和
count = 0
for i in range(100, 200):
if i % 3 == 0 and i % 5 != 0:
count += i
print(count)
# 或者 (执行效率高于第一个)
count = 0
for i in range(102, 200, 3):
if i % 5 != 0:
count += i
print(count)
while循环
语法:
while 条件语句:
循环体
while :固定写法,关键字
条件语句:任何有结果的表达式(除了赋值语句)
循环体: 和while保持一个缩进的一条或者多条语句(需要重复执行的代码)
执行过程:先判断条件语句是否为True,如果是,就执行循环体;执行完循环体后再次判断条件语句是否True,为True就再次执行循环体…以此类推,如果条件语句的结果是False,循环体就结束。
# 练习1.用while循环打印3次'hello world'
# a = 0
# while a < 3:
# print('hello world')
# a += 1
#for循环的写法:
# for x in range(3):
# print('aaa')
# 练习2:提示用户输入密码,直到输入正确为止
pw = 123456
x = int(input('请输入密码:')) # 获得第一次输入的密码
while x != pw: # 如果输入的密码和设置的密码不相等
x = int(input('请输入密码:')) # 输入的密码x 再去和条件做比较,满足则不循环,不满足则再次循环
# 判断输入的数字是否正确
import random
num = random.randint(0, 100) # 产生一个0-100的随机整数,并且保存到变量num中
x = int(input('请输入数字:'))
count = 1
while x != num:
if x < num:
print('小了再大点:')
else:
print('大了再小点')
x = int(input('请输入数字:'))
count += 1
print('恭喜你猜对了!')
print('总共猜了', count, '次')
循环关键字
continue、break、else
-
continue - 结束一次循环
- 执行循环体的时候如果遇到continue,当次循环直接结束,直接进入下一次循环
-
break - 结束整个循环,只能在循环体中使用
- 执行循环体的时候遇到break,整个循环直接结束
for x in range(2): print('aaa') print('bbb') break print('ccc') print('x:', x)
-
else
- else 的存在不影响原来循环的执行;
- else后面的代码段在循环自然死亡的时候会执行,循环因为遇到break而结束的时候,else后面的代码不会执行
""" for 变量 in 序列: 循环体 else: 代码段 while 条件语句: 循环体 else: 代码段 """ for x in range(3): print('aa', x) if x == 3: break else: print('1')
使用while 循环的套路
"""
while True:
每次循环要做的事情
if 循环结束的条件:
break
"""
pw = '1234'
while True:
x = input('请输入密码:')
if x == pw:
break
作业
- 使用for和while循环输出 0~100内所有3的倍数。
for x in range(3,100,3):
print(x)
num = 3
while num < 100:
if num % 3 == 0:
print(num)
num += 1
- 使用for和while循环输出100~200内个位数或者十位数能被3整除的数
for x in range(100, 201):
if (x % 10) % 3 == 0 or ((x % 100) % 10) % 3 == 0:
print(x)
x = 100
while x < 201:
if (x % 10) % 3 == 0 or ((x % 100) % 10) % 3 == 0:
print(x)
x += 1
进阶题
- 使用循环计算
1*2*3*4*...*10
的结果
i = 1
for x in range(1, 11):
i *= x
print(i)
- 统计100以内个位数是2并且能够被3整除的数的个数
num = 0
for x in range(0, 101):
if (x % 10 == 2) and (x % 3 == 0):
num += 1
print(num)
# 或者
for x in range(0, 100, 3):
if x % 10 == 2:
num += 1
print(num)
- 输入任意一个正整数,求他是几位数?
# 假如输入为120,整除10得12,次数加1,12整除10得1.2,次数加1,结束循环,打印次数
num = 1
x = int(input('请输入一个数:'))
while x > 10:
x = x // 10
num += 1
print(num)
-
打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字⽴方和等于该数本身。例如:153是
⼀个⽔仙花数,因为
1³ + 5³ + 3³
等于 153。
count = 0
for i in range(100, 1000):
x = i % 10 # 获取个位
y = i // 10 % 10 # 获取十位
z = i // 100 # 获取百位
if i == z**3 + y**3 + x**3:
print(i)
挑战题
- 判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数)
num = 5
if num > 1:
for i in range(2, num): # 循环2,3,4
if (num % i) == 0: # 如果 5 % 2 余 1 不等于 0.输出不是质数
print('不是质数')
break
else:
print('是质数')
else:
print('不是质数')