Day04 python的基础知识及语法(for循环、while循环、循环关键字(continue\ break)、猜数字游戏)

一. For 循环

 1. 语法:

for 变量 in 容器:
    循环体
    容器型数据类型 : 字符串、列表、字典、元组、集合、迭代器、生成器、range()
    循环体:
  •  结构上,和for 保持一个缩进的一条或者多条语句
  •  逻辑上,循环体是需要重复执行的代码
    循环原理
  • 让变量去容器中取值,一个一个的取,取完为止,每取一个值就执行一次循环体。
  • for 循环的循环次数是由容器中的个数决定。

   

2. range()  

 1. 用法:
  • range(n) 创建 [0,n) 的等差数列,首项为0,尾是n-1,差是1 。   range(5) : ---  0 1 2 3 4
  • range(m,n):创建[m,n)的等差数列,差是1. 
  • range(m,n, step)  : 创建一个[ m,n) 的等差数列,差是step(可为负数 意思是减法)。
  2.运用场景
  • 统计个数

           第一步:定义一个变量默认值是0来保存最后的个数

           第二部:利用循环,一次获取每一个统计对象

           第三步:遇到一个满足符号统计条件的数据个数载原来的基础上+1

# 1-100 以内的偶数个数
count_even = 0
for i in range(1,101):
    if i % 2 == 0:
        count_even += 1
print(f"1-100中偶数数量为{count_even}")
# 2)统计1~100中能被3整除但是不能被2整除的数的个数
count_num = 0
for i in range(1,101):
    if i % 3 == 0 and i % 2 != 0:
        count_num += 1
print("1到100中可以被3整除但不能被2整除个数:", count_num)
# 统计不及格的人数

count_nopass = 0
grades = [89,90,45,66,70,99,20,59]
for i in grades:
    if i < 60:
        count_nopass += 1
print(f"不及格数量为{count_nopass}")

  • 累计求和

      求grades中所有及格同学分数的和

# 统计所有及格学生的成绩总和
total_score = 0
grades = [89, 90, 45, 66, 70, 99, 20, 59]
for i in grades:
    if i >= 60:
        total_score += i
print(total_score)

求数字个位数的和

#求nums中所有元素个位的和
sum = 0
nums = [78, 912, 67, 34, 19, 100]
for i in nums:
    k = i % 10
    sum += k
print(sum)

二. while 循环

1. 语法

while 条件语句:
    循环体

    条件语句:            可以是任何有结果的表达式,一般是判断语句

    循环体:                结构上,是和while保持一个缩进的一条或多条语句

                                  逻辑上,循环体就是需要重复执行代码

    循环原理:             不断的判断条件语句是否成立(True),如果是就继续执行循环体,否则循                                     环体结束

案例: 如何用while 控制循环次数(打印5次hello)
i=0
while i < 5:
    print('hello')
    i+=1

 # 练习1:使用while循环打印等差数列5 6 7 8 9 ... 20

# 打印等差数列 5 到 20
end = 20
start = 5
while start <= end:
    print(start)
    start += 1
print("over")


 # 练习2:使用while循环打印等差数列10 9 8 7 6 ... 0

end2 = 0
start2 = 10
while start2 >= end2:
    print(start2)
    start2 -= 1
print('over')


 # 练习3:使用while循环统计100以内不能被5整除的数的个数       

# 练习3:使用while循环统计100以内不能被5整除的数的个数
count = 0
start3 = 1
while start3 <= 100:
    if start3 % 5 != 0:
        count += 1
    start3 += 1
print("100以内不能被5整除的数的个数:", count)
while 和 for 的选择:
  •   for 循环 解决不了循环次数不确定的问题 ,(我只知道这里需要写循环,循环的次数不由你决定、控制不住,由使用者决定等)

例子: 提示用户输入密码直到用户输入正确为止

value = None
pw = '123456'
while value != pw:
    value = input('请输入密码')

三. 循环关键字

1. continue 

  •  结束一次循环: 执行循环体时,遇到continue,本次循环结束,直接进入到下次循环。
    for x in range(10):
        if x % 2 == 0:
            continue
        print(x)
    执行的结果为 1、3、5、7、9 。 因为遇到continue, 满足x % 2 的结果不进行输出。   

###continue 是一个控制流语句,用于跳过循环体中剩余的代码,直接进入下一次循环迭代。当 continue 被执行时,程序将跳过循环体中 continue 后面的代码,然后继续下一次循环。

下面是一个简单的例子,演示了 continue 的用法:

for i in range(1, 6):
    if i == 3:
        continue  # 当 i 等于 3 时,跳过本次循环的剩余代码
    print("当前值:", i)

print("循环结束")

2. break   - 结束所有循环

    执行循环体时如果遇到了break,整个循环直接结束(本次循环没执行的部分不再执行,也不进入下次循环)

for x in range(5,15):
    if x % 4 == 0:
        break
    print(x)

这里的输出结果是: 5 、 6、 7

因为第一个数是5,5对4取余不是0,不进入循环体,输出5。   6、7 同样不进入循环体,直接输出, 但是8 ,对4取余为0, 进入循环体, break。结束程序。

3. 当while 遇到break
  •   使用while 循环的套路:
while True:
    需要重复执行的操作
    if 循环结束条件
        break

pw = '123456'
while True:
    value = input('请输入密码')
    if value == pw:
        break
猜数字游戏:首先一共只能猜3次,范围限制在0,100. 并且要提示用户输入的数字大了还是小了。
from random import randint
system_num =randint(0,100)

attempt = 0  
while True:
    guess_num = int(input('请输入您所猜想的数字'))
    attempt += 1
    if guess_num == system_num:
        print('恭喜猜对了')
        break
    elif guess_num > system_num:
        print('大了')
    else:
        print('小了')

    if attempt > 3:
        print('超过次数')
        break

4. else

完整的for 循环结构:

for 变量 in 容器:
    循环体
else:
    代码块

完整的while 循环结构

while 条件语句:
    循环体
else:
    代码段
  1. 循环后面的else 不会影响前面循环的执行
  2. 如果前面的循环正常结束,在循环结束后就会之行else后面的代码段,如果循环是因为遇到break结束的,循环结束else后面的代码段不会执行。

用else的案例:

判断list中的元素是否都是整数, 如果都是整数就打印‘整数列表’, 否则就打印‘非整数列表’

list = [10, 2.3, 89, 40, 2]
for num in list:
    if type(num) != int:
        print('非整数列表')
        break
else:
    print('整数列表')

解析:else和for 在一列时: 遍历列表,进入if循环,进行判断如果数字类型是整数型,不进入循环,再看列表中的下一个数字,再看类型。如果不是整数类型,进入循环体,打印非整数列表,然后结束整个代码。  # 如果都是整数型, 就进入else,说明为整数列表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值