python基础篇-for循环

一、for循环的语法

Python中,for语句是一种迭代控制流语句,可以用于遍历序列(如字符串、列表、元组、字典、集合)中的每个元素,或者执行指定次数的循环。for循环语句的语法结构如下:

for 变量 in 序列:
    # 循环体代码块

二、for循环的使用规则

  1. for循环的执行顺序是从序列的第一个元素开始,依次遍历到最后一个元素;

  1. 可以通过range()函数来指定遍历序列的范围,比如range(5)表示遍历0~4的整数序列;

  1. Python中的for循环通常不需要使用计数器,而是直接使用遍历序列中的元素;

  1. for循环可以使用break和continue语句来控制循环的执行流程,其中break用于退出循环,而continue用于跳过某个元素继续执行下一个元素;

  1. 对于一些常见的序列类型(如字符串、列表等),可以使用内置函数len()获取序列的长度,从而确定for循环的遍历范围;

  1. 可以使用enumerate()函数来同时获取序列中的元素和它们的索引;

  1. 如果需要对多个序列进行遍历,可以使用zip()函数将它们组合成一个zip对象,然后再在for循环中依次取出每个元素;

三、使用for循环时的注意事项

  1. 循环次数的计算:要确保for循环的遍历范围正确,避免遗漏或重复访问序列中的元素。可以使用len()函数获取序列的长度,并配合range()、enumerate()或zip()等函数实现对序列的遍历;

  1. 循环变量的作用域:for循环中定义的变量只在循环体内部有效,在循环体外无法访问。因此需要根据实际需要进行变量的定义和赋值;

  1. 循环体的缩进:Python中使用缩进来表示代码块的层次结构,在for循环中必须正确缩进循环体,并保持一致的缩进风格;

  1. 注意循环控制语句的使用:可以使用break、continue等语句控制for循环的执行流程,但要避免滥用和误用,以免导致代码逻辑混乱或死循环等问题。

四、for循环的常用操作

  1. 遍历列表

fruits = ['苹果', '香蕉', '橘子']
for fruit in fruits:
    print(fruit)
苹果
香蕉
橘子

  1. 遍历字典

  1. 遍历键

my_dict = {'a': 1, 'b': 2, 'c': 3}

for key in my_dict:
    print(key)
a
b
c
  1. 遍历值

my_dict = {'a': 1, 'b': 2, 'c': 3}

for key in my_dict:
    print(key)
1
2
3
  1. 遍历键值对

my_dict = {'a': 1, 'b': 2, 'c': 3}

for key, value in my_dict.items():
    print(key, value)
a 1
b 2
c 3

  1. 遍历文件

  1. 生成数值序列并计算总和

# 生成数值序列
n = 10
nums = range(1, n+1)

# 计算序列总和
total = 0
for num in nums:
    total += num

# 输出结果
print(f"数值序列:{list(nums)}")   #输出结果:数值序列:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(f"序列总和:{total}")        #输出结果:序列总和:55

  1. 遍历嵌套列表

#定义一个嵌套列表
data = [
    [1, 2, 3],
    [4, 5],
    [6, 7, 8, 9]
]

#遍历该嵌套列表
for sublist in data:              # 外层循环遍历大列表中的每个小列表
    for item in sublist:          # 内层循环遍历小列表中的每个元素
        print(item)               # 输出每个元素
#输出结果:
1
2
3
4
5
6
7
8
9

五、for循环控制循环次数:range()

可以使用Python内置函数range()来在for循环中控制循环次数。range()函数的作用是产生一个由数字组成的序列。具体语法如下:

range(start, end, step)

ps:start表示序列的起始值(默认为0),end表示序列的终止值(不包含该值),step表示序列中相邻元素之间的步长(默认为1)

# 使用range()函数控制循环次数,打印一个数字序列中的所有偶数
for i in range(0, 10, 2):
    print(i)
输出结果:
0
2
4
6
8

六、for循环的跳出循环:break、continue、return

  1. break

break: 跳出循环体,不再继续执行后面的代码。当程序执行到 break 语句时,程序将会直接跳出整个 for 循环。

fruits = ["苹果", "香蕉", "樱桃", "草莓", "羊角蜜"]

for fruit in fruits:
    if fruit == "樱桃":
        break
    print(fruit)
输出结果:
苹果
香蕉
  1. continue

continue: 跳过当前循环,执行下一次循环。当程序执行到 continue 语句时,将会直接跳过本次循环剩下的代码,并开始下一次循环。

fruits = ["苹果", "香蕉", "樱桃", "草莓", "羊角蜜"]

for fruit in fruits:
    if fruit == "樱桃":
        continue
    print(fruit)
输出结果:
苹果
香蕉
草莓
羊角蜜
  1. return

return: 结束整个函数,并返回一个指定的值。当程序执行到 return 语句时,将立即结束函数并返回指定的值(如果没有指定返回值,则返回 None)。

def find_fruit(fruits):
    for fruit in fruits:
        if fruit == "草莓":
            return True
    return False

#通过以下方式调用函数
fruits = ["苹果", "香蕉", "樱桃", "草莓", "羊角蜜"]
result = find_fruit(fruits)
print(result)    #输出结果:True

七、练习题

  1. 分别求1~100内偶数之和

# 初始化累加器为0
sum = 0

# 遍历1~100中所有数字
for i in range(1,101):
    # 判断当前数字是否为偶数,如果是,则加入到累加器中
    if i % 2 == 0:
        sum += i

