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