Python基础_03
一、关键字break和continue
- break和continue:
- 应用在循环语句中,只对循环起作用
- break:中断他所在的循环【退出循环】
- continue:结束当前次,跳到循环判断的位置【循环体中后面的代码不再执行】
例:
# continue的作用
# 打印1-10中的偶数
for i in range(1, 11):
if i % 2 == 1:
continue # 跳到for
print(i)
# 数7游戏(1-100)
for j in range(1, 101):
a = j % 10
b = j // 10 % 10
if a == 7 or b == 7 or j % 7 == 0:
continue
print(j)
"""
break 是结束所在的循环
"""
for n in range(1, 11):
print(n)
if n == 5:
break
二、while循环语句
- 语法:
while 条件判断:
循环体代码 - 解释:
只要条件成立,程序就一直循环,直到循环条件不成立
例:
# 输出1-10之间的数据
"""
while思想:
1.重复做的操作是什么
2.做这件事的条件是什么
"""
# num = 1
# while num <= 10:
# print(num)
# num += 1
# print('循环结束时num的值', num)
"""
使用while循环完成 1+2+3+...+100
"""
num = 1
total = 0
while num <= 100:
total += num
num += 1
print(total)
"""
循环结束的场景:
1.明确循环次数: for-in循环
2.明确结束状态: while循环(循环次数不明确)
建议使用for-in循环
"""
# 有1023个桃子,猴子每天吃桃子剩余个数的一半多一个,需要多少天吃完
peach_count = 1023
day = 0
while peach_count > 0:
peach_count = peach_count - (peach_count//2 +1)
day += 1
print('需要', day, '天吃完')
# 简单思路 while True
# 猜数字/数字炸弹
# 程序中生成随机数 random:提供随机操作
# import random
# print(random.randint(1, 100))
#唯一一个包括结束位置的
random_num = random.randint(1, 100)
start = 1
stop = 100
while True:
guess = int(input('请输入' + str(start) + '-' + str(stop) + '之间的一个数:'))
if guess > random_num:
print('猜大了')
stop = guess
elif guess < random_num:
print('猜小了')
start = guess
else:
print('猜中了')
break
print('游戏结束')
三、循环例题(for和while的应用)
- 使用range生成1999年到2023年,获取其中闰年的个数
count = 0 # 记录闰年的个数
# 遍历range序列
for year in range(1999, 2024):
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
count += 1
print('闰年的个数为:', count)
- 录入一个正整数,判断其是否是完美数【完美数:该数所有真因子[除了自身以外的因子]之和等于该数本身 比如6的真因子有1 2 3; 1+2+3 = 6 因此6是完美数】
提示: 我们需要获取1-N的数,找到N的真因数[相除余数为0],然后累加后判断
遍历 获取的范围不用到N 最大真因数只到数据的一半
perfect_num = 0 # 记录真因子的和
num = int(input('请输入一个正整数:'))
for i in range(1, num): # range(1, num // 2 +1)
if num % i == 0:
perfect_num += i
if num == perfect_num:
print(num, '是完美数')
else:
print(num, '不是完美数')
- 录入一个正整数,求该数的阶乘 [比如5的阶乘=
5*4*3*2*1
]
num = int(input('请输入一个正整数:'))
num1 = num
jc = num
while num > 1: # 是乘的运算(不能算入0)
jc *= (num - 1)
num -= 1
print(num1, '的阶乘是:', jc)
- 每个苹果0.8元,第一天买2个苹果,第二天开始,每天买前一天的2倍,直至购买的苹果个数达到不超过100的最大值。
编写程序求每天平均花多少钱
apple = 0.8
count = 2
day = 0
total = 0
average = 0
while count <= 100:
apple *= 2 # 记录当天买苹果花的钱数
day += 1
count *= 2 # 记录当天买的苹果数
total += apple # 记录买苹果的总钱数
average = total / day # 计算每天平均花多少钱
print(average)
- 我国1991年有11.6亿人口,要求根据人口平均年增长率0.4%,计算从1991年算起经过多少年后我国的人口增加15亿
people = 11.6
year = 0
while people < 26.6: # 因为人口要增加15亿,所以增加之后的人口数是26.6亿
people = people * (1 + 0.004)
year += 1
print(year)
- 输入两个正整数 n和 m,找它们的最大公因数
提示:获取最小的数 从最小的数递减,找到那个能同时整除的数即为最大公因数
n = int(input('请输入一个数:'))
m = int(input('请输入一个数:'))
gys = 0
if n < m:
for i in range(1, n+1):
if n % i == 0 and m % i == 0:
gys = i
print('最大公因数为:', gys)
else:
for i in range(1, m+1):
if n % i == 0 and m % i == 0:
gys = i
print('最大公因数为:', gys)
# 最小公倍数
if n > m:
max_num = n
else:
max_num = m
# 遍历
for k in range(max_num, n * m + 1):
if k % n == 0 and k % m == 0:
print(n, '和', m, '的最小公倍数是', k)
break
- 找出100到999之间的水仙花数
for n in range(100, 1000):
ge = n % 10
shi = n // 10 % 10
bai = n // 100
if n == ge ** 3 + shi ** 3 + bai ** 3:
print(n)
- 将数字的反转:比如 1234====4321
提示:逐个将每位上的数据变成个位上的数,获取个位上的数据,将记录者*10+个位数据
a = int(input('请输入一个整数:'))
b = 0 # 记录者
while a > 0:
b = b * 10 + a % 10
a = a // 10
print(b)