前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python03 if、while、for

Python03 if、while、for

作者头像
py3study
发布2020-01-11 22:11:03
1K0
发布2020-01-11 22:11:03
举报
文章被收录于专栏:python3python3

标签(空格分隔): 编程语言 python

1.if

代码语言:javascript
复制
number = 100
guess_number = int(input('guess number:'))

if guess_number == number:
    print ('Bingo')
elif guess_number > number:
    print ('think smaller')
else:
    print ('think bigger!')

满足if的条件就print ('Bingo'),不满足则跳过; 满足elif的条件就......,不满足就跳过; 如果if和elif的条件都不满足,就执行else下面的代码。 图中代码要注意int(input)这里,针对希望写入数字时,就要使用int给转义成数字格式,否则默认input是字符串,执行代码时会报错。

1.png-2.1kB
1.png-2.1kB

满足else的执行结果

2.png-2.5kB
2.png-2.5kB

满足elif的执行结果

3.png-2.3kB
3.png-2.3kB

满足if的执行结果

代码语言:javascript
复制
menu = 'A','C','D'
for i in menu:
    if i == 'A' or 'C':
        print ('aaa')
    else:
        print ('bbb')
2.png-0.6kB
2.png-0.6kB

if i == 'A' or 'C' 这个从表面意思看可能的判断如果i等于A或者C的话,就print aaa,但其实不是这样的,这个C的部位即使不是C,是任意数据都表示为数字1(True),所以实际意思是当 i 等于A或True就会print aaa,C这个部位存在任意数据就相当于一直为True,所以可以看到执行结果就是一直print aaa

代码语言:javascript
复制
menu = 'A','C','D'
for i in menu:
    if i == 'A' or 'any':
        print ('aaa')
    else:
        print ('bbb')
2.png-0.6kB
2.png-0.6kB

可以看到or 后面是任何数据类型,都为True。

代码语言:javascript
复制
menu = 'A','C','D'
for i in menu:
    if i == 'A' or i == 'any':
        print ('aaa')
    else:
        print ('bbb')

if i == 'A' or i == 'any' 这表示相当于判断等于A或any就print aaa

2.png-0.8kB
2.png-0.8kB
代码语言:javascript
复制
menu = 'A','C','D'
for i in menu:
    if i == ('A' or 'any'):
        print ('aaa')
    else:
        print ('bbb')

加括号的方式来写也可以。

4.png-0.8kB
4.png-0.8kB

2.while

2.1 无线循环

代码语言:javascript
复制
count = 0
while True:
    print ('count',count)
    count += 1

当一直为True时,也就是一直为真,就会执行count +=1(相当于count = count +1),每加一次1就赋值给count,并打印出来。

image_1c08843qn1hc6e7ouq11196om2b.png-3.6kB
image_1c08843qn1hc6e7ouq11196om2b.png-3.6kB

只是一瞬间数字就加到了240529,这里只能强制停止循环,否则会一直加下去。

2.2 break

代码语言:javascript
复制
umber = 100
while True:
    guess_number = int(input('guess number:'))
    if guess_number == number:
        print ('Bingo')
        break
    elif guess_number > number:
        print ('think smaller!')
    else:
        print ('think bigger!')

If条件成立的话就print,然后break会跳出while循环; 否则就一直while循环

4.png-3.7kB
4.png-3.7kB

2.3 设置常事限制次数

代码语言:javascript
复制
number = 100
count = 0
while True:
    if count ==3:
        print ('time out')
        break
    guess_number = int(input('guess number:'))
    if guess_number == number:
        print ('Bingo')
        break
    elif guess_number > number:
        print ('think smaller!')
    else:
        print ('think bigger!')
    count += 1

我们通过一个变量count来进行计数,初始值为0 尝试一次,就执行一次count +=1,当满足count等于3时(限制次数为3),就通过break结束while循环。

2.4 while条件修改

代码语言:javascript
复制
number = 100
count = 0
while count<3:
    guess_number = int(input('guess number:'))
    if guess_number == number:
        print ('Bingo')
        break
    elif guess_number > number:
        print ('think smaller!')
    else:
        print ('think bigger!')
    count += 1
else:
    print ('time out!')

