1.for结合range的小案例
1.求1+2+3+...+99+100
产生一个容器 容器放着1-100的数据
遍历容器取值 , 取出来一个累加器
注意: 和随着取值 会发生变化 [定义一个变量 用来接收累加加的和]
total = 0 # 放在循环的外面 避免每次循环重置
for i in range(1,101):
total += i # total = total + 1
"""
第一次 in 的时候 i = 1
total += i ===> total = total + i = 1
第二次 in 的时候 i = 2
total += i ===> total = total + i = 1
"""
print(total)
# 求 1-2+3-4+5-6+...-98+99-100
a = 0
for b in range(1, 101):
if b % 2 != 0:
a += b
else:
a -= b
print(a)
# 求 1**2 +2**2 +.... + 10** 2
d = 0
for q in range(1, 11):
num = q ** 2
d += num
print(d)
# 求1-100中能被3整除且个位数是5的数据的个数
e = 0
for w in range(1, 101):
if w % 3 == 0 and w % 10 == 5:
e += 1
else:
e = e
print(e)
2.关键字break和cintinue
break和cintinue
都是应用在循环结果语句中,只能对循环起作用
break的作用是中断它所在的循环[退出循环]
continue的作用[循环一次一次执行的]是,结束当前次,跳到循环判断的位置,再决定是否开启下一次[判断成立的时候,开启下一次]
# 演示continue的作用
# 打印1-10中的偶数
for x in range(1,11)
if x % 2 == 0
print(x)
# 换一种思路:判断是否为奇数 如果是奇数 跳过这一循环 继续拿下一个数
for m in range(1,11)
if j % 2 == 1
continue
print(m)
break 是结束所在的循环
一般循环结束是
循环条件不成立或者容器中没有数据可拿时
结束循环
for n in range(1, 11):
print(n)
if n == 5:
break
# 需求:
# 获取 1-100中 3的倍数且个位数为5 当获取到第二个的时候 结束获取
count = 0 # 计数器
for k in range(1, 101):
if k % 3 == 0 and k % 10 == 5:
count += 1 # 计算器+1
print(k)
# 判断计算器是否为2 结束
if count == 2:
break
3.while循环
while 条件判断:
循环体代码块
解读:
只要成立,程序就一直循环,知道循环成立
# 输出1-10之间的数据
#for循环的思想: 需要一个容器,容器中存放在1-10
for z in range(1,11):
print(z)
print('===========')
while 循环 思想:
1.重复做的操作是什么 ==== 打印数据 每次打印的都是1个
2.做这件事情的田间 ==== 只要打印的数据没有到10 就要一直打印
根据这两件事情,需要哪些数据支持
打印数据 每次打印1次 数据要在原来基础上+1
也就是说要打印的数据是变化的 就得设置标记名给其进行标记[定义一个变量 记录打印的数据值]
num1 = 1
# 循环的操作
while num1 <= 10:
print(num1)
# 数据还在原来的基础上+1
num1 += 1
print('循环结束时 num1的值',num1)
# 1-10中的偶数 使用while打印
定义一个数据的起始值
m = 1
# 循环 数据进行递增
while m <= 10:
if m % 2 == 0:
print(m)
m += 1
# 使用while循环 完成 1+2+3+...+99+100
a = 1
b = 0
while a <= 100:
b += a
a += 1
print(b)
# 求 1-2+3-4+...-98+99-100
k = 1
ll = 0
while k <= 100:
if k % 2 != 0:
ll += k
else:
ll -= k
k += 1
print(ll)
# 求1-100中能被整除 且 个数为5的数据 的个数
a = 1
b = 0
while a <= 100:
if a % 3 == 0 and a % 10 == 5:
b += 1
else:
b = b
a += 1
print(b)
循环结束的场景:
1.明确循环次数 --- for-in循环 遍历容器,容器中有几个数据 循环就吃醒几次
2.明确结束状态的 --- while循环
while 循环条件:
满足条件就执行
经过上面代码的演示 while也可以使用予明确循环次数,只不过使用while书写起来麻烦了一些,所以建议用for-in循环
# 案例: 1023个桃子,猴子每天吃桃子剩余个数的一半多一个,问多少天可以吃完
# 来操作的时候 循环次数不明确 就使用while循环
peach = 1023
day = 0
while peach > 0:
peach = peach - (peach//2 +1)
day += 1
print(day)
练习: 1.录入一个大于1整数
如果这个数值是偶数 将数据整除2后-1
如果这个数值是奇数 将这个数据-1 再整除2
重复操作 问多少次之后才能将数据设置为0
2.一张纸的厚度是0.8mm,假设纸张足够长, 问对折多少次可以将纸张的高度达到100m
w = int(input('一个大于1整数:'))
h = 0
while w > 1:
if w % 2 == 0:
w = w // 2 - 1
h += 1
else:
w = (w - 1) // 2
h += 1
print(h)
w = 0.8
h = 0
while w < 1000000:
w = w * 2
h += 1
print(h)
简单的思路
初学while循环的
可以while Ture的思想 【死循环】
可以分析出来结束点 判断是否达到结束点 到了的话 结束循环break
w = 0.8
h = 0
while Ture:
w *= 2
h += 1
if w >= 1000 * 1000:
break
数字炸弹: 规则:有一个出题人在1-100之间设置一个数据 然后其他人猜
猜小了 猜大了 出题人提示新范围 猜中了 就一顿暴揍
# 程序中生成随机数
# Python提供了一个工具包 random 就是来提供随即操作
import random
print(random.randint(1, 101))
完成这个游戏 是需要循环的
循环次数是不明确的, 使用while循环
循环结束状态: 猜中了
数据准备:
1.准备一个1-100中的随机值
2.菜属的范围的起始值和结束值
random_num = random.randint(1,100)
# 唯一一个包含结束位置的
start = 1
stop = 100
# 开始猜
while True:
# 猜的动作是重复的 所以放在循环中
# 字符串数据可以使用+将数据连接起来
# 把数据转化为字符串的操作 str(数据) int() float()
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('游戏结束')