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