删除标题3中的if count == 3这块语句,直接在while中定义,当count<3时,就执行while语句,这样就减少并优化了代码,执行结果是一样的。

1.png-3.1kB
1.png-3.1kB

2.5 while与else,选择性退出循环

代码语言:javascript
复制
number = 100
count = 0
while count<3:
    guess_number = int(input('guess number:'))
    if guess_number == number:
        print ('Bingo')
        break
    elif guess_number > number:
        print ('think smaller!')
    else:
        print ('think bigger!')
    count += 1
    if count ==3:
        confirm = input('time limited,continue or not...please choose y or n:')
        if confirm != 'n':
            count = 0
else:
    print ('time out!')

当while的条件成立时,就运行while下面的子代码; 如果while的条件不成立,就运行最下面else的代码。 如果break就不会执行下面任何代码了,包括else。 同时代码中还设立了选择性退出的语句,如果if count ==3,就使用y和n来进行选择是否继续循环,只要输入的不是n,就继续循环; 继续的话就将count清0,这样while循环条件继续成立就可以继续循环。 如果选择n的话,因为count已经等于3了,不满足while条件,就不会再循环了,就会执行下面的else代码。

image_1c088nq6v9a95vo9mh86k7e55t.png-23.4kB
image_1c088nq6v9a95vo9mh86k7e55t.png-23.4kB

可以看到选择y后,还能继续去guess,选择了n就执行了下面的else代码;

2.6 For循环

  • 循环数字范围
代码语言:javascript
复制
for i in range(10):
    print ('loop:',i)
image_1c088puug8v1lrj3q917rdkoa6n.png-3.6kB
image_1c088puug8v1lrj3q917rdkoa6n.png-3.6kB

For循环,每循环一次就将当前循环的值赋值给i。 Range就是范围的意思,根据括号中的10,就是0到9,从0开始,一共10个数字。 i是一个名称,in会将0到9循环的赋值给i print会将每一个轮询的内容打印出来,直到轮询结束。

  • for替代while
代码语言:javascript
复制
number = 100
count = 0
for i in range(3):
    guess_number = int(input('guess number:'))
    if guess_number == number:
        print ('Bingo')
        break
    elif guess_number > number:
        print ('think smaller!')
    else:
        print ('think bigger!')
else:
    print ('time out!')

最多能for循环3次,如果for循环完成就会执行else代码; 如果没有执行完成for循环,就break,下面就不会执行else代码了。

  • 步长
代码语言:javascript
复制
for i in range(0,10,2):
    print ('loop:',i)

0,10表示定义从0到10这个范围数字,然后对这个范围进行循环; 2表示步长,也就是每隔2个数字循环一次。

image_1c088une4ac619791ovn1sfdhnr8e.png-2.3kB
image_1c088une4ac619791ovn1sfdhnr8e.png-2.3kB

执行结果为每隔2个循环一次,没有循环到10,是因为最后一个数字不进行循环,也就是说实际数字范围是到9,不满足步长2的循环,所以最终只循环到了8。

  • pycharm的断点测试
image_1c088vr291i6ucanuoi8dtjoh8r.png-9.9kB
image_1c088vr291i6ucanuoi8dtjoh8r.png-9.9kB

从图中可以看到行数的右边,代码的左边默认是空的,没有任何标记。

image_1c08904mn6gfs981n681sru15qe98.png-11.7kB
image_1c08904mn6gfs981n681sru15qe98.png-11.7kB

通过使用鼠标左键在每一行标的右边一次进行点击,点击后就会出现红点。

image_1c0890hba1gah1beg1h4e1fq21dms9l.png-21.6kB
image_1c0890hba1gah1beg1h4e1fq21dms9l.png-21.6kB

在工具栏中找到debug图标,然后点击(在当前file文件右键中也可以找到debug)

image_1c0891ff91ci8mdv1uotcsk1plda2.png-13.9kB
image_1c0891ff91ci8mdv1uotcsk1plda2.png-13.9kB

点击debug后,被标记断点的地方,颜色就会改变,可以看到除了121行,其他行都是红色,121行之所以颜色不同,是表示当前代码卡在121行,该行代码还没有执行。

