Python基础之循环

循环结构

Python中的循环语句有 2 种,分别是 while 循环和 for 循环

让程序重复不停的做一件或几件事情就需要用循环

for 循环的语法格式

for 迭代变量 in 字符串|列表|元组|字典|集合:
    代码块

上面语法格式中,迭代变量用于存放从序列类型变量中读取出来的元素;代码块指的是具有相同缩进格式的多行代码,由于和循环结构联用,因此代码块又称为循环体。

names = ["Jie","Yuan","Tim","Jay"]
for name in names:  # for name in names 就是循环把列表中每个元素代入变量name,然后执行for下面缩进的语句
    print(name)
# Jie
# Yuan
# Tim
# Jay

 

上面就是通过for循环不断从names列表中取出元素赋值给name变量,执行print(name)语句,循环体就是print(name)

例:计算 1+2+3+4+5+6+7+8+9 的和

sum = 0
for i in [1,2,3,4,5,6,7,8,9]:
    sum = sum + i
print(sum)

range( ) 函数,返回的是一个可迭代对象(能够通过for遍历的对象),Python 内置函数,用于生成一系列连续整数,多用于 for 循环中

for i in range(0,5): # range(0,5)生成的序列是从0开始小于5的整数
    print(i)
'''
0
1
2
3
4
'''

 

问题:结合range( )函数,如果需要把某一代码重复执行10次,该如何编写代码?

结合range( ),通过 lis( ) 函数可转换为List

l1 = list(range(0,5))  # range(0,5)可简写成range(5)
print(l1)
# [0, 1, 2, 3, 4]

l2 = list(range(5))
print(l2)
# [0, 1, 2, 3, 4]

 结合range()函数,通过索引来遍历列表

names = ["Jie","Yuan","Tim","Jay"]
for index in range(len(names)):  # len(names)-> 返回列表长度4,range(len(names))->range(0,4)
    name = names[index]
    print(name)

 

任务1:生成一个1-100的列表

任务2:通过for循环把goods_list1中元素添加到goods_list2中

goods_list1 = ['Huawei p40', 'Huawei p50', 'Apple iphone 12', 'Apple iphone 13 pro']
goods_list2 = ['xiaomi 10','redme k50']
for good in goods_list1 :
    goods_list2 .append(good)
print (goods_list2 )
# ['xiaomi 10', 'redme k50', 'Huawei p40', 'Huawei p50', 'Apple iphone 12', 'Apple iphone 13 pro']

任务3:两个给定的列表keys, values,通过for循环,输出一个字典dic_num→{’one’:1, ‘two’:2, ‘three’: 3}

keys = ['one', 'two', 'three']
values = [1, 2, 3]
'''请完善代码逻辑,实现dic_num→{’one’:1, ‘two’:2, ‘three’: 3}'''

上述代码实现还可通过dic_num = dict( zip(keys, values) )来实现

通过for循环遍历字典

for 循环遍历字典时,经常会用到和字典相关的 3 个方法,即 items()、keys() 以及 values()

  • keys() 方法用于返回字典中的所有键(key);
  • values() 方法用于返回字典中所有键对应的值(value);
  • items() 用于返回字典中所有的键值对(key-value)。

sorces = {'数学':90, '语文':85, '英语':95}
sorces_keys = sorces.keys()sorce = {'数学':90, '语文':85, '英语':95}

sorces_keys = sorces.keys()
print(sorces_keys)

sorces_values = sorces.values()
print(sorces_values)

sorces_items = sorces.items()
print(sorces_items)

 运行结果:

dict_keys(['数学', '语文', '英语'])
dict_values([90, 85, 95])
dict_items([('数学', 90), ('语文', 85), ('英语', 95)])

注意:它们的返回值并不是我们常见的列表或者元组类型,因为 Python 3.x 不希望用户直接操作这几个方法的返回值,如果需要引用,可以通过list( )进行强制类型转换

通过for循环遍历字典的key

sorces = {'数学':90, '语文':85, '英语':95}
for key in sorces.keys():
    print(key)

