python第二课--分支结构与循环结构

if语句---分支结构

在Python中,要构造分支结构可以使用ifelifelse关键字。所谓关键字就是有特殊含义的单词,像ifelse就是专门用于构造分支结构的关键字,很显然你不能够使用它作为变量名(事实上,用作其他的标识符也是不可以)。下面的例子中演示了如何构造一个分支结构。

#用户身份验证
username = input("username:")
password = input("password:")

if username == "admin" and password == "123":
    print("Login")
else:
    print("Error!") 

Python中没有用花括号来构造代码块而是使用了缩进的方式来设置代码的层次结构,如果if条件成立的情况下需要执行多条语句,只要保持多条语句具有相同的缩进就可以了,换句话说连续的代码如果又保持了相同的缩进那么它们属于同一个代码块,相当于是一个执行的整体。

当然如果要构造出更多的分支,可以使用if…elif…else…结构,例如下面的分段函数求值。

x = float(input("请输入变量:"))
fx = 0.0
if ( x > 1):
    fx = 3 * x - 5
elif ( x >= -1) and ( x <= 1):
    fx = x + 2
elif ( x < -1 ):
    fx = 5 * x + 3
print(fx)

 当然根据实际开发的需要,分支结构是可以嵌套的,例如判断是否通关以后还要根据你获得的宝物或者道具的数量对你的表现给出等级(比如点亮两颗或三颗星星),那么我们就需要在if的内部构造出一个新的分支结构,同理elifelse中也可以再构造新的分支,我们称之为嵌套的分支结构,也就是说上面的代码也可以写成下面的样子。

x = float(input('x = '))
if x > 1:
    y = 3 * x - 5
else:
    if x >= -1:
        y = x + 2
    else:
        y = 5 * x + 3
print('f(%.2f) = %.2f' % (x, y))

if语句练习

练习1

必须含有大写,数字,小写的注册
username = input("username:")
password = input("password:")
A = 'QWERTYUIOPASDFGHJKLZXCVBNM'
B = 'zxcvbnmasdfghjklqwertyuiop'
C = '1234567890'
count1,count2,count3 = False,False,False
for i in password:
    if i in A:
        count1 = True
    if i in B:
        count2 = True
    if i in C:
        count3 = True
if count1 and count2 and count3:
    print("ok")
else:
    print("error")

练习2计算器

num1,num2 = map(input("请输入两个数字,例如[1,2]:").split(","))
char_ = input("选择运算,[+,-,*,/]:")
if char_ in "+-*/":
    if char_ == "+":
        print("%.2f + %.2f = %.2f"%(num1,num2,num1+num2))
    if char_ == "-":
        print("%.2f + %.2f = %.2f"%(num1,num2,num1-num2))
    if char_ == "*":
        print("%.2f + %.2f = %.2f"%(num1,num2,num1*num2))
    else:
        print("%.2f + %.2f = %.2f"%(num1,num2,num1/num2))
else:
    raise KeyError ('Only choose [+,-,*,/]')

for语句----循环结构

如果明确的知道循环执行的次数或者是要对一个容器进行迭代(后面会讲到),那么我们推荐使用for-in循环,例如下面代码中计算1~100求和

sum = 0
for x in range(101):
    sum += x
print(sum)

需要说明的是上面代码中的range类型,range可以用来产生一个不变的数值序列,而且这个序列通常都是用在循环中的,例如:

  • range(101)可以产生一个0到100的整数序列。

  • range(1, 100)可以产生一个1到99的整数序列。

  • range(1, 100, 2)可以产生一个1到99的奇数序列,其中的2是步长,即数值序列的增量。

知道了这一点,我们可以用下面的代码来实现1~100之间的偶数求和。

sum = 0
for x in range(2, 101, 2):
    sum += x
print(sum)

练习:随机生成验证码

import random
count = 0
for j in range(3):
    res=''
    ma=''
    for i in range(6):
        n=random.randint(1,2)
        if (n==1):
            res =  chr(random.randrange(ord("a"),ord("z")))
            ma += res
        else:
             res = str(random.randrange(0,9))
             ma += res
    print(ma)
    if(count >0):
        print("请重试")
    password = input("请输入验证码:")
    if (ma == password):
        print("ok")
        break
    else:
        count += 1
        continue
if(count >= 3):
    raise KeyError("error,获取次数过多")

while语句---循环结构

如果要构造不知道具体循环次数的循环结构,我们推荐使用while循环,while循环通过一个能够产生或转换出bool值的表达式来控制循环,表达式的值为True循环继续,表达式的值为False循环结束。下面我们通过一个“猜数字”的小游戏(计算机出一个1~100之间的随机数,人输入自己猜的数字,计算机给出对应的提示信息,直到人猜出计算机出的数字)来看看如何使用while循环。

import random

answer = random.randint(1, 100)
counter = 0
while True:
    counter += 1
    number = int(input('请输入: '))
    if number < answer:
        print('大一点')
    elif number > answer:
        print('小一点')
    else:
        print('恭喜你猜对了!')
        break
print('你总共猜了%d次' % counter)
if counter > 7:
    print('你的智商余额明显不足')

说明:上面的代码中使用了break关键字来提前终止循环,需要注意的是break只能终止它所在的那个循环,这一点在使用嵌套的循环结构(下面会讲到)需要引起注意。除了break之外,还有另一个关键字是continue,它可以用来放弃本次循环后续的代码直接让循环进入下一轮。

 

 

 

 

 

 

猜你喜欢

转载自www.cnblogs.com/gxnihao/p/11275732.html