今日份总结
一、流程控制
-
顺序结构:代码从上往下依次执行,每天语句只执行一次。(默认)
print('hello') print('word')
-
分支结构:根据条件选择执行或者不执行部分代码(使用if)
age = 10 if age >= 18: print('成年') else: print('未成年')
-
循环结构:让代码重复执行(for、while)
for i in range(5):
print(i)
二、if分支结构
1、if单分支结构 - 如果… 就…
解决的问题:满足条件执行某个操作,添加不满足的时候就不执行
语法:
if 条件语句:
代码段(满足条件才会执行的代码)
if - 关键字;固定写法
条件语句 - 可以任何有结果的表达式,包括:具体的数据、运算表达式(赋值运算例外)、已经赋值过的
-
变量、函数调用表达式等
-
- 固定写法
代码段 - 从结构上就是和if保持一个缩进的一条或者多条语句(至少一条);逻辑上,代码段就是条件成立
的时候才会执行的代码
age = 20
if age >= 18:
print('成年')
2、if双分支结构 - 如果…就…否则…
语法:
if 条件语句:
代码段1(满足条件需要执行的代码)
else:
代码段2(条件不满足的时候需要执行的代码)
代码段3(不管条件成不成立都执行)
#如果指定的年是闰年就打印'闰年'
year = 2001
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
print('闰年')
else:
print('非闰年')
3、if多分支结构 - 如果…就…如果…就…如果…就…否则…
语法:
if 条件1:
代码段1
elif 条件2:
代码段2
elif 条件3:
代码段3
…
else:
代码段N
注意:elif可以是任意多个,else可以有也可以没有
score = 83
if score >= 90:
print('优秀')
elif score >= 80:
print('良好')
elif score >= 70:
print('中等')
elif score >= 60:
print('及格')
else:
print('不及格')
三、for循环
1、for循环
1)语法:
for 变量 in 序列:
循环体(需要重复执行的代码)
2)说明:
for - 关键字;固定写法
变量 - 有效变量名(可以是已经定义的,也可以是没有定义的)
in - 关键字;固定写法
-
序列 - 容器类数据类型的数据,容器型数据类型包括:字符串、列表、字典、集合、元组、迭代器、生成器、range等
-
- 固定写法
循环体 - 和for保持一个缩进的一条或者多条语句,循环体就是需要重复执行的代码
3)执行过程
让变量去序列中取值,一个一个的取,取完为止;取一个值就执行一次循环体
for循环的循环次数和序列中的元素的个数有关
2、range函数 - 创建等差数列(整数)
1)range(N) - 产生[0,N)的等差数列,差是1
2)range(M,N) - 产生[M,N)的等差数列,差是1
3)range(M,N,step) - 产生[0,N)的等差数列,差是step
3、应用场景
1)累计求和
第一步:定义变量保存结果,变量的初始值一般是零(求和)或者1(求乘积)
第二步:用循环一个一个的获取累计数据
第三步:在循环体将取到的每一个数据合并到结果对应的变量中
#求1+2+3+...+100的和
result = 0
for i in range(1,101):
result += i
print(result)
2)统计个数
第一步:定义变量保存最后的个数,变量默认内置是0
第二步:使用循环获取统计对象
第三步:遇到一个满足统计条件的数据个数就加1
#统计1-1000中奇数的个数
count = 0
for i in range(1000):
if i % 2 == 1:
count += 1
print(count)
作业
基础题
-
根据输入的成绩的范围打印
及格
或者不及格
。score = float(input('请输入分数:')) if score >= 60: print('及格') else: print('不及格')
-
根据输入的年纪范围打印
成年
或者未成年
,如果年龄不在正常范围内(0~150)打印这不是人!
。age = int(input('请输入年龄:')) if age <= 18: print('未成年') elif age <= 150: 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('a-b的结果不是奇数')
-
使用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 // 10 % 10 % 3) == 0: print(i)
-
使用for循环统计100~200中十位数是5的数的个数
count = 0 for i in range(100,201): if i // 10 % 10 == 5: count += 1 print(count)
-
使用for循环打印50~150中所有能被3整除但是不能被5整除的数
for i in range(50,151): if i % 3 == 0 and i % 5 != 0: print(i)
-
使用for循环计算50~150中所有能被3整除但是不能被5整除的数的和
sum = 0 for i in range(50,151): if i % 3 == 0 and i % 5 != 0: sum += i print(sum)
-
统计100以内个位数是2并且能够被3整除的数的个数。
count = 0 for i in range(3,100,3): if i % 10 == 2: count += 1 print(count)
进阶题
-
输入任意一个正整数,求他是几位数?
count = 0 num = input('请输入一个整数:') for i in num: if i != '': count += 1 print(count)
-
打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字⽴方和等于该数本身。例如:153是
⼀个⽔仙花数,因为
1³ + 5³ + 3³
等于 153。for num in range(100,1000): if ((num // 100)**3 + (num // 10 % 10)**3 + (num % 10)**3) == num: print(num)
-
判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数)
num = int(input('请输入一个数字:')) for i in range(2, num): if num % i == 0: print('不是素数') break else: print('是素数') break
-
输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
for i in range(1, 10): for j in range(1, i+1): print(j,'x',i,'=',i*j,end=' ') print()
-
这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)
big_horse = 0
medium_horse = 0
small_horse = 0
for big_horse in range(34):
for medium_horse in range(51):
for small_horse in range(200):
if big_horse * 3 + medium_horse * 2 + small_horse * 0.5 == 100 and big_horse + medium_horse + small_horse == 100 :
print(big_horse,medium_horse,small_horse)