运行结果为:

数学
语文
英语

 通过for循环遍历字典的value

 

sorces = {'数学':90, '语文':85, '英语':95}
for value in sorces.values():
    print(value)

运行结果为:

90
85
95

 通过for循环同时遍历字典的key-value

sorces = {'数学':90, '语文':85, '英语':95}
for k,v in sorces.items():
    print(f'该同学的{k}分数为{v}')

 运行结果为:

该同学的数学分数为90
该同学的语文分数为85
该同学的英语分数为95

练习:

给定一个字典user,key是userid, value是用户的nickname,把userid与nickname分别存放入两个列表中

user = {10001:'徐凤年', 10002:'徐晓', 10003:'李醇罡', 10004:'剑九黄', 10005:'王仙芝'}
'''
通过for循环把userid与nickname分别存放入userid_list, nickname_list中
'''

while循环

while 循环和 if 条件分支语句类似,即在条件(表达式)为真的情况下,会执行相应的代码块。不同之处在于,只要条件为真,while 就会一直重复执行那段代码块。

while 语句的语法格式

while 条件表达式:
    代码块

 

 while 语句执行的具体流程为:首先判断条件表达式的值,其值为真(True)时,则执行代码块中的语句,当执行完毕后,再回过头来重新判断条件表达式的值是否为真,若仍为真,则继续重新执行代码块...如此循环,直到条件表达式的值为假(False),才终止循环。

num = 10
while num>0:
    print(num)
    num -= 1   # num = num - 1
# 10,9,8,7,6,5,4,3,2,1

num = 10
while num>0:
    print(num)
    num += 1   # num>0条件永远为真,陷入死循环

 在while循环时要注意条件的边界值,以及条件是否为永真,否则会陷入死循环

num = 10
while num>0:
    num -= 1
    print(num)
# 9,8,7,6,5,4,3,2,1,0

num = 10
while num >0:
    print(num )
    num -= 1
# 10,9,8,7,6,5,4,3,2,1

 

比较上面两代码块,发现了什么要注意什么?

break

在循环中break语句可提前退出循环

num = 10
while num>0:
    print(num)
    num -= 1
# 10,9,8,7,6,5,4,3,2,1

num = 10
while num>0:
    if num < 5:  # 如果num<5 执行break语句,提前退出循环
        break # 循环终止
    print(num)
    num -= 1
# 10,9,8,7,6,5

 试一试:编写一个猜数字游戏,random.randint(0,10)方法是从0-10中生成一个随机数,下面程序,会从键盘上获取一个整数,并比较这个生成的随机数,当输入’q’时退出这个程序

import random

exc_num = random.randint(0,10)

while True:
    num = input("请输入一个数:")
    if num == 'q':
        print('已退出')
        break
    elif int(num) == exc_num:
        print("恭喜你猜对了!!!!")
    elif int(num) > exc_num:
        print("你猜的数值偏大,再试试")
    else:
        print("你猜的数值偏小,再试试")

continue

在循环中跳过当前循环,直接进入下一轮循环

num = 10
while num>0:
    num -= 1
    if num % 2 == 0: # 当num为偶数时执行continue,不执行continue后面的循环语句 print(num)结束本轮循环,并进入下一轮循环
        continue
    print(num)
# 9,7,5,3,1

 嵌套循环

i = 0
while i<10:
    for j in range(10):
        print("i=",i," j=",j)       
    i=i+1

 

总结:break语句可以在循环过程中直接退出循环,而continue语句可以提前结束本轮循环,并直接开始下一轮循环。这两个语句通常都必须配合if语句使用。

如果程序陷入死循环,以pytharm中通过Ctrl+C退出程序,或者强制结束Python进程。

任务:已知两list ,users= ['Jie', 'Jucy' , 'Lisy', ‘Jack’], new_users = [ ],使用while循环,把users中的元素全部移到new_users中,打印出的new_users最终结果如下:

users= ['Jie', 'Jucy' , 'Lisy', 'Jack']
new_users = []

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值