您的位置:首页 > 编程语言 > Python开发

python基础—03三大流程控制:顺序,分支,循环

2020-01-31 18:56 549 查看

文章目录

  • 还是一些案例,分支
  • 两个案例,循环
  • 三大流程控制

    顺序、分支、循环

    一、顺序

    按步骤一步一步执行

    案例:
    用户按圆的半径计算圆的周长和面积circle.py
    输入圆的半径:5.3
    输出:半径为5.3cm的圆的周长为33.3,面积为88.2
    代码:

    import math             #导入数学模块
    r = float(input("输入圆的半径"))
    c = 2 * math.pi * r     #math.pi表示数学中的Π
    s = math.pi * pow(r,2)  #pow()函数求次方

    二、分支(有条件)

    1、if(表达式)

    age = int(input("年龄是:"))
    if(age < 18):   #条件,满足表达式,执行下面语句
    print("未成年")

    注意 : 和 代码块缩进

    2、if-else(有两种情况)

    name = input("name:")
    password = input("password:")
    if(name == 'westos' and password = '123'):
    print("用户%s登录成功"%(name))  #满足表达式,执行这句
    else:
    print("用户%s登录失败"%(name))	#不满足表达式,执行这句

    3、if -elif…-else(有多种情况)
    案例:
    提示学生输入平均成绩,判断学生成绩等级 score.py
    输入平均成绩:100
    输出:学生的成绩等级为A

    score >= 85 A等级
    70 <= score < 85 B等级
    60 <= score < 70 C等级
    score < 60 D等级

    代码:

    score = float(input("输入平均成绩:"))
    if(score >= 85):
    print("学生的成绩等级为A")
    elif (70 <= score < 85):
    print("学生的成绩等级为B")
    elif (60 <= score < 70):
    print("学生的成绩等级为C")
    elif(score < 60):
    print("学生的成绩等级为D")
    else:
    print("成绩无效")

    4、三元运算符
    (语句1) if(表达式) else(语句2)
    满足表达式执行语句1,不满足表达式执行语句2

    a = 10
    b = 5
    print(max = a if(a > b) else min = b) #如果a>b,输出max=a,否则,输出min=b

    5、嵌套
    在一个分支中又分出一个分支
    在一个 if - else 中,又包含一个 if - else
    案例:
    用户登录系统
    输入用户名,密码正确,登录成功
    输入用户名错误,提示用户不存在
    输入用户名正确,密码错误,提示密码错误

    import getpass
    print("**********用户登录***********")
    name = input("输入用户名:")
    password = getpass.getpass("输入密码:")
    if (name == 'westos'):
    if(password == '123'):
    print("%s登录成功"%(name))
    else:
    print("%s登录失败,密码输入错误"%(name))
    else:
    print("该用户不存在")

    还是一些案例,分支

    案例一:闰年检测计算器

    需求:
    随机生成一个1900~2000之间的年份,判断给定的年份是否是闰年。
    规则:
    一个闰年就是能被4整除但是不能被100整除 或者能被400整除。
    生成随机数:
    需要用到python中的 random 模块
    常用函数:
    random.random() :随机生成一个[0,1)的浮点数
    random.uniform(a,b) :随机生成[a,b]之间的浮点数
    random.randint(a,b) :随机生成[a,b]之间的整数
    random.choice(‘saveefd’) :随机从序列中选取一个元素
    random.shuffle([1,2,3,4,5,6]) :将列表里的元素顺便随机打乱
    代码(用if - else):

    import random   #导入模块
    year = random.randint(1900,2000) #随机生成一个1900~2000的整数
    if((year % 4 == 0 and year % 100 != 0) or (year % 400 == 0) ):
    print("%d年份是闰年"%(year))
    else:
    print("%d年份不是闰年"%(year))

    代码(用三元运算符):

    import random
    year = random.randint(1900,2000)
    is_leap = (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)  #用一个变量把语句存起来
    print("%d年份是闰年"%(year) if(is_leap) else "%d年份不是闰年"%(year))

    案例二:偶数判断器

    需求:
    随机生成一个0~100之间的整数,判断是否为偶数.
    规则:
    偶数是能够被2整除的整数,0也是一个特殊的偶数
    代码:

    import random
    number = random.randint(0,100)
    if(number % 2 == 0):
    print("数值%d是偶数"%(number))
    else:
    print("数值%d不是偶数"%(number))
    import random
    number = random.randint(0,100)
    is_even = (number % 2 == 0)
    print(数值%d是偶数"%(number) if (is_even) else "数值%d不是偶数"%(number))

    案例三:解一元二次方程

    需求:求解一元二次方程,用户依次输入a,b,c对应的值
    规则:


    求平方根用需要用到python中的 math 模块
    math.sqrt() 函数来求平方根
    代码:

    import math               #导入模块
    a = float(input("输入a:"))
    b = float(input("输入b:"))
    c = float(input("输入c:"))
    delta = pow(b,2) - 4*a*c  #pow()函数,计算次方 b^2
    if(delta = 0):
    x1 = (-b + math.sqrt(delta)) / 2*a  #math.sqrt()函数求平方根
    print("方程有一个解:x1=%.1f"%(x1))
    elif(delta > 0):
    x1 = (-b + math.sqrt(delta)) / 2*a
    x2 = (-b - math.sqrt(delta)) / 2*a
    print("方程有两个解:x1=%.1f,x2=%.1f"%(x1,x2))
    else:
    print("方程无解")

    三、循环

    1、while
    (1)计数循环
    while (表达式):
    语句
    (语句缩进)

    满足表达式,一直循环执行语句,直到表达式为假
    要执行的语句都是缩进的

    count = 0
    while (count < 9):
    print("the index is:",count+1)
    count += 1

    (2)死循环

    while (True):   #条件一直为真,一直循环执行下面的语句,按键ctrl+d退出
    cmd = input("cmd>>>")

    用户一直输入命令,打印命令的执行结果

    import os #导入os模块,封装了操作系统常用的方法。如:创建/删除文件,执行shell命令
    while True:
    cmd = input("cmd>>")
    os.system(cmd)

    2、for(生成器时详细说)
    遍历序列成员,
    for 元素 in 集合:
    语句
    (语句要缩进)

    #序列类型
    for item in 'hello'	:
    print("字符显示:",item) #分别打印出字符 h,e,l,l,o
    #range()内置函数
    for item in range(10):
    print("变量显示:",item)

    range() 内置函数用法
    返回一个列表

    range(stop) 从0开始到stop-1结束 ]
    例:range(4) [0,1,2,3]
    range(start,end) 从start开始,到end-1结束
    例:range(1,6) [1,2,3,4,5]
    range(start,end,step) 从start开始,到end-1结束,步长是step
    例:range(0,10,2) [0,2,4,6,8]


    案例:
    需求:
    求1~100之间所有偶数的和
    代码:

    sum = 0
    for num in range(2,101,2):
    sum += num
    print("偶数和:",sum)

    需求:用户输入一个整形数,求该数的阶乘
    3!=3 * 2* 1
    代码:

    number = int(input("输入一个整形数:"))
    result = 1
    for index in range(1,number+1):
    result *= index
    print(result)
    number = int(input("输入一个整形数:"))
    index = 1
    result = 1
    while (index <= number):
    result *= index
    index += 1
    print(result)

    3、跳出循环的语句
    break
    用来终止循环语句,就算条件没到false或者序列没递归完,也要停止执行循环语句。

    for count in range(10):
    if count == 2:
    break  # 跳出循环,不再执行循环语句
    print(count) #输出0,1

    continue
    跳出当前循环的剩余语句,然后继续下一轮循环

    for count in range(10):
    if count == 2:
    continue # 跳出本次循环,不执行下面的语句,继续循环
    print(count)	#0,1,3,4,5,6,7,8,9

    两个案例,循环

    案例一:打印九九乘法表


    下三角:

    for i in range(1,10):    #i是外层循环,循环9次
    for j in range(1,i+1): #j是内层循环,每一层循环i次
    print("%d*%d=%d"%(j,i,i*j),end = ' ')
    print('\n')	 #循环完一个外层,就要换行一次

    上三角:

    for i in range(9,0,-1):
    for j in range(1,i+1):
    print("%d*%d=%d"%(j,i,i*j),end = ' ')
    print('\n')

    还记得当年拿c写九九乘法表,写了一大堆。。。。

    案例二、防黑客暴力破解的用户登录系统

    需求:
    根据输入用户名和密码,判断用户名和密码是否正确,为了防止暴力破解,登录仅有三次机会,如果超过三次,报错提示。
    代码:

    import getpass
    num = 0
    while (num < 3):
    print("用户进行第%d次登录"%(num))
    name = input("请输入用户名:")
    password = getpass.getpass("请输入密码:")
    
    if(name == 'westos' and password == '1234'):
    print("%s登录成功"%(name))
    break
    else:
    print("%s登录失败"%(name))
    num += 1
    else:
    print("尝试次数超过三次,请稍后再试")	# while-else的结合是python中特有的

    经过一天的学习,简直身心俱疲,OK,我们来搞一个好玩的

    太阳花绘制,惊不惊喜,意不意外

    Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。

    命令 说明
    turtle.pensize(width) 绘制图形时的宽度
    turtle.pencolor() 画笔颜色
    turtle.fillcolor(colorstring) 绘制图形的填充颜色
    turtle.color(color1,color2) 同时设置pencolor=color1,fillcolor=color2
    turtle.filling() 返回当前是否在填充状态
    turtle.begin_fill() 准备开始填充图片
    turtle.end_fill() 填充完成
    turtle.hideturtle() 隐藏箭头显示
    turtle.showturtle() 与hideturtle对应
    命令 说明
    turtle.forward(distance) 向当前画笔方向移动distance像素长
    turtle.backward(distance) 向当前画笔相反方向移动distance像素长度
    turtle.right(degree) 顺时针旋转degree°
    turtle.left(degree) 逆时针旋转degree°
    turtle.pendown() 移动时绘制图形,缺省时也为绘制
    turtle.goto(x,y) 将画笔移动到坐标为x,y的位置
    turtle.penup() 移动时不绘制图形,提起笔,用于另起一个地方绘制时用
    turtle.speed(speed) 画笔绘制的速度范围[0,10]整数
    turtle.circle() 画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆

    太阳花绘制:

    1. 设置画笔颜色和填充颜色, 并设置画笔移动速度
    2. turtle.begin_fill()准备开始填充图形
    3. 向当前画笔方向移动distance像素长为200
    4. 逆时针(向左)移动170°
    5. 循环3、4步50次
    6. turtle.end_fill()实现填充完成
    7. turtle.done()完成绘制
    import turtle
    #1. 设置画笔颜色和填充颜色, 并设置画笔移动速度
    turtle.color('green','red')
    turtle.speed(10)
    #2. turtle.begin_fill()准备开始填充图形
    turtle.begin_fill()
    #5.循环3、4步50次
    for num in range(50):
    #3. 向当前画笔方向移动distance像素长为200
    turtle.forward(200)
    #4. 逆时针(向左)移动170°
    turtle.left(170)
    #6.turtle.end_fill()实现填充完成
    turtle.end_fill()
    #7.turtle.done()完成绘制
    turtle.done()

    想画啥样画啥样

    • 点赞
    • 收藏
    • 分享
    • 文章举报
    小黑-- 发布了32 篇原创文章 · 获赞 1 · 访问量 868 私信 关注
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: 
    相关文章推荐