python学习Day-3
一、流程控制 - 控制代码执行顺序
-
顺序结构——代码从上往下依次执行,每条语句只运行依次(默认)
age=18 print('成年') print('未成年')
-
分支结构——根据条件选择执行或者不执行部分代码(使用if)
-
if单分支结构 - 如果…就…
-
解决的问题:满足条件执行某个操作,添加不满足的时候就不执行
-
说明:
- if(关键字;固定写法)
- 条件语句(可以任何有结果的表达式,包括具体的数或运算表达式(赋值除外))
- :( 固定写法)
- 代码段(结构上为和if保持一个缩进的一条或多条语句,条件成立才执行的代码)
-
语法:
if 条件语句: 代码段(满足条件才会执行的代码 age = 28 if age >= 18: print('成年') print('=====')
-
-
if双分支结构 - 如果…就…否则…
-
执行过程:
先对条件语句进行判断,结果为True时,执行代码段1;结果为False时,执行代码段2;一定会执行代码段3。#语法 适用于如果....就....否则... if 条件语句: 代码段1 else: 代码段2 代码段3
-
-
if多分支结构 - 如果…就…如果…就…如果…就…否则…
#语法 方法一: #根据不同条件做不一样的事情,适用于条件之间互斥的情况。 if 条件语句1: 代码段1 elif条件语句2: 代码段2 elif条件语句3: 代码段3 else: 代码段4 方法二: #根据不同条件做不一样的事情,多个条件之间不存在其他一个条件成立别的条件就不成的关系。 if 条件语句1: 代码段1 if 条件语句2: 代码段2 if 条件语句3: 代码段3 if 条件语句4: 代码段4 注意:elif可以是任意多个;else可以有也可以没有
-
-
循环结构——让代码重复执行(for)
-
for循环原理:变量依次去序列中取值,取完为止;每取依次,执行一次循环体。
-
for循环的循环次数只与序列中的元素个数有关。
-
语法:
for 变量 in 序列: 循环体 说明 - 关键字;固定写法 变量 - 有效变量名(是否已定义不影响执行) in - 关键字;固定写法 序列 - 容器型数据类型的数据(字典、元组、字符串、列表、集合、迭代器、生成器等) : - 固定写法 循环体 - 和for保持一个缩进的一条或多条语句;需要重复执行的代码 例: for x in 'abc': print('hello world!') print('======') """ 执行过程: 第1次:x = 'a' -> print('hello world!') 第2次:x = 'b' -> print('hello world!') 第3次:x = 'c' -> print('hello world!') 循环结束! hello world! hello world! hello world! """
-
for循环的两个基本运用场景:
- 累积
#求100到200中所有能被3整除的偶数的和 result = 0 for x in range(102, 201, 6): result += x print(result)
- 统计个数
#统计1000以内奇数的个数 count = 0 for x in range(1, 1000, 2): count += 1 print(count)
-
-
range(产生等差数列的函数)
- range(N)产生0-N的左闭右开区间,差值为1。
- range(A,B)产生A-B的左闭右开区间,差值为1。
>>>range(10) # 从 0 开始到 9 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> range(1, 11) # 从 1 开始到 10 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> range(0, 30, 5) # 步长为 5 [0, 5, 10, 15, 20, 25] >>> range(0, 10, 3) # 步长为 3 [0, 3, 6, 9] >>> range(0, -10, -1) # 负数 [0, -1, -2, -3, -4, -5, -6, -7, -8, -9] >>> range(0) [] >>> range(1, 0) []
二、练习题
基础题
1.根据输入的成绩的范围打印及格
或者不及格
。
grade=int(input('请输入分数(百分制):'))
if 0<=grade<60:
print('很遗憾,您未及格QAQ')
else:
print("及格啦")
2.根据输入的年纪范围打印成年
或者未成年
,如果年龄不在正常范围内(0~150)打印这不是人!
。
age=int(input('请输入年纪:'))
if 0<age<18:
print('未成年')
elif 18<=age<150:
print('成年')
else:
print('不是人')
3.输入两个整数a和b,若a-b的结果为奇数,则输出该结果,否则输出提示信息a-b的结果不是奇数
a=int(input('请输入整数a:'))
b=int(input('请输入整数b:'))
result=a-b
if result%2==1:
print(result)
else:
print('a-b的结果不是奇数')
4.使用for循环输出 0~100内所有3的倍数。
#方法一
for x in range(0,101,3):
print(x)
#方法二
for x in range(0,101):
if x%3==0:
print(x)
使用for循环输出100~200内个位数或者十位数能被3整除的数。
for x in range(100,201):
if x%10%3==0 or x//10%10%3==0:
print(x)
使用for循环统计100~200中十位数是5的数的个数
#方法一
for x in range(100, 201):
if x // 10 % 10 == 5:
print(x)
#方法二
for x in range(150,160):
print(x)
使用for循环打印50~150中所有能被3整除但是不能被5整除的数
for x in range(51,151,3):
if x%5!=0:
print(x)
使用for循环计算50~150中所有能被3整除但是不能被5整除的数的和
count=0
for x in range(51,151,3):
if x%5!=0:
count+=x
print(count)
统计100以内个位数是2并且能够被3整除的数的个数。
count=0
for x in range(0,101,3):
if x%10==2:
count+=1
print(count)
进阶题
-
输入任意一个正整数,求他是几位数?
#方法一 num=int(input("请输入正整数:")) for x in range(0,10): if num//(10**x)>=1: continue print(x) break #方法二 num=int(input("请输入正整数:")) n=0 x=0 while n<1: if num//(10**x)>=1: x+=1 else: break print(x)
-
打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字⽴方和等于该数本身。例如:153是
⼀个⽔仙花数,因为
1³ + 5³ + 3³
等于 153。for x in range(100,1000): a=x//100 b=x//10%10 c=x%10 if a**3+b**3+c**3==x: print(x)
-
判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数)
k=0 num=int(input("请输入正整数:")) for x in range (2,num): if num%x==0: k+=1 if k==0: print('素数') else: print('不是素数')
-
输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列
for i in range(1,10): for j in range(1,i+1): print(i,'*',j,'=',i*j,end=" ") print('')
-
这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)
for small in range(0,101):
for mid in range(0,101):
for big in range(0,101):
if big+mid+small==100 and big*3+mid*2+small/2==100:
print('大马',big,'匹'',''中马',mid,'匹'',''小马',small,'匹','。')