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

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

也就是在循环体内没有break语句、没有return语句,或者没有异常出现。

 

(1)break情况

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

#首先定义一个幸运数字,这样条例比较清晰
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("Bingo!...")
       
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

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

 

#首先定义一个幸运数字,这样条例比较清晰
#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("Bingo!...")
           
return guess_count
        guess_count +=
1
   
else:
       
print("Too many retrys!")

numbers = count()

print(numbers)

 

调用这个函数,输入三次不正确

    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语句

用户猜测正确的情况:

    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语句,或者没有异常出现。

你可能感兴趣的:(python)