day4-分支与循环
1.流程控制
'''1.流程控制-控制代码执行顺序
(1)顺序结构:代码从上往下依次执行,每条语句只执行一次。(默认)
(2)分支结构:根据条件选择执行或者不执行某些代码(使用if)
(3)循环结构:让代码重复执行(for,while)
'''
2.分支结构
'''
1,if单分支结构 —— 如果...就...
语法:
if 条件语句:
代码段
说明:
(1)if - 关键字:固定写法
(2)条件状语 - 可以是任何有结果的表达式,包括:具体的数据,运算表达式(赋值运算除外),已经赋值 过的变量,函数调用表达式
(3): - 固定写法
(4)代码段 - 从结构上就是和if保持一个缩进的一条或多条语句(至少一条,可以用pass占位);
从逻辑上,代码段就是条件成立的时候才执行的代码
'''
if 10: # 默认把具体数据转换为bool
print('===') #执行
'''
2,if双分支结构 —— 如果...就...否则...
if 条件语句:
代码段1(满足条件时执行)
else:
代码段2(不满足时执行)
3.if多分支结构 —— 如果...就...如果...就...否则...
if 条件1:
代码段1
elif 条件2:
代码段2
...
else:
代码段N
'''
3.循环结果
'''
1.for循环
(1)语法:
for 变量 in 序列:
循环体
(2)说明:
1),for - 关键字:固定写法
2).变量 - 有效变量名(可以是已经定义的,也可以是没有定义过的)
3).in - 关键字:固定写法
4).序列 - 容器型数据类型(字符串,列表,字典,集合,元组,迭代器,range等等)
5). : - 固定写法
6).循环体 - 和for保持一个缩进的一条或多条语句;
(3)执行过程:
让变量去序列中去取值,一个一个的取,取完为止;取一个值就执行一次循环体。
for循环的循环次数和序列中的个数有关。
2.rangge
(1)range(N)- 产生[0,N)的等差数列,公差是1
(2)range(M,N) -产生[M,N)的等差数列,公差是1
(3)range(M,N,step)-产生[M,N)的等差数列,公差是step
'''
4.for循环的基本运用场景
'''
1.累计求和
练习1:写代码求 1+2+...+100的和'''
# 第一步:定义变量保持结果,变量的初始值一般为0(求和),1(求乘积)
result = 0
# 第二步:用循环一个一个的获取累计数据
for x in range(1,101):
result+=x #result = result + x
print(result)
'''练习2:求10的阶乘:1*2*...*10'''
result=1
for x in range(1,11):
result*=x
print(result)
'''练习3:求100到200中所有能被3整除的偶数的和'''
#方法1
result=0
for x in range(100,201,2):
if x%3==0:
result+=x
print(result)
# 方法2
result=0
for x in range(102,201,6):
result+=x
print(result)
'''2.统计个数
练习1:统计1000内奇数的个数'''
#第一步:定义变量保存最后的个数,变量的初始值均为0
count=0
#第二步:使用循环获取统计对象
for x in range(1,1001,2):
count+=1
print(count)
'''练习2:统计1000内能被3整除但是不能被7整除的个数'''
count=0
for i in range(0,1000,3):
if i%7!=0:
count+=1
print(count)
基础题
-
根据输入的成绩的范围打印
及格
或者不及格
。score=int(input('请输入成绩:')) if score>=60: print('及格') else: print('不及格')
-
根据输入的年纪范围打印
成年
或者未成年
,如果年龄不在正常范围内(0~150)打印这不是人!
。age=int(input('请输入年纪:')) if 18<=age<=150: print('成年') elif 0<=age<18: print('未成年') else: print('不是人')
-
输入两个整数a和b,若a-b的结果为奇数,则输出该结果,否则输出提示信息
a-b的结果不是奇数
a=int(input('请输入a的值(整数):')) b=int(input('请输入b的值(整数):')) if (a-b)%2==1: print(a-b) else: print('不是奇数')
-
使用for循环输出 0~100内所有3的倍数。
for i in range(0,101,3): print(i)
-
使用for循环输出100~200内个位数或者十位数能被3整除的数。
for i in range(100,201): if i%10%3==0 or i%100//10%3==0: print(i)
-
使用for循环统计100~200中十位数是5的数的个数
count=0 for i in range(100,201): if i%100//10==5: count+=1 print(count)
-
使用for循环打印50~150中所有能被3整除但是不能被5整除的数
for i in range(51,151,3): if i%5!=0: print(i)
-
使用for循环计算50~150中所有能被3整除但是不能被5整除的数的和
result=0 for i in range(51,151,3): if i%5!=0: result+=i print(result)
-
统计100以内个位数是2并且能够被3整除的数的个数。
count=0 for i in range(2,100,10): if i%3==0: count+=1 print(count)
进阶题
-
输入任意一个正整数,求他是几位数?
注意: 这儿不能使用字符串,只能用循环
方法1:
sum=int(input('请输入一个正整数')) for i in range(1,100): if sum//(10**i)==0: print('这是一个',i,'位数') break
方法2:
count=0 for i in input(): count+=1 print('这是一个',count,'位数')
-
打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字⽴方和等于该数本身。例如:153是
⼀个⽔仙花数,因为
1³ + 5³ + 3³
等于 153。for i in range(100,1000): if((i%10)**3+(i%100//10)**3+(i//100)**3==i): print(i)
-
判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数)
count=0 sum=int(input('请输入一个大于0整数')) for i in range(1,sum+1): if sum%i==0: count+=1 if count>2: print('这不是素数') else: print('这是素数')
-
输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
for i in range(1,10): print() for j in range(1,10): if i>=j: print(i,'*',j,'=',i*j,end=' ')
-
这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)
for a in range(35):
for b in range(51):
for c in range(100):
if 3*a+2*b+0.5*c==100 and a+b+c==100:
print('大马:',a,'中马:',b,'小马:',c)