day4 分支和循环
if多分支结构
- if-elif-else - 不同条件之间存在:其中一个条件成立的时候,别的条件一定不会成立
执行特点:如果前面的条件成立,那么后面的条件不会再判断(后面的条件的判断是在前面的条件不成立的情况下进行的)
score = 99
if score >= 90:
print('优秀')
elif score >= 75:
print('良好')
elif score >= 60:
print('中等')
else:
print('不及格')
-
单独使用多个if - 条件之间存在:其中一个条件成立,其他的条件也可能成立 if score >= 90:
print('优秀')
if 75 <= score < 90:
print('良好')
if 60 <= score < 75:
print('中等')
if score < 60:
print('不及格')
三目运算符
Python中的三目运算符 值1 if 表达式1 else 值2 - 先判断表达式1的结果是否为True,如果是,整个运算表达式的结果是值1,否则是值2
a = 100
x = 10 if a > 100 else 20
print(x)
for循环
语法: for 变量 in 序列: 循环体
说明: for、in - 关键字;固定写法 变量 - 变量名(可以是已经定义的变量的变量名,也可以是没有定义过的变量的变量名) 序列 - 容器型数据类型的数据就是序列,例如:字符串、列表、字典、元组、集合、迭代器、生成器、range等 : - 固定写法 循环体 - 结构上是和for保持一个缩进的一条或者多条语句(至少1条);逻辑上就是需要重复执行的代码。
for x in 'abc':
print(x, '++++')
print('hello!')
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(1, 5)-> 1, 2, 3, 4 range(10, 21) -> 10, 11, 12,…, 20
range(M, N, step) - 产生[M, N)步长为step指定值的数字序列, range(1, 5, 2) -> 1, 3 range(10, 20, 3) -> 10, 13, 16, 19 range(20, 14, -1) -> 20, 19, 18, 17, 16, 15
sum1 = 0
for x in range(1, 101):
sum1 += x
print(sum1)
count = 0
for x in range(3, 1000, 3):
if x % 7 != 0:
count += 1
print(count)
while 循环
语法: while 条件语句: 循环体
说明: while - 关键字,固定写法 条件语句 - 任何有结果的表达式(不能是赋值语法) : - 固定写法 循环体 - 结构上和while保持一个缩进的一条或者多条语句;逻辑上就是需要重复执行的代码
x = 0
while x < 10:
print('hello!')
x += 1
pw = '123456'
get_pw = None
while get_pw != pw:
get_pw = input('请输入密码:')
continue和break
continue和break只能在循环体中使用
- continue - 结束一次循环,当执行循环体的时候遇到了continue,那么这一次循环结束,直接进入下一次循环。
for x in range(10):
if x % 2:
continue
print(x)
- break - 结束整个循环,执行循环体的时候如果遇到了break,那么整个循环直接结束。
for x in range(1, 10):
if x % 3 == 0:
break
print(x)
while循环和break的配合
初学者的while循环 while True: 需要重复执行的代码 if 循环结束的条件: break
pw = '123456'
while True:
get_pw = input('请输入密码:')
if get_pw == pw:
break
1. 基础题
-
输入年份,如果输入的年是闰年打印'闰年' 否则打印'平年' year = int (input('请输入年份:'))
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0) :
print('闰年')
else:
print('平年')
-
使用for和while循环输出 0~100内所有3的倍数。 for x in range (0,101):
if x % 3 == 0:
print(x)
a = 0
while a <= 100:
if a % 3 == 0:
print(a)
a += 3
-
使用for和while循环输出100~200内个位数或者十位数能被3整除的数 for y in range(100,201):
if (y // 10 % 10 ) % 3== 0 or y % 10 % 3 == 0:
print(y)
y = 100
while y <= 200:
if (y // 10 % 10) % 3 == 0 or y % 10 % 3 == 0:
print(y)
y += 1
-
使用for和while循环统计100~200中十位数是5的数的个数 num1 = 0
for o in range (100,201):
if o // 10 % 10 == 5 :
num1 += 1
print(num1)
num1 = 0
o = 100
while o <= 200 :
if o // 10 % 10 == 5:
num1 += 1
o += 1
print(num1)
-
使用for和while循环打印50~150中所有能被3整除但是不能被5整除的数 for p in range(50,151):
if p % 3 == 0 and p % 5 != 0:
print(p)
p = 50
while p <= 151:
if p % 3 == 0 and p % 5 != 0:
print(p)
p += 1
-
使用for和while循环计算50~150中所有能被3整除但是不能被5整除的数的和
sum1 = 0
for f in range(50,151):
if f % 3 == 0 and f % 5 != 0:
sum1 += f
print(sum1)
sum1 = 0
f = 50
while f < 151:
if f % 3 == 0 and f % 5 != 0:
sum1 += f
f += 1
print(sum1)
2. 进阶题
- 使用循环计算
1*2*3*4*...*10 的结果。
u = 1
m = 1
while m <= 10 :
m += 1
u *= m
print(u)
-
统计100以内个位数是2并且能够被3整除的数的个数。 count = 0
for m in range(0,101):
if m % 10 == 2 and m % 3 == 0:
count += 1
print(count)
-
输入任意一个正整数,求他是几位数? 注意: 这儿不能使用字符串,只能用循环
- 打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字?方和等于该数本身。例如:153是
?个?仙花数,因为 13 + 53 + 33 等于 153。
n = 100
while n < 1000:
sum1 = (n % 10) ** 3 + (n % 100 // 10) ** 3 + (n // 100) ** 3
if sum1 == n:
print(n)
n += 1
3. 挑战题
- 判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数)
num = 8
for x in range(2, int(num**0.5) + 1):
if num % x == 0:
print(num, '不是素数!')
break
else:
print(num, '是素数!')
-
求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34… (这儿的n可以是任意正整数,可以通过输入来确定)
-
输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。 for i in range (1,10):
for j in range (1,10):
print(i , '*' , j ,'=', i * j)
-
这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)
for x in range(101):
for y in range (101):
z = 100 - 3*x + 2*y
if x + y + z == 100 and x >= 0 and y >= 0 and z >=0:
print ('大马:',x ,'中马:',y , '小马:',z )
|