顺序结构——代码从上往下依次执行,每条语句只运行依次(默认)
age=18print('成年')print('未成年')
分支结构——根据条件选择执行或者不执行部分代码(使用if)if单分支结构 - 如果…就…
解决的问题:满足条件执行某个操作,添加不满足的时候就不执行
说明:
if(关键字;固定写法)条件语句(可以任何有结果的表达式,包括具体的数或运算表达式(赋值除外)):( 固定写法)代码段(结构上为和if保持一个缩进的一条或多条语句,条件成立才执行的代码)
语法:
if 条件语句: 代码段(满足条件才会执行的代码age = 28if age >= 18: print('成年') print('=====')
if双分支结构 - 如果…就…否则…
执行过程:
先对条件语句进行判断,结果为True时,执行代码段1;结果为False时,执行代码段2;一定会执行代码段3。
#语法适用于如果....就....否则...if 条件语句: 代码段1else:代码段2代码段3
if多分支结构 - 如果…就…如果…就…如果…就…否则…#语法方法一: #根据不同条件做不一样的事情,适用于条件之间互斥的情况。if 条件语句1: 代码段1elif条件语句2:代码段2elif条件语句3:代码段3else: 代码段4 方法二:#根据不同条件做不一样的事情,多个条件之间不存在其他一个条件成立别的条件就不成的关系。if 条件语句1: 代码段1if 条件语句2: 代码段2if 条件语句3: 代码段3if 条件语句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 = 0for x in range(102, 201, 6): result += xprint(result)
统计个数
#统计1000以内奇数的个数count = 0for x in range(1, 1000, 2): count += 1print(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 3.输入两个整数a和b,若a-b的结果为奇数,则输出该结果,否则输出提示信息a-b的结果不是奇数 a=int(input('请输入整数a:'))b=int(input('请输入整数b:'))result=a-bif 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=0for x in range(51,151,3): if x%5!=0: count+=xprint(count) 统计100以内个位数是2并且能够被3整除的数的个数。 count=0for x in range(0,101,3): if x%10==2: count+=1print(count) 输入任意一个正整数,求他是几位数? 注意: 这儿不能使用字符串,只能用循环 #方法一num=int(input("请输入正整数:"))for x in range(0,10): if num//(10**x)>=1: continue print(x) break #方法二 num=int(input("请输入正整数:"))n=0x=0while n<1: if num//(10**x)>=1: x+=1 else: breakprint(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=0num=int(input("请输入正整数:"))for x in range (2,num): if num%x==0: k+=1if 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,'匹','。')