Chapter 4 if分支与for循环
Statement文章声明:仅作为个人学习笔记,一切失误概不负责。不杠不贬,文明网络环境建设!!
1.分支结构
1.1单分支结构
"""
单分支结构语法
if 条件:
代码块1
else:
代码块2
"""
1.2多分支结构
"""
多分支结构语法
if 条件1:
代码块1
elif 条件2:
代码块2
......
else:
代码块N
"""
- 判断一个年份是否是闰年
- 条件1:能够被4整除,但不能被100整除
- 条件2:能够被400整除
year = int(input('年份:'))
if not year % 4 and year % 100:
print('闰年')
elif not year % 400:
print('闰年')
else:
print('平年')
1.3嵌套分支
判断一个数是否是偶数,如果是偶数,再判断这个数是否是10的倍数
num = int(input('整数:'))
if not num % 2:
if not num % 10:
print('10的倍数')
else:
print('偶数')
else:
print('奇数')
2.分支结构练习
-
判断一个数是否为水仙花数
-
水仙花数(三位数):个位³ + 十位³ + 百位³ = 三位数本身
num = int(input('三位整数:'))
# 取数
a = num // 100
b = num % 100 // 10
c = num % 10
if a ** 3 + b ** 3 + c ** 3 == num:
print('水仙花数')
else:
print('不是水仙花数')
- 拓展:使用字符串取数判断是否为水仙花数
num = input('三位整数:')
if int(num[0]) ** 3 + int(num[1]) ** 3 + int(num[2]) ** 3 == int(num):
print('水仙花数')
else:
print('不是水仙花数')
2.循环结构
2.1for-in循环
"""
for循环语法:
for 变量 in 序列:
代码块
序列:字符串, 列表, 元组, 集合, 字典, range()等
"""
- while循环
"""
语法:
while 条件:
代码块
"""
- 猜数字游戏
- 1-100之间的猜数
import random
# 生成随机数
result = random.randint(1, 100)
# print(result)
num = int(input('猜数(输入1-100之间整数):'))
count = 1
while True:
if num > result:
num = int(input('小一点:'))
count += 1
elif num < result:
num = int(input('大一点:'))
count += 1
else:
print(f'猜对了,共猜了{count}次')
break
基础题
-
根据输入的成绩的范围打印
及格
或者不及格
。grade = float(input('输入你的成绩')) if grade >= 60: print('及格') else: print('不及格')
-
根据输入的年纪范围打印
成年
或者未成年
,如果年龄不在正常范围内(0~150)打印这不是人!
。age = int(input('输入你的年龄')) if age <18: print('未成年') elif age <150: print('成年') else: print('这不是人!')
-
输入两个整数a和b,若a-b的结果为奇数,则输出该结果,否则输出提示信息
a-b的结果不是奇数
a = int(input('给我个整数a')) b = int(input('给我个整数b')) if (a - b) % 2: print(a - b) else: print('a-b的结果不是奇数')
-
使用for循环输出 0~100内所有3的倍数。
for i in range(0, 100): if i % 3 == 0: print(i)
-
使用for循环输出100~200内个位数或者十位数能被3整除的数。
for i in range(100, 200): gw = i % 10 sw = i // 10 % 10 if (gw % 3 == 0) or (sw % 3 == 0): print(i)
-
使用for循环统计100~200中十位数是5的数的个数
count = 0 for i in range(100, 200): sw = i // 10 % 10 if sw == 5: count += 1 print(count)
-
使用for循环打印50~150中所有能被3整除但是不能被5整除的数
for i in range(50, 151): if (i % 3 == 0) and (i % 5 != 0): print(i)
-
使用for循环计算50~150中所有能被3整除但是不能被5整除的数的和
s = 0 for i in range(50, 151): if (i % 3 == 0) and (i % 5 != 0): s += i print(s)
-
统计100以内个位数是2并且能够被3整除的数的个数。
count = 0 for i in range(100): gw = i % 10 if (gw == 2) and (i % 3 == 0): count += 1 print(count)
进阶题
-
输入任意一个正整数,求他是几位数?
-
打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字⽴方和等于该数本身。例如:153是
⼀个⽔仙花数,因为
1³ + 5³ + 3³
等于 153。for i in range(100, 1000): gw = i % 10 sw = i // 10 % 10 bw = i // 100 if i == (gw ** 3 + sw ** 3 + bw ** 3): print(i)
-
判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数)
-
输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
for i in range(1, 10): for j in range(1, i + 1): print(f'{i} * {j} = {i * j}', end=' ') print()
-
这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)
for x in range(0,35): for y in range(0,51): for z in range(0,101): if (x + y + z == 100) and (x * 3 + y * 2 + z / 2) == 100: print(f'大马{x}匹,中马{y}匹,小马{z}匹')