python流程控制

1、条件判断

计算机之所以能做很多自动化的任务,因为它可以自己做条件判断,在Python程序中,用if语句实现。

比如,输入用户年龄,根据年龄打印不同的内容
age = 20
if age >= 18:
    print("your age is ",age)
根据Python的缩进规则,如果 if 语句判断是 True,就把缩进的 print 语句执行了,否则,什么也不做。
也可以给 if 添加一个 else 语句,意思是,如果 if 判断是False,不要执行if的内容,去把else执行了:
age = 3
if age >= 18:
    print('your age is', age)
else:
    print('your age is', age)
注意不要少写了冒号 : 。
当然上面的判断是很粗略的,完全可以用elif做更细致的判断:
age = 3
if age >= 18:
    print('adult')
elif age >= 6:
    print('teenager')
else:
    print('kid')
elif 是else if 的缩写,完全可以有多个elif,所以if语句的完整形式就是:
if <条件判断1>:
    <执行1>
elif <条件判断2>:
    <执行2>
elif <条件判断3>:
    <执行3>
else:
    <执行4>
if 语句执行有个特点,它是从上往下判断,如果在某个判断上是 True,把该判断对应的语句执行后,就忽略掉剩下的 elif 和 else .
if判断条件还可以简写,比如写:
if x:
    print('True')
只要x是非零数值、非空字符串、非空list等,就判断为True,否则为False
再议 input
最后看一个有问题的条件判断。很多同学会用input()读取用户的输入,这样可以自己输入,程序运行得更有意思:
count = int(input("Plz input your math record:"))
if count >= 90:
    print('你的成绩是 A')
elif count >= 80:
    print('你的成绩是 B')
elif count >= 70:
    print('你的成绩是 C')
elif count >= 60:
    print('你的成绩是 D')
else:
    print('No pass !!!')

如果执行后报如下错误 TypeError: unorderable types: str() > int()  这是因为input()返回的数据类型是str,str不能直接和整数比较,必须先把str转换成整数int类型上例中已经完成转换

2、循环语句

Python的循环有两种,一种是for...in循环,依次把list或tuple中的每个元素迭代出来,看例子:
names = ['Michael', 'Bob', 'Tracy']
for name in names:
    print(name)

执行这段代码,会依次打印names的每一个元素:
Michael
Bob
Tracy

所以for x in ...循环就是把每个元素代入变量x,然后执行缩进块的语句
比如我们想计算1-10的整数之和,可以用一个sum变量做累加:
sum = 0
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
    sum = sum + x
print(sum)
如果要计算1-100的整数之和,从1写到100有点困难,幸好Python提供一个range()函数,可以生成一个整数序列,再通过list()函数可以转换为list。比如range(5)生成的序列是从0开始小于5的整数:
>>> list(range(5))
[0, 1, 2, 3, 4]
range(101)就可以生成0-100的整数序列,计算如下:
sum = 0
for x in range(101):
    sum = sum + x
print(sum)
请自行运行上述代码,看看结果是不是当年高斯同学心算出的5050。
使用for循环来访问list :
i = 0
for m in range(1,100,2):                                   #代表从1到100,间隔2(不包含100)
    print(format(i ,'2d'),m)
    #print(i,m)
    i = i + 1
else:
    print('out',m)
第二种循环是while循环,只要条件满足,就不断循环,条件不满足时退出循环。比如我们要计算100以内所有奇数之和,可以用while循环实现
sum = 0
n = 99
while n > 0:
    print('sum num:',sum)
    sum = sum + n
    print('n num:',n)
    n = n - 2
print('sum total:',sum)
在循环内部变量n不断自减,直到变为-1时,不再满足while条件,循环退出。
break
在循环中,break语句可以提前退出循环。例如,本来要循环打印1~100的数字:
n = 1
while n <= 100:
    print(n)
    n = n + 1
print('END')
上面的代码可以打印出1~100。
如果要提前结束循环,可以用break语句:
n = 1
while n <= 100:
    if n > 10:      # 当n = 11时,条件满足,执行break语句
        break       # break语句会结束当前循环
    print(n)
    n = n + 1
print('END')
执行上面的代码可以看到,打印出1~10后,紧接着打印END,程序结束。
可见break的作用是提前结束循环。
n = 1
while n < 10:
    print(n)
    n = n + 2
continue
在循环过程中,也可以通过continue语句,跳过当前的这次循环,直接开始下一次循环。
n = 0
while n < 10:
    n = n + 1
    if n % 2 == 0:     # 如果n是偶数,执行continue语句
        continue     # continue语句会直接继续下一轮循环,if判断语句中后续的print()语句不会执行
    print(n)
执行上面的代码可以看到,打印的不再是1~10,而是1,3,5,7,9。
可见continue的作用是提前结束本轮循环,并直接开始下一轮循环。
小结
循环是让计算机做重复任务的有效的方法。
break语句可以在循环过程中直接退出循环,而continue语句可以提前结束本轮循环,并直接开始下一轮循环。这两个语句通常都必须配合if语句使用。
要特别注意,不要滥用break和continue语句。break和continue会造成代码执行逻辑分叉过多,容易出错。大多数循环并不需要用到break和continue语句,上面的两个例子,都可以通过改写循环条件或者修改循环逻辑,去掉break和continue语句。
有些时候,如果代码写得有问题,会让程序陷入“死循环”,也就是永远循环下去。这时可以用Ctrl+C退出程序,或者强制结束Python进程。

编写登陆接口:

1.输入用户名密码

2.认证成功后显示欢迎信息

3.输错三次后锁定

#!/usr/bin/env python
#coding:utf-8

count = 0
while True:
    user = input("请输入用户名:").strip()
    if len(user) == 0:
        print("\033[31;1m用户名为空,请重新输入\033[0m")
        continue
    elif user != "saneri":
        print("\033[32;1m用户名不存在,请重新输入\033[0m")
        continue

    while count < 3:
        if user == "saneri":
            pwd = input("请输入密码:").strip()
            if pwd == 'abcd123':
                print("欢迎 %s 登陆" % user)
            else:
                print("\033[34;1m请重新输入密码!!!\033[0m")
                count += 1
    else:
        print("\033[33;1m你已经超过三次输入,账户已锁定!!!\033[0m")
        break

实例2,判断年龄,猜错三次退出。

#!/usr/bin/env python
#coding:utf-8

age = 30
count = 0
while count <3:
    guess_age = int(input("guess_age:"))
    if guess_age == age:
        print("yes, you got it.")
        break
    elif guess_age > age:
        print("think smaller...")

    else:
        print("think bigger!")
    count += 1
else:
    print("you have tried too many times...")

 3、求输入数字平均值.

#!/usr/bin/env python
#coding:utf-8

'''
求输入数字平均值程序,退出是按'q'键即可,平均值 = 数字总和 / 次数 total 为输入数字总和,Frequency为输入数字的次数, ''' total = 0 Frequency = 0 user_input = input(f"请输入数字(完成所有数字输入后,请输入q终止程序!):") while user_input != "q": num = float(user_input) total += num # 等价于 total = total + num Frequency += 1 # 等价于 Frequency = Frequency + 1 user_input = input(f"请输入数字(完成所有数字输入后,请输入q终止程序.)") if Frequency == 0: result = 0 else: result = total / Frequency print("你输入的数字平均值为" + str(result))

 

posted @ 2018-11-26 22:55  梦徒  阅读(219)  评论(0)    收藏  举报