循环 - 让代码重复执行 (代码写一遍,运行的时候可以执行多次)
- for循环
"""
语法:
for 变量 in 序列:
循环体
说明:
for、in - 关键字,固定写法
变量 - 写一个变量名。(可以是已经定义过的,也可以没有没有定义过的)
序列 - 容器型数据类型对应的数据、常见序列:字符串、列表、元祖、字典、集合、迭代器、生成器、range。
: - 固定写法
循环体 - 和for保持一个缩进的一条或者多条语句,就是需要冲的
执行过程:
让变量去序列中取值,取完为止,每取一个执行一次循环体。
for循环循环的次数和序列中元素的个数有关
"""
for x in 'abc':
print(x, 'hello')
"""
x = 'a': print(x,'hello') -> print('a','hello')
x = 'b': print(x,'hello') -> print('b','hello')
...
x = '3': print(x,'hello') -> print('3','hello')
"""
-
range函数 - 产生指定范围的数字序列
1) range(N) - 产生[0,N)的数字序列,其中步长是1
2) range(M,N) - 产生[M,N)的数字序列,步长为1
3) range(M,N,step) - 产生[M,N)的数字序列,步长为step指定的值
print('======用法1:产生0开始步长为1的数字序列======')
for x in range(10):
print(x)
print('======用法2:直接的控制循环次数=======')
for x in range(4):
print('hello!')
print('======================')
for x in range(-10, 20):
print(x)
print('======================')
for x in range(10, 20):
print(x)
print('======================')
for x in range(10, 20, 3):
print(x)
print('======================')
for x in range(20, 0, -3):
print(x)
# 练习1:打印100以内所有的偶数
# 方法1:
print('==========方法1===========')
for x in range(100):
if x % 2 == 0:
print(x)
# 方法2:
print('===========方法2===========')
for x in range(0, 100, 2):
print(x)
# 练习2:打印100~200中所有个位数是3的数
# 方法1:
print('===========方法1==========')
for x in range(100, 200):
if x % 10 == 3:
print(x)
# 方法2:
print('===========方法2===========')
for x in range(103, 201, 10):
print(x)
# 练习3:打印所有的水仙花数
print('====================')
for x in range(100, 1000):
if (x % 10)**3 + (x % 100 // 10)**3 + (x // 100)**3 == x:
print(x)
print('===========方法2===========')
for num in range(100,1000):
ge = num % 10
shi = num // 10 % 10
bai = num // 100
if ge ** 3 + shi ** 3 + bai ** 3 == num:
print(num)
两个循环套路
print('======用法1:产生0开始步长为1的数字序列======')
for x in range(10):
print(x)
print('======用法2:直接的控制循环次数=======')
for x in range(4):
print('hello!')
print('======================')
for x in range(-10, 20):
print(x)
print('======================')
for x in range(10, 20):
print(x)
print('======================')
for x in range(10, 20, 3):
print(x)
print('======================')
for x in range(20, 0, -3):
print(x)
# 练习1:打印100以内所有的偶数
# 方法1:
print('==========方法1===========')
for x in range(100):
if x % 2 == 0:
print(x)
# 方法2:
print('===========方法2===========')
for x in range(0, 100, 2):
print(x)
# 练习2:打印100~200中所有个位数是3的数
# 方法1:
print('===========方法1==========')
for x in range(100, 200):
if x % 10 == 3:
print(x)
# 方法2:
print('===========方法2===========')
for x in range(103, 201, 10):
print(x)
# 练习3:打印所有的水仙花数
print('====================')
for x in range(100, 1000):
if (x % 10)**3 + (x % 100 // 10)**3 + (x // 100)**3 == x:
print(x)
print('===========方法2===========')
for num in range(100,1000):
ge = num % 10
shi = num // 10 % 10
bai = num // 100
if ge ** 3 + shi ** 3 + bai ** 3 == num:
print(num)
while循环
# 1. while循环
"""
语法:
while 条件语句:
循环体
说明:
while - 关键字;固定写法
条件语句 - 任何有结果的表达式(只有赋值语句不行)
: - 固定写法
循环体 - 和while保持一个缩进的一条或者多条语句;需要重复执行代码
执行过程:
先判断条件语句是否为True,如果为True就执行循环体,执行完循环体再判断条件是否为True,如果为True就在执行循环体
...以此类推,当条件语句结果为False循环直接结束
"""
# 使用while循环控制打印10个‘hello’
num = 10
while num > 0:
print('hello')
num -= 1
# whil循环控制循环次数的原则:让条件经历过指定次数后由True变数False
# for x in range(10):
# print('hello')
# 2. while和for的选择
# for循环:循环次数确定的时候使用
# while:循环次数不确定的时候使用(程序员在写代码的时候d)
# 练习:提示用户不断输入内容,直到输入的数据是0为止
value = ''
while value != '0':
vlaue = input('请输入')
循环关键字
# 1. continue
"""
continue和break只能出现在循环体中
1) continue - 结束一次循环/结束当次循环
如果在执行循环体的时候遇到了continue,那么当次循环结束,直接进入下一次循环
2) break - 结束整个循环
如果在执行循环体的时候遇到了break,整个循环直接结束
"""
for x in range(4):
print('===')
continue
print('+++')
print('---')
# 2. 有了break的while循环
"""
while True:
需要重复执行的操作
if 循环结构的条件
break
"""
while True:
value = input('请输入')
if value == '0':
break
# 3. else
"""
for 变量 in 序列:
循环体
else:
代码段
完整的while循环:
while 条件语句:
循环体
else:
循环体
else结构的存在不影响原来循环的执行,当循环自然死亡else后面的代码段会执行,如果循环是因为遇到break而结束的else后面的代码段不执行
"""
for x in range(4):
print(x, '=====')
if x == 2:
break
else:
print('else')
基础题:
4.使用for和while循环输出 0~100内所有3的倍数。
# for循环
for x in range(3, 101, 3):
print(x)
# while循环
print('============================')
num = 0
while num % 3 == 0:
print(num)
num += 3
if num > 100:
break
5.使用for和while循环输出100~200内个位数或者十位数能被3整除的数。
# for循环
for i in range(100, 200):
ge = i % 10
shi = i // 10 % 10
# print(ge, shi)
if ge % 3 == 0 or shi % 3 == 0:
print('100~200内个位数或者十位数能被3整除的数为', i)
print('-------------------------------------------')
# while循环
i = 100
while i < 200:
ge = i % 10
shi = i // 10 % 10
if ge % 3 == 0 or shi % 3 == 0:
print('100~200内个位数或者十位数能被3整除的数为', i)
i += 1
6.统计100~200中十位数是5的数的个数
for x in range(100, 200):
if x % 100 // 10 == 5:
print('十位数是5的个数:', x)
7.打印50~150中所有能被3整除但是不能被5整除的数
for x in range(50,150):
if (x % 3 == 0 ) and (x % 5 != 0):
print(x)
8.计算50~150中所有能被3整除但是不能被5整除的数的和
num = 0
for x in range(50, 150):
if (x % 3 == 0) and (x % 5 != 0):
num += x
print('50~150中所有能被3整除但是不能被5整除的数的和', num)
进阶题
1.使用循环计算1*2*3*4*...*10
的结果。
sum1 = 1
for x in range(1, 11):
sum1 *= x
print('1*2*3*4*...*10=', sum1)
2.统计100以内个位数是2并且能够被3整除的数的个数
count = 0
for x in range(2, 100, 10):
if x % 3 == 0:
count += 1
print('100以内个位数是2并且能够被3整除的数的个数:',count)
3.输入任意一个正整数,求他是几位数?
注意: 这儿不能使用字符串,只能用循环
number = int(input('请输入一个正整数:'))
count = 1 # 计数,默认1位数
while number // 10:
count += 1
number /= 10
print('这是个', count, '位数')
4.打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字⽴方和等于该数本身。例如:153是
⼀个⽔仙花数,因为 1³ + 5³ + 3³
等于 153。
for x in range(100,1000):
a = x // 100
b = x // 10 % 10
c = x % 10
if a ** 3 + b ** 3 + c ** 3 == x:
print(x)
挑战题
1.判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数)
num = int(input('请输入一个数:'))
for x in range(2, num):
if num % x == 0:
print('这个数不是质数!')
break
else:
print('这个数是质数!')
2.求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34… (这儿的n可以是任意正整数,可以通过输入来确定)
n = int(input('请输入一个正整数:'))
f1 = f2 = 1
if n == 1 or n == 2:
print('第', n, '个数的斐波那契数列值为:',f1)
for x in range(2, n):
f3 = f1 + f2
f1 = f2
f2 = f3
fn = f2
print('第', n, '个数的斐波那契数列值为:',fn)
3.输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
for x in range(1,10):
for y in range(1, x+1):
print(y, '*', x, '=', x*y,end='\t')
print(end='\n')