Python03 if、while、for

  • 2020 年 1 月 11 日
  • 笔记

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

1.if

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是字符串,执行代码时会报错。

满足else的执行结果

满足elif的执行结果

满足if的执行结果

menu = 'A','C','D'  for i in menu:      if i == 'A' or 'C':          print ('aaa')      else:          print ('bbb')

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

menu = 'A','C','D'  for i in menu:      if i == 'A' or 'any':          print ('aaa')      else:          print ('bbb')

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

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

menu = 'A','C','D'  for i in menu:      if i == ('A' or 'any'):          print ('aaa')      else:          print ('bbb')

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

2.while

2.1 无线循环

count = 0  while True:      print ('count',count)      count += 1

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

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

2.2 break

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循环

2.3 设置常事限制次数

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条件修改

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语句,这样就减少并优化了代码,执行结果是一样的。

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

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代码。

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

2.6 For循环

  • 循环数字范围
for i in range(10):      print ('loop:',i)

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

  • for替代while
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代码了。

  • 步长
for i in range(0,10,2):      print ('loop:',i)

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

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

  • pycharm的断点测试

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

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

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

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

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

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

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

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

  • continue
for i in range(0,10):      if i <3:          print ('loop:',i)      else:          continue      print ('test')

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

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

  • 嵌套循环
for i in range(0,10):      if i <3:          print ('外循环---',i)      for m in range(10):          print ('--',m)

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

for i in range(0,10):      if i <3:          print ('外循环---',i)      for m in range(10):          print ('--',m)          if m >= 3:              break

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

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

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

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