Python教程

【九月打卡】第15天Python第七章包、模块、函数与变量作用域

本文主要是介绍【九月打卡】第15天Python第七章包、模块、函数与变量作用域,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

课程名称:全面系统Python3.8入门+进阶(程序员必备第二语言)

课程章节:7-3 for与range

主讲老师:7七月

课程内容:

今天学习的内容包括:

for与range

课程收获:

EG:

a = [['apple', 'orange', 'banana', 'grape'], (1,2,3)]
for x in a:
    for y in x:
        if y == 'orange':
            break
        print(y)
else:
    print('fruit is gone')

https://img3.sycdn.imooc.com/6327ba530001efc107770465.jpg

为什么我们加入了break,上面的代码还会打印出else语句?

原因在于,我们的这个break跳出的是里面的循环,但是和else配对的是外面的循环,所以说跳出里面的循环,并没有跳出最外面的循环。所以else依然会执行。我们可以在外面加一个break来看下效果。

a = [['apple', 'orange', 'banana', 'grape'], (1,2,3)]
for x in a:
    if 'banana' in x:
        break
    for y in x:
        if y == 'orange':
            break
        print(y)
else:
    print('fruit is gone')

我们可以发现,什么都没有打印出来,因为当x取值是第一个列表的时候,这个判断的表达式结果是真,banana确实是在当前的x里面,所以说就直接跳出了循环,跳出循环之后else就不在执行。

https://img3.sycdn.imooc.com/6327ba7200016b4007670374.jpg

我们从orange开始break了,为什么后面的1,2,3会被打印出来?

最根本的原因是代码里有2个嵌套的循环。他并不是一个for循环,我们用break跳出的是一个内部循环。内不能循环跳出之后,外部循环还在执行。所以说第一个列表的循环结束了之后,你并不影响第二个元组的循环。所以他依然会打出1,2,3。但是你第一个列表orange和之后banana和grape都不会被打印了。因为他们的循环已经跳出。这样的一个错误,在我们做多维度循环时候非常容易出错的地方。

https://img4.sycdn.imooc.com/6327ba7d00013dd410960440.jpg

其他语言里面的:

# 其他语言里
for(i=0;i<10:i++){

}
#这样一个语法在python里怎么表示。
# python怎么表示重复指定次数的代码

for x in range(0,10):
    print(x)

第一次使用range函数时候,会有一个误判。他会认为(0,10)表示是11个元素。其实他只有10个元素。他只会表示0~9不会表示0~10。括号里的第一个元素0,确实表示的是起始的数字,但是第二个元素10表示的不是终止数字。而是表示的一个偏移量,也就是说从0开始总共要有多少个数字。

EG:不希望range生成的数组不是连续的,希望他有一个间隔。比如,希望生成0,2,4,6,8,已2为步长。

for x in range(0,10,2):
    print(x)

https://img3.sycdn.imooc.com/6327ba9d00013c3103920428.jpg

所以range里第三个参数就是步长-间隔多少

# 让x已一行的形式变现,并现实的是用|分隔的。
for x in range(0,10,2):
    print(x,end='|')

打印出来的0|2|4|6|8|是一个等差数列,同时也是一个递增的等差数列。

EG 我们要打印一个递减的等差数列。

for x in range(10,0,-2):
    print(x,end='|')

https://img3.sycdn.imooc.com/6327bab9000138c704750341.jpg

这篇关于【九月打卡】第15天Python第七章包、模块、函数与变量作用域的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!