欢迎加入QQ讨论群258996829
麦子学院 头像
苹果6袋
6
麦子学院

Python 中for...esle和while...else语法

发布时间:2017-04-21 21:26  回复:0  查看:2041   最后回复:2017-04-21 21:26  

Pythonfor...elsewhile...else语法,这是Python开发中最不常用,最为误解的语法特性之一。

  Python中的forwhile循环都有一个可选的else分支(类似if语句和try语句那样),在循环迭代正常完成之后执行。换句话说, 如果我们不是除正常以外的其他方式退出循环,那么else分支将被执行 。也就是在循环体内没有break语句、没有return语句,或者没有异常出现。

  1.break情况

  下面我们来尝试在循环中执行break退出

  lucky_number.py

  lucky_num = 19

  #首先定义一个幸运数字,这样条理比较清晰

  #action = True

  guess_count = 0

  while guess_count < 3:

  #限制用户输入

  input_num = int(input("Input the guess num: "))

  #if lucky_num == input_num:

  #print("Bingo!")

  #action = False

  #break强制终端循环语句,避免陷入死循环之中

  if input_num > lucky_num:

  print("The real number is smalller!")

  elif input_num < lucky_num:

  print("The real number is bigger...")

  else:

  print("Bjngo!...")

  break

  guess_count += 1

  else:

  print("Too many retrys!")

  首先我们执行三次没有测对的情况如下:

  Input the guess num: 1

  The real number is bigger...

  Input the guess num: 2

  The real number is bigger...

  Input the guess num: 100

  The real number is smalller!

  Too many retrys!

  从结果上可以看出,最后执行了else分支语句(Too many retrys!),提示用户输入过多的次数,正常情况下是执行else语句的。下面我们来看

  一下非正常退出情况下:

  用户猜测正确:

  Input the guess num: 1

  The real number is bigger...

  Input the guess num: 19

  Bjngo!...

  从上面结果我们可以看出,当用户猜对数字后,break了一下,推出了while...else语句,else语句没有正常执行。

  2.return情况

  #首先定义一个幸运数字,这样条理比较清晰

  #action = True

  #限制用户输入,如果三次没有猜对则退出循环

  def count():

  lucky_num = 19

  guess_count = 0

  while guess_count < 3:

  input_num = int(input("Input the guess num: "))

  #if lucky_num == input_num:

  #print("Bingo!")

  #action = False

  #break强制终端循环语句,避免陷入死循环之中

  if input_num > lucky_num:

  print("The real number is smalller!")

  elif input_num < lucky_num:

  print("The real number is bigger...")

  else:

  print("Bjngo!...")

  return guess_count

  guess_count += 1

  else:

  print("Too many retrys!")

  numbers = count()

  print(numbers)

  由于rerturn语句只能在函数和类中使用,因此我定义了一个函数,看我们输入正确的时候是否能够终端else语句。

     (1).调用这个函数,输入三次不正确

  Input the guess num: 1

  The real number is bigger...

  Input the guess num: 1

  The real number is bigger...

  Input the guess num: 1

  The real number is bigger...

  Too many retrys!

  None

  从结果中可以看出来,当我们输入三次的时候,else语句正常运行,因为我们输入的都不正常,不影响else语句

  (2).用户猜测正确的情况:

  Input the guess num: 1

  The real number is bigger...

  Input the guess num: 19

  Bjngo!...

  1

  从结果可以看出,用户第一次猜测错误,第二猜对了,然后把guess_count返回给了变量numbers,没有运行else语句。

     结论:如果我们想在用户输入正确的时候退出循环,输入次数太多的时候提示用户,那么可以使用while...else...break语句,在用户

  输入次数超过限制没有答对的时候提醒用户;答对了的时候退出循环,不打印提醒,那么可以在用户输入正确的时候使用break进行中断。

    牢记:Python中的forwhile循环都有一个可选的else分支(类似if语句和try语句那样),在循环迭代正常完成之后执行。换句话说,如果我们

  不是除正常以外的其他方式退出循环,那么else分支将被执行。也就是在循环体内没有break语句、没有return语句,或者没有异常出现。

 

 

来源:博客园

您还未登录,请先登录

热门帖子

最新帖子