Python 程序设计入门(020)—— 循环结构程序设计(1):for 循环

Python 程序设计入门(020)—— 循环结构程序设计(1):for 循环

一、for 循环的语法

for 循环是一个计次循环,适用于枚举或遍历序列和迭代对象中的元素,一般应用于循环次数已知的情况下。for 循环的语法格式如下:

for 迭代变量 in 对象:
    循环体

说明:

(1)迭代变量:用于保存读取出的值。

(2)对象:要遍历或迭代的对象,可以是任何有序的序列对象,比如:字符串、列表、元组等。

(3)循环体:一组需要重复执行的语句。

(4)Python 采用代码缩进和冒号(:)区分代码层次。for 循环表达式行尾的冒号和下一行的缩进(通常采用 4 个空格作为一个缩进量)表示一个代码块的开始,缩进结束则表示一个代码块的结束。使用 for 循环时,必须严格按照缩进规则编写代码。

例如:

(1)提取出字符串中的数字、字母、英文符号与其他字符。

str1 = "ds3,3jH.iee/我fj*32的&号30U,码河。……H54南"
digit = ""
letter = ""
pun = ""
other = ""
for item in str1:
    if ord(item) in range(48,58):  # 数字的ASCII码为48-57
        digit += item
    elif ord(item) in range(65,91) or ord(item) in range(97,123):  # 大写字母的ASCII码为65-90,小写字母的ASCII码为97-122
        letter += item
    elif ord(item) < 128:  # 去除数字和字母
        pun += item
    else:  # 其他字符(ASCII码大于127)
        other += item
print("数字为:",digit)
print("字母为:",letter)
print("英文字符为:",pun)
print("其他字符:",other)

程序的运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
数字为: 33323054
字母为: dsjHieefjUH
英文字符为: ,./*&
其他字符: 我的号,码河。……南

(2)遍历列表数据

list1 = ["Tom","Jerry","Kate","Black"]
for item in list1:
    print(item)
print("="*30)
for item in range(len(list1)):
    print(list1[item])

程序的运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
Tom
Jerry
Kate
Black
==============================
Tom
Jerry
Kate
Black

(3)遍历元组数据

tuple1 = (["Tom",20],["Jerry",22],["Kate",18],["Black",19])
for item in tuple1:
    print("Name:",item[0],"\tAge:",item[1])
print("="*30)
for item in tuple1:
    print("姓名:{}\t年龄:{}".format(item[0],item[1]))
print("="*30)
for item in tuple1:
    for i in item:
        print(i,end="\t")
    print()
    
程序的运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
Name: Tom 	Age: 20
Name: Jerry 	Age: 22
Name: Kate 	Age: 18
Name: Black 	Age: 19
==============================
姓名:Tom	年龄:20
姓名:Jerry	年龄:22
姓名:Kate	年龄:18
姓名:Black	年龄:19
==============================
Tom	20	
Jerry	22	
Kate	18	
Black	19	

(4)遍历字典数据

dict1 = {
    
    "Tom":20,"Jerry":22,"Kate":18,"Black":19}
for key in dict1.keys():
    print("Name:{}\tAge:{}".format(key,dict1.get(key)))
print("="*30)
for item in dict1.items():
    print("Name:{}\tAge:{}".format(item[0],item[1]))
    
程序的运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
Name:Tom	Age:20
Name:Jerry	Age:22
Name:Kate	Age:18
Name:Black	Age:19
==============================
Name:Tom	Age:20
Name:Jerry	Age:22
Name:Kate	Age:18
Name:Black	Age:19

二、for 循环中使用 range() 函数

for 循环通过迭代变量遍历对象中的每个元素。通过索引遍历对象时,经常使用 range() 函数,以生成一系列连续的整数。range() 函数的格式如下:

range([start,] end[, step])
说明:
(1)start:指定计数的起始值。如果省略,则从0开始计数。
(2)end:指定计数的结束值,该参数不能省略,当函数中只有一个参数时即表示技术的结束值。生成的序列不包括结束值。比如 range(5),生成的序列为[0-4]range(1,11),生成的序列为[1-10]。
(3)step:指定步长,即两个数之间的间隔,如果省略则步长为1。
(4)在使用 range() 函数时,如果只有一个参数,则指定的是end;如果有两个参数,则指定的是start和end;指定三个参数时,第一个参数为start,第二个参数为end,第三个参数为step。

例如:

(1)遍历列表元素

list1 = ["Tom","Jerry","Kate","Black"]
for i in list1:
    print("{}".format(i),end="\t")
print()
print("="*30)
for i in range(len(list1)):
    print("{}".format(list1[i]),end="\t")
        
程序的运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
Tom	Jerry	Kate	Black	
==============================
Tom	Jerry	Kate	Black	

(2)计算 5!(1*2*3*4*5)

f = 1
for i in range(1,6):
    f *= i
print("5!结果为:",f)
        
程序的运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
5!结果为: 120

(3)计算 1-100 中所有奇数的和

sum1 = 0
for i in range(1,101,2):
    sum1 += i
print("1-100的和:",sum1)
        
程序的运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
1-100的和: 2500

三、for … else 语句

for 循环可以添加一个 else 分支语句。只有当 for 循环语句正常执行后,才会执行 else 语句。如果 for 循环语句中遇到 break 或 exit(0) 语句,同时又符合跳出的条件,则不会执行 else 语句。for … else 语句的语法格式如下:

for <迭代变量> in <遍历结构>:
    语句块1
else:
    语句块2

说明:else 后面的语句会在 for 循环执行完成的情况下执行。

例如:

(1)else 语句被执行

代码如下:

num = 97
for i in range(2,int(num**0.5) + 1):
    if num % i == 0:
        break
else:
    print("{}是一个素数。".format(num))

程序的运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
97是一个素数。

(2)else 语句没有被执行

num = 95
for i in range(2,int(num**0.5) + 1):
    if num % i == 0:
        print("{}不是一个素数。".format(num))
        break
else:
    print("{}是一个素数。".format(num))

程序的运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
95不是一个素数。

四、for 表达式

for 表达式可以利用迭代对象创建新的序列,for 表达式也称为序列递推式。语法格式如下:

[表达式 for 迭代变量 in 可迭代对象 [if 条件表达式] ]

例如:

(1)求 2-100 之间的素数

list1 = [2]
for i in range(3,101):
    if 0 not in [i%j for j in range(2,int(i**0.5) + 1)]:
        list1.append(i)
print(list1)

程序的运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

(2)处理列表数据

list1 = ["Tom","Jerry","Kate","Black"]
list2 = ["Name:" + item for item in list1]
print(list2)

程序的运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
['Name:Tom', 'Name:Jerry', 'Name:Kate', 'Name:Black']

(3)使用 zip() 函数组合多个列表

list1 = ["Tom","Jerry","Kate","Black"]
list2 = [21,20,18,19]
list3 = [name + ":" + str(age) for name,age in zip(list1,list2)]
print(list3)

程序的运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
['Tom:21', 'Jerry:20', 'Kate:18', 'Black:19']

(4)for 表达式中使用条件

list1=[x ** 2 for x in range(1,10) if x % 2 == 0]            # 返回1-9之间偶数的平方组成的列表
num = [2*x if x>=2 and x<=5 else x**2 for x in range(1,11)]  # 如果x的值介于2和5之间返回 2*x,否则返回 x**2
print(list1)
print(num)

程序的运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
[4, 16, 36, 64]
[1, 4, 6, 8, 10, 36, 49, 64, 81, 100]

猜你喜欢

转载自blog.csdn.net/weixin_44377973/article/details/132306225