image_1c0891sjlg5f1jgsiej18qt1uliaf.png-27.3kB
image_1c0891sjlg5f1jgsiej18qt1uliaf.png-27.3kB

点击debug以后,在pycharm工具下方会弹出该窗口 注意图中圈起来的部分,一个是箭头,一个是Debugger,当前我们处于Debugger窗口 点击一下箭头表示执行当前代码行(121行)

image_1c0892hnc1giio10gpm1ft51juhas.png-14.2kB
image_1c0892hnc1giio10gpm1ft51juhas.png-14.2kB

点击箭头后可以看到121行,代码右边多处来一个信息,i:0表示当前i等于0的意思。 然后第122行代码颜色又变了,表示当前代码卡在第二行,还没有执行。 所以debug功能是非常强大的,可以通过该方式一步一步的去查看我们的代码每步是如何执行的,来判断我们的代码是否正确执行; debug是一个非常好用的排错功能。

image_1c08931tk5jv10ohgvb1mrn1qegb9.png-25.4kB
image_1c08931tk5jv10ohgvb1mrn1qegb9.png-25.4kB

从pycharm下面的Debugger窗口也可以看到执行第一步后的一些信息,可以看到i={int}0,表示当前的i等于0,i属于int格式。

image_1c0893iab3n16sf1tc9h706udbm.png-29.2kB
image_1c0893iab3n16sf1tc9h706udbm.png-29.2kB

切换到Console窗口,然后不断的去点击箭头来观察代码执行的每一步的结果,这样就可以判断执行代码的每一步是否正确。

  • continue
代码语言:javascript
复制
for i in range(0,10):
    if i <3:
        print ('loop:',i)
    else:
        continue
    print ('test')

continue用来跳出本次循环,执行下一次循环;也就是说执行continue后,下面的代码就不会再执行,根据循环执行下一次循环。

image_1c0895aqm1d5mt8lfls1grb14d9cg.png-2.2kB
image_1c0895aqm1d5mt8lfls1grb14d9cg.png-2.2kB

设立if条件<3时,打印一次 i 和test,所以当 i 等于3时,if条件就不满足了,就会执行else中的continue,接下来的循环就不会不会打印 i 对应的值,也不会打印test了。

  • 嵌套循环
代码语言:javascript
复制
for i in range(0,10):
    if i <3:
        print ('外循环---',i)
    for m in range(10):
        print ('--',m)
image_1c0896jfu18ka48o588fh414a0da.png-8.7kB
image_1c0896jfu18ka48o588fh414a0da.png-8.7kB

每一个大循环中会有10个小循环 10*10,一共循环了100次

代码语言:javascript
复制
for i in range(0,10):
    if i <3:
        print ('外循环---',i)
    for m in range(10):
        print ('--',m)
        if m >= 3:
            break

设立内循环停止循环的条件,当大于等于3时,就停止循环。

image_1c0899je519m3bdb13qr11t91rjrfr.png-5.6kB
image_1c0899je519m3bdb13qr11t91rjrfr.png-5.6kB
image_1c089aa7l17p6d409n17gkp7dg8.png-4.6kB
image_1c089aa7l17p6d409n17gkp7dg8.png-4.6kB

debug的箭头的含义: step into:单步执行,遇到子函数就进入并且继续单步执行(简而言之,进入子函数); step over:在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完再停止,也就是把子函数整个作为一步。有一点,经过我们简单的调试,在不存在子函数的情况下是和step into效果一样的(简而言之,越过子函数,但子函数会执行)。 step out:当单步执行到子函数内时,用step out就可以执行完子函数余下部分,并返回到上一层函数。

下面以 pycharm IDE 为示例作简要说明:

image_1c089avcok9o1509a1mcverqkgl.png-434.4kB
image_1c089avcok9o1509a1mcverqkgl.png-434.4kB

点击 pycharm 右上部爬虫按钮进入调试状态,程序在第14行断点处停止,按 F5(step into)进入 add() 函数,按 F7(step out) 执行完add()函数余下部分,返回入口函数 debug_test() 继续执行,按 F6(step over) 直接将 divide() 函数执行完。最后单步执行至入口函数结束。

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-08-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.if
  • 2.while
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com