print("1~100内偶数之和为:", sum)   #输出结果:1~100内偶数之和为: 2550

  1. 求1~100之间所有奇数之和

# 初始化累加器为0
sum = 0

# 遍历1~100中所有数字
for i in range(1,101):
    # 判断当前数字是否为奇数,如果是,则加入到累加器中
    if i % 2 == 1:
        sum += i

print("1~100内奇数之和为:", sum)    #输出结果:1~100内奇数之和为: 2500

  1. 求阶乘

# 输入待求的数字
num = int(input("请输入一个正整数:"))

# 初始化累积器为1
factorial = 1

# for循环计算阶乘,从1到num依次累乘
for i in range(1, num+1):
    factorial *= i

print("{}的阶乘为:{}".format(num, factorial))
输出结果:
请输入一个正整数:5
5的阶乘为:120

  1. 有1,2,3,4四个数字,求这四个数字能生成多少个互不相同且无重复数字的三位数

count = 0  # 记录满足条件的三位数的个数

for i in range(1, 5):       # 百位数范围
    for j in range(1, 5):   # 十位数范围
        for k in range(1, 5):   # 个位数范围
            if i != j and i != k and j != k:   # 判断三个数是否互不相同
                num = i * 100 + j * 10 + k     # 拼凑出一个三位数
                count += 1
                print("第{}个满足条件的三位数为:{}".format(count, num))

print("总共有{}个互不相同且无重复数字的三位数。".format(count))
输出结果:
第1个满足条件的三位数为:123
第2个满足条件的三位数为:124
第3个满足条件的三位数为:132
第4个满足条件的三位数为:134
第5个满足条件的三位数为:142
第6个满足条件的三位数为:143
第7个满足条件的三位数为:213
第8个满足条件的三位数为:214
第9个满足条件的三位数为:231
第10个满足条件的三位数为:234
第11个满足条件的三位数为:241
第12个满足条件的三位数为:243
第13个满足条件的三位数为:312
第14个满足条件的三位数为:314
第15个满足条件的三位数为:321
第16个满足条件的三位数为:324
第17个满足条件的三位数为:341
第18个满足条件的三位数为:342
第19个满足条件的三位数为:412
第20个满足条件的三位数为:413
第21个满足条件的三位数为:421
第22个满足条件的三位数为:423
第23个满足条件的三位数为:431
第24个满足条件的三位数为:432
总共有24个互不相同且无重复数字的三位数。

  1. 9*9乘法表

for i in range(1, 10):
    for j in range(1, i+1):
        print('{} x {} = {}'.format(i, j, i*j), end='\t')
    print() # 换行
输出结果:
1 x 1 = 1
2 x 1 = 22 x 2 = 4
3 x 1 = 33 x 2 = 63 x 3 = 9
4 x 1 = 44 x 2 = 84 x 3 = 124 x 4 = 16
5 x 1 = 55 x 2 = 105 x 3 = 155 x 4 = 205 x 5 = 25
6 x 1 = 66 x 2 = 126 x 3 = 186 x 4 = 246 x 5 = 306 x 6 = 36
7 x 1 = 77 x 2 = 147 x 3 = 217 x 4 = 287 x 5 = 357 x 6 = 427 x 7 = 49
8 x 1 = 88 x 2 = 168 x 3 = 248 x 4 = 328 x 5 = 408 x 6 = 488 x 7 = 568 x 8 = 64
9 x 1 = 99 x 2 = 189 x 3 = 279 x 4 = 369 x 5 = 459 x 6 = 549 x 7 = 639 x 8 = 729 x 9 = 81

  1. 用户登录管理系统

用户登录需求:

  1. 输入用户名和密码;

  1. 判断用户名和密码是否正确(name=‘root’,passwd=‘westos’)

  1. 登录仅有三次机会,超过3次会报错

name = '清微'
passwd = '123456'

for i in range(3):    #range()函数来控制循环3次
    input_name = input("请输入用户名:")
    input_passwd = input("请输入密码:")
    if input_name == name and input_passwd == passwd:
        print("登录成功!")
        break
    else:
        if i < 2:
            print("用户名或密码错误,还剩{}次机会,请重新输入。".format(2-i))
        else:
            print("已经连续3次输入错误,退出登录。")
输出结果:
请输入用户名:清微
请输入密码:12
用户名或密码错误,还剩2次机会,请重新输入。
请输入用户名:清微
请输入密码:1
用户名或密码错误,还剩1次机会,请重新输入。
请输入用户名:清微
请输入密码:123456
登录成功!

  1. 求最大公约数和最小公倍数

# 定义函数,输入参数为两个整数
def gcd_lcm(a, b):
    # 求最大公约数
    for i in range(min(a, b), 0, -1):
        if a % i == 0 and b % i == 0:
            gcd = i
            break
    else: # 如果没有正常执行break语句,则说明a、b均为0,此时它们的最大公约数为0
        gcd = 0

    # 求最小公倍数
    for i in range(max(a, b), a * b + 1):
        if i % a == 0 and i % b == 0:
            lcm = i
            break
    else: # 如果没有正常执行break语句,则说明a、b均为0,此时它们的最小公倍数为0
        lcm = 0

    return gcd, lcm

#可以通过以下方式调用该函数
a = 120
b = 72
gcd, lcm = gcd_lcm(a, b)
print("{}和{}的最大公约数为{},最小公倍数为{}。".format(a, b, gcd, lcm))   
输出结果:
120和72的最大公约数为24,最小公倍数为360。

你可能感兴趣的:(python编程基础,python)