day4 - 学习总结与作业
流程控制
1) 顺序结构:代码从上往下依次执行,每条语句只执行依次(默认) 2) 分支结构:根据条件选择执行或者不执行部分代码(使用if) 3) 循环结构:让代码重复执行(for、while)
分支结构
age = 10
if age >= 18:
print('成年')
else:
print('未成年')
if 分支结构
if单分支结构
语法: if 条件语句: 代码段
说明: if - 关键字;固定写法 条件语句 - 可以使任何有结果的表达式,包括:具体的数据、运算表达式(赋值运算例外)、已经付治国的变量、函数调用表达式等 : - 固定写法 代码段 - 从结构上就是和if保持一个缩进的一条或多条语句(至少一条);逻辑上:代码就是条件成立的时候才会执行的代码
if ():
print('a')
如果是闰年打印闰年
a = float(input('请输入年份'))
if a % 4 == 0 and a % 100 != 0 or a % 400 == 0:
print('闰年')
else:
print('漏闰')
如果变量保存整数打印’整型’
num = 34
if type(num) == int:
print('整型')
if双分支结构
语法: if 条件语句: 代码段1(满足条件执行的代码) else: 代码段2(不满足条件执行的代码) 代码段3(不管满不满足条件都执行的代码)
判断一个数的奇偶性
a = float(input('请输入数字'))
if a % 2 == 0:
print('偶数')
else:
print('奇数')
if多分支结构
语法: if 条件1: 代码段1 elif 条件2: 代码段2 elif 条件3: 代码段3 … else: 代码段N
注意:elif可以使任意多个;else可以有也可以没有
a = float(input('请输入数字'))
if a > 90:
print('2000')
elif 85 < a <= 90 :
print('1000')
elif 75 < a <= 85 :
print('500')
elif 60 <= a <= 75:
print('小红花')
else:
print('不及格你要什么奖励?')
for循环
for循环
语法:
for 变量 in 序列: 循环体(需要重复执行的代码)
说明:
for - 关键字;固定写法 变量 - 有效变量名(可以使已经定义的,也可以是没有定义过的) in - 关键字;固定写法 序列 - 容器型数据类型的数据,容器型数据类型包括:字符串、列表、字典、集合、元组、迭代器、生成器、range等 : - 固定写法 循环体 - 和for保持一个缩进的一条或多条语句;循环体就是需要重复执行的代码
执行过程
让变量去序列中取值,一个一个的取,取完为止;取一个值就执行一次循环体。 for循环的循环次数和序列中元素的个数有关
for x in 'abc':
print('qwer')
执行过程:
第一次: x = ‘a’ -> print(‘qwer’) 第二次: x = ‘b’ -> print(‘qwer’) 第三次: x = ‘c’ -> print(‘qwer’)
range函数
range(N) - 产生[0,N)的等差数列,差是1 range(3) -> 0,1,2 range(5) -> 0,1,2,3,4
range(M,N) - 产生[M,N)的等差数列,差是1 range(10,21) -> 10,11,12,13,14,15,16,17,18,19,20
range(M,N,STEP) - 产生[M,N)的等差数列,差是step range(1,10,2) -> 1,3,5,7,9 range(20,2,-3) -> 20,17,14,11,8,5
打印1000以内的所有偶数
for x in range(0,1001,2):
print(x)
for循环的两个基本应用场景
累计求和
练习1. 写代码求 1+2+3+4…+100的和
a = 0
for b in range(1,101):
a += b
print(a)
练习2. 求10的阶乘:123…*10
c = 1
for d in range(1,11):
c *= d
print(c)
练习3. 求100到200中所有能被3整除的偶数的和
e = 0
for f in range(102,201,6):
e += f
print(e)
统计个数
练习1:统计1000以内奇数的个数
第一步:定义变量保存最后的个数,变量默认值是0
count = 0
for x in range(1000):
if x % 2 == 0:
count += 1
print(count)
或者直接
for x in range(1,1000,2):
count += 1
print(count)
练习2:统计1000以内能3整除但是不能被7整除的数的个数
s = 0
for i in range(1000):
if i % 3 == 0 and i % 7 != 0:
s += 1
print(s)
课后作业
基础题
-
根据输入的成绩的范围打印及格 或者不及格 。 a = float(input('请输入'))
if a >= 60:
print('及格')
else:
print('不及格')
-
根据输入的年纪范围打印成年 或者未成年 ,如果年龄不在正常范围内(0~150)打印这不是人! 。 a = float(input('请输入'))
if 150 > a >= 18:
print('成年')
elif a < 18 :
print('未成年')
else:
print('这不是人')
-
输入两个整数a和b,若a-b的结果为奇数,则输出该结果,否则输出提示信息a-b的结果不是奇数 a = float(input('请输入a'))
b = float(input('请输入b'))
c = a - b
if c % 2 != 0:
print(c)
else:
print('a-b的结果不是奇数')
-
使用for循环输出 0~100内所有3的倍数。 for x in range(0,101,3):
print(x)
-
使用for循环输出100~200内个位数或者十位数能被3整除的数。 for x in range(100,201):
if (x % 10) % 3 == 0:
print(x)
elif ((x % 100)// 10) % 3 == 0:
print(x)
-
使用for循环统计100~200中十位数是5的数的个数 a = 0
for x in range(100,201):
if ((x % 100) // 10) / 5 == 1:
a += 1
print(x)
print(a)
-
使用for循环打印50~150中所有能被3整除但是不能被5整除的数 for x in range(50,151):
if x % 3 == 0 and x % 5 != 0:
print(x)
-
使用for循环计算50~150中所有能被3整除但是不能被5整除的数的和 a = 0
for x in range(50,151):
if x % 3 == 0 and x % 5 != 0:
a += x
print(a)
-
统计100以内个位数是2并且能够被3整除的数的个数。 a = 0
for x in range(2,100,10):
if x % 3 == 0:
a += 1
print(a)
进阶题
-
输入任意一个正整数,求他是几位数?
注意: 这儿不能使用字符串,只能用循环
b = 1
a = int(input('请输入a'))
while a // 10 > 0:
a //= 10
b += 1
print(b)
或者
a = int(input('请输入a')); b = 0
for x in range(a):
a //= 10
b += 1
if a == 0:
print(b)
break
-
打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字?方和等于该数本身。例如:153是 ?个?仙花数,因为 13 + 53 + 33 等于 153。 for x in range(100,1000):
if (x // 100) ** 3 + ((x % 100) // 10) ** 3 + (x % 10) ** 3 == x:
print(x)
-
判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数) a = int(input('请输入a'))
for x in range(2,a):
if a % x == 0:
print('不是质数')
break
else:
print('是质数')
break
-
输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
for i in range(9):
print()
for j in range(9):
s = i * j
if j <= i:
print(i, '*', j, '=', s,end = ' ')
简化之后
for i in range(1,10):
print()
for j in range(1,i+1):
s = i * j
print(j, '*', i, '=', s,end = ' ')
-
这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)
for a in range(34):
for b in range(50):
for c in range(200):
if a * 3 + b * 2 + c * 0.5 == 100 and a + b + c == 100:
print(a,b,c)
|