210121课业整理
一、前情回顾
python
1、运算符
-
数学运算符 加+ 减— 乘* 除/ 取余% 整除// 幂**
-
比较运算符 > < == != >= <=
-
逻辑运算符 and or not
-
赋值运算符 = += -= *= /= %= //= **=
运算优先级排序:数学>比较>逻辑>赋值
2.分支结构
if 满足条件执行,不满足不执行
‘’’
if 条件语句:
代码
‘’’
if-else 如果xx就xx否则就xx
‘’’
if 条件语句:
代码
else:
代码
‘’’
print(100 - 25 * 3 % 4)
n = 6784
print(n / 1000 % 100)
print(n % 1000 / 100)
print(n // 100 % 10)
print(n // 10 % 100 // 10)
x = (input()) # 输入12
print(type(x)) # <class 'str'>
a = 100
b = False
print(a * b > -1)
x = 3
print(x == 3)
x += 6
print(x)
二、if多分支结构和if嵌套
应用场景 if-elif-else
‘’’
根据不同的场景执行不同的操作
1.语法:
if 条件语1:
代码1
elif 条件2:
代码2
elif 条件3:
代码3
elif 条件n
代码n
else:
代码n+1
程序结束
2.执行过程:
从上往下依次判断语句的结果是否为True,
是就执行这个if或elif所对应的代码,
执行完了,后面的代码段不再执行
else后面的代码只有在前面条件都不满足时才执行
‘’’
'''求身高体重比例是否正常
height = 1.60 weight = 60'''
result = weight / height ** 2
if 18.5 <= result <= 24.9:
print('正常')
elif result < 18.5:
print('偏轻')
else: # 不写else也可以
print('偏重')
'''练习:输入成绩,如果输入的成绩在90分以上(含90分)输出A;
80分-90分(不含90分)输出B;70分-80分(不含80分)输出C;
60分-70分(不含70分)输出D;60分以下输出E。'''
grade = float(input('请输入分数:'))
if grade >= 90:
print('A')
elif grade >= 80:
print('B')
elif grade >= 70:
print('C')
elif grade >= 60:
print('D')
else:
print('E')
# 考虑输入分数不在正常范围内的情况
if grade < 0 or grade > 100:
print('不正常')
3、if嵌套
# 练习:输入一个数,
# 如果输入的数是偶数就打印'偶数', 否则打印奇数。
# 如果这个数能被4整除,还要打印'4的倍数'
num = int(input('输入一个数:'))
if num % 2 == 0:
print('偶数')
if num % 4 == 0:
print('4的倍数')
elif num % 2 != 0:
print('奇数')
if num % 10 == 1:
print('个位数是1')
四、for循环
1.语法:
for 变量 in 序列:
循环体
说明:for in 冒号 ----》必写固定用词
变量 -变量名自己命名
序列 -容器型数据,如:字符串、列表、元组、 集合、字典、迭代器、
生成器、range等
循环体 - 和for保持一个缩进的一条或者多条语句,需要重复执行的代码
2.执行过程
让变量去序列中取值,每取一个值执行一次循环体,取完为止
for循环的次数是由序列中的个数决定的
DRY原则(don`t repeat yourself)不要重复写代码占用空间
# 需求:把一句话打印10遍
# 方法一:复制粘贴十遍
# 方法二:
massage = ('一段话')
print(massage)
# 复制粘贴十遍
# 方法三:
for x in range(10):
print(massage)
# 例子
for x in 'abcd':
print('hello')
#例子2
for x in 'python':
print(x)
print('==')
# 练习:把+打印5次
# 方法一:
for x in '12345':
print('+')
# 方法二:使用range函数 ---》for循环的完美搭档
for x in range(5):
print('+')
五、range函数的使用
'''
用法1.
range(n) - 产生[0,n)的数字范围,里面包含:0、1、2、...n-1
'''
print(range(10)) # range范围[0,10)
for x in range(10):
print(x)
'''
用法2.
range(m,n) - 产生[m,n)的数字范围,里面包含:m、m+1、m+2、...n-1
其中m<n
'''
# 打出-100到-1的范围
for x in range(-100, 0):
print('x1:', x)
'''
用法3.
range(m,n,step) --从m开始每次加step产生的数,直到n加step,没有n
'''
# 练习:-1,-3,-5,-9
for a in range(-1, -10, -2):
print(a)
# 5, 4,3,2,1
for b in range(5, 0, -1):
print(b)
# 练习:计算1+2+3+...+100的和
sum1 = 0
for num in range(1, 101):
sum1 += num
print(sum1) # 5050
'''
计算原理:
1.sum1=0
2.for循环:num取值范围是1到100
'''
# 练习:求10+20+30+...+100的和
sum2 = 0
for num1 in range(10, 101, 10):
sum2 += num1
print(sum2)
# 练习:统计1~100中能被3整除的数的个数
# 方法一
count = 0
for num3 in range(1, 101):
if num3 % 3 == 0:
count += 1
print('个数:', count) # 33
# 方法二:
count = 0
for num3 in range(3, 101, 3):
count += 1
print('个数:', count)
六、while循环
1、语法
while 条件语句:
代码段(循环体)
说明:
while 冒号 —为固定写法
条件语句 —除赋值语句以外的任何有结果的表达式
循环体 —和while保持一个缩进的一条或多条语句 需要重复执行
2、执行过程
不断地判断条件语句是否为True,为True就执行循环体
为False就不执行
一般在明确循环次数的情况下,用for循环更方便
循环次数不确定的情况下,使用while循环,一般手机上的App都是while循环
# 例:把'hello'输入4遍
# 方法一:
for x in range(4):
print('hello')
# 方法二:
num = 0
while num < 4:
print('hello')
num += 1
# 练习:不断输入数据,直到输入内容为0
value = 1 # 输入非0的任意数字
while value != '0':
value = input('请输入数字:')
七、循环关键字
**循环关键字有三个: continue break else **
1.continue 继续
只能出现在循环体中
比如在 for循环或者while循环
**作用:**直接结束当次循环,直接进入下一次循环的判断
for x in range(3):
print('gei li giao giao')
continue
print('你说yes,我说 giao')
for num in range(1, 11):
if num % 3 == 0:
continue
print(num)
2、break 结束
只能出现在循环体中
比如在 for循环或者while循环
**作用:**直接结束整个循环
for x in range(3):
print('gei li giao giao')
break
print('你说yes,我说 giao')
while True: # 先判断是否为true
value = input('请输入数字:') # 描述需要执行的操作
if value == '0':
break
# 练习:使用while循环,打印1~10
num = 1
while True:
print(num)
num += 1
if num > 10:
break
3、else 另外
1)完整的for循环:
for 变量 in 序列:
循环体
else:
代码段
2)完整的while循环:
while 条件语句:
循环体
else:
代码段
注意:
else的存在不影响原来循环的执行
当循环自然死亡,就会执行else后面的代码。
当循环非自然死亡,就不会执行else
# 例子,以下就不会执行
for x in range(3):
print(x)
if x == 2:
break
else:
print('else后面的代码')
# 例子2
num = 17
for x in range (2, num):
if num % x == 0:
print(num, '不是质数')
break
else:
print(num, '是质数')
八、作业
基础题
-
根据输入的成绩的范围打印
及格
或者不及格
。grade = float(input('输入成绩:')) if grade >= 60: print('及格') else: print('不及格') # 输入成绩:44 # 不及格
-
根据输入的年纪范围打印
成年
或者未成年
,如果年龄不在正常范围内(0~150)打印这不是人!
。age = float(input('请输入年龄')) if 150 >= age >= 18: print('成年') elif 0 < age < 18: print('未成年') if age <= 0 or age > 150: print('这不是人') # 请输入年龄-1 # 这不是人
-
输入两个整数a和b,若a-b的结果为奇数,则输出该结果,否则输出提示信息
a-b的结果不是奇数
。a = int(input('输入数字a:')) b = int(input('输入数字b:')) if (a - b) % 2 != 0: print(a - b) else: print('a-b的结果不是奇数') # 输入数字a:10 # 输入数字b:4 # a-b的结果不是奇数
-
使用for和while循环输出 0~100内所有3的倍数。
# for 循环 count = 0 for x in range(0, 99, 3): count += 3 print( count) # while 循环
-
使用for和while循环输出0~100内所有的偶数。
进阶题
- 使用循环计算
1*2*3*4*...*10
的结果。# 10的阶乘
sum = 10 # 10的阶乘
for num in range(1, 10):
sum *= num
print(sum)
# 3628800
-
统计100以内个位数是2并且能够被3整除的数的个数。
-
输入任意一个正整数,求他是几位数?
注意: 这儿不能使用字符串,只能用循环
-
打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字⽴方和等于该数本身。例如:153是
⼀个⽔仙花数,因为
1³ + 5³ + 3³
等于 153。
挑战题
-
判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数)
-
求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34… (这儿的n可以是任意正整数,可以通过输入来确定)
-
输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
-
这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)