循环与分支结构
1. if分支结构
if分支结构的语法:要求;
1.不同的条件下执行不同的操作程序,根据不同的条件做不一样的事情。
但是要求条件之间存在:其中一个条件成立其他条件就不成立。
if 条件语句1:
代码段1
elif 条件语句2:
代码段2
elif 条件语句3:
代码段3
...
else:
代码段n
score = 56
if 90 <= score <= 100:
print('A')
elif 80 <= score <= 89:
print('B')
elif 60 <= score <= 79:
print('c')
else:
print('D') # D
print('------------')
if score >= 90:
print('A')
elif score >= 80:
print('B')
elif score >= 60:
print('C')
else:
print('D') # D
不同场景做不同的事,条件之间无关联。
# 进校标准:分数高于500分进普通班级,等级是A级进特长班
grade = 'A'
score = 478
if score > 500:
print('进火箭班')
else:
print('进普通班级') # 进普通班级
if grade == 'A':
print('进特长班')
else:
print('不能进特长班') # 进特长班
# 练习:定义两个变量保存一个人的身高和体重,编程实现判断这个人的身材是否正常
# 公式:体重(kg)/(身高m的平方值)是否在18.5~24.9之间,正常、偏瘦、偏胖
kg = 75
m = 185
if kg / (m**2) < 18.5:
print('偏瘦')
elif kg / (m**2) > 24.9:
print('偏胖')
else:
print('正常') # 偏瘦
if 嵌套
在if的条件语句中在嵌入新的if条件语句。
# 练习:判断一个数是否是偶数,如果是打印偶数,否则打印奇数,如果是4的倍数打印4的倍数
num = 80
if num % 2 == 0:
print('偶数', end=' ')
if num % 4 == 0:
print('4的倍数')
else:
print('奇数') # 偶数 4的倍数
2.循环结构
循环结构:让代码只写一次但可以执行很多次,重复执行。
2.1 for循环
语法:
for 变量 in 序列:
循环体
-
说明:for、in、都是关键字-------固定写法
-
变量 - 变量名
(字母、数字、下划线、数字不开头) -
序列 - 容器型数据类型的数据,
例如:字符串、列表、字典、元组、集合、迭代器、生成器、range等 -
循环体 - 和for保持一个缩进的一条或者多条语句,需要重复执行的代码
执行过程:
让变量去序列中取值,一个一个的取,取完为止,每取一个值就执行一次循环
序列中元素的个数决定了循环的次数。
range函数
作用:产生指定范围的数值序列
range(N) - 产生[0,N)的数字序列,N必须大于零(每次数值增加一)
range(m,n) – 产生[m,n)的数字序列,n必须大于m(每次数字增加1)
range(m,n,step) — 每一次数值增加的值,每次数字增加step
for _ in range(2):
print('靓仔!')
for x in 'asdio':
print('+++',x)
for x in range(10):
print('x:',x)
for x in range(2):
print('靓仔!')
print('靓女!')
print('================================')
for x in range(-10,10):
print('x2:',x)
print('========================')
for x in range(1,10,2):
print('x3:',x)
print('==================')
for x in range(100,80,-2):
print('x4:',x)
# 统计100以内能被3整除的数的个数
print('===========================')
count = 0
for x in range(0,100,3):
print('x5:',x)
count += 1 # count = count + 1
print(count)
print('------------------------')
# 方法二
count = 0
for x in range(100):
if x % 3 == 0:
count +=1
print(count)
# 练习二1~100中所有能被3整除的数但是不能被5整除的数的和
s = 0 #保存最后的和
for num in range(100):
if num % 3 == 0 and num % 5 != 0:
print(num)
s += num
print(s)
print('=======')
s = 0
for x in range(3,101,3):
if x % 5 != 0:
print(x)
s += x
print(s)
2.2 while循环
语法:
while 条件语句:
循环体
说明:
)1. while - 关键字;固定写法
)2.条件语句 - 任何有结果的表达式
)3.循环体 - 和while保持一个缩进的一条或者多条语句:循环体就是就是需要循环的代码串
执行过程:
先判断条件语句是否为true,执行循环体
执行完在判断条件语句是否为True。。。。。
当判断条件语句的值为False时,整个循环结束。
# 打印1到100
num = 1
while num < 101:
print(num)
num += 1
print(num)
num = 0
while num < 10:
print('hello')
num += 1
2.3 for循环和while循环的选择
凡是当循环次数不确定的情况下使用while循环,否则使用for循环。
password = '123456'
a = input('请输入密码:')
while a != password:
print('密码错误,请再输入一次')
a = input('请输入密码:',) # 循环后要将新输入的值要覆盖掉以前的值
else:
print('密码正确,登录成功')
# # 练习:写一个猜数字游戏
# # 程序开始的时候随机产生一个100 以内的数,用户通过输入的方式来猜数字,如果猜对了游戏结束,猜错了给出提示信息
from random import randint
num = randint(0,99) # 产生0到99的随机整数
print(num)
a = int(input('请在1到100中随机输入一个数:'))
while a != num:
if a >= num:
print('输入的大了')
else:
print('输入的小了')
a = int(input('请再输入一次:')) # 循环后要将新输入的值要覆盖掉以前的值
else:
print('输入正确')
# 方法二
i_num = int(input('请输入数字0~99:'))
while i_num != num:
if i_num > num:
print('大了,在小点:')
else:
print('小了,再大一点:')
i_num = int(input('请输入数字0~99'))
else:
print('输入正确')
2.4循环关键字
)1. continue和break
continue:结束一次循环(当执行循环体的时候遇到continue时,当次循环结束,直接进入下次循环的判断。
break:结束整个循环。
for x in range(5):
if x % 2 != 0: # 如果直接在2后面加冒号,默认是不等于
continue
print(x) # 0 2 4
'''
第一次循环: x=0,x % 2 = 0,0 = 0,if false,不执行continue,输出0
第二次循环:x=1,x % 2 = 1,1不等于0,if true ,执行continue,不输出
第三次循环: x=2,x % 2 = 0,0等于0,if false,不执行continue,输出2
第四次循环;x=3,x % 2 = 1,1不等于0,if true,执行continue,不输出
第五次循环:x=4, x % 2 = 0,0等于0,if true,不执行continue,输出4
'''
# pw = '123456'
# while True:
# i_pw = input('请输入密码;')
# if i_pw == pw:
# print('输入正确!')
# break
# 使用while循环的套路
'''
while True:
每次循环要做的事情
if 循环结束的条件:
break
'''
# 2.else
'''
python中完整的for循环和while循环后面都有else结构,
else结构的存在不影响原循环的执行。
for 变量 in 序列:
循环体
else:
代码段
while 条件语句:
循环体
else:
代码段
当循环是因为遇到break而结束的,那么循环后面的else里面的代码不会执行
如果不是因为遇到break而结束的,那么else里面的代码会执行。
'''
for x in range(5):
if x % 2 != 0:
print(x)
基础题
-
根据输入的成绩的范围打印
及格
或者不及格
。grade = 56 if grade >= 60: print('该分数及格') else: print('该分数不及格')
-
根据输入的年纪范围打印
成年
或者未成年
,如果年龄不在正常范围内(0~150)打印这不是人!
。age = 189 if 0 < age < 18: print('未成年') elif 18 < age < 150: print('成年') else: print('不是人')
-
输入两个整数a和b,若a-b的结果为奇数,则输出该结果,否则输出提示信息
a-b的结果不是奇数
。a = int(input()) b = int(input()) c = a - b if c % 2 != 0: print(c) else: print('a-b的结果不是奇数')
-
使用for和while循环输出 0~100内所有3的倍数。
for x in range(0,100,3): print(x) print('--------------') num = 0 while num < 100: print(num) num += 3
-
使用for和while循环输出100~200内个位数或者十位数能被3整除的数。
# for循环 for x in range(100,200): if ((x % 100) % 3) == 0: print(x) if((x // 10) % 10) % 3 == 0: print(x) # while循环 num = 99 while num < 200: num += 1 if (num % 10) % 3 == 0 or(num // 10) % 10 % 3 ==0: print(num) if num >= 199: break
进阶题
-
使用循环计算
1*2*3*4*...*10
的结果。i = 1 s = 1 while i < 11 : s *= i i += 1 print(s) s = 1 for n in range(1,11): s *= n print(s)
-
统计100以内个位数是2并且能够被3整除的数的个数。
c = 1 for num in range(100): if num % 3 == 0 and num % 10 == 2: c += 1 print(c)
-
输入任意一个正整数,求他是几位数?
a = int(input('请输入一个数:')) count = 1 while True: if a // 10**count >= 1: # if num != 0 # num //= 10 count += 1 else: break print('该数为',count,'位数')
-
打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字⽴方和等于该数本身。例如:153是
⼀个⽔仙花数,因为
1³ + 5³ + 3³
等于 153。print('-------------') for a in range(100,1000): if (a // 100)**3+((a % 100) // 10)**3+(a % 10)**3 == a: print(a)
挑战题
-
判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数)
e = int(input('请输入一个数:')) for d in range(2,e): if e % d == 0: print() print('该数是质数')
-
求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34… (这儿的n可以是任意正整数,可以通过输入来确定)
-
输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
-
这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)