zoukankan      html  css  js  c++  java
  • python学习笔记(4)

    ......................................................................................................................................................................................

    程序的控制结构

    ......................................................................................................................................................................................

    程序的分支结构

    根据判断条件结果而选择不同向前路径的运行方式

    单分支结构

    if <条件> :
    <语句块>
    例:if True:
    print("条件正确")

    二分支结构

    if <条件> :
    <语句块1>
    else :
    <语句块2>
    例:if True:
    print("语句块1")
    else :
    print("语句块2")
    紧凑形式:适用于简单表达式的二分支结构
    <表达式1> if <条件> else <表达式2>
    例:guess = eval(input())
    print("猜{}了".format("对" if guess==99 else "错"))

    多分支结构

    if <条件1> :
    <语句块1>
    elif <条件2> :
    <语句块2>
    ……
    else :
    <语句块N>
    例:

    score = eval(input())
    if score >= 60:
    grade = "D"
    elif score >= 70:    -注意多条件之间的包含关系
    grade = "C"
    elif score >= 80:   -注意变量取值范围的覆盖
    grade = "B"
    elif score >= 90:
    grade = "A"
    print("输入成绩属于级别{}".format(grade))
    

    条件判断及组合

    条件判断

    操作符 数学符合 描述
    < < 小于
    <= 小于等于
    >= 大于等于
    > > 大于
    == = 等于
    != 不等于

    条件组合
    用于条件组合的三个保留字

    操作符及使用 描述
    x and y 两个条件x和y的逻辑与
    x or y 两个条件x和y的逻辑或
    not x 条件x的逻辑非

    例:

    guess = eval(input())
    if guess > 99 or guess < 99:
    print("猜错了")
    else :
    print("猜对了")
    

    程序的异常处理

    异常处理的基本使用
    try :
    <语句块1>
    except :
    <语句块2>
    例:

    try :
    num = eval(input("请输入一个整数: "))
    print(num^2)
    except :
    print("输入不是整数")
    

    或者

    try :
    num = eval(input("请输入一个整数: "))
    print(num^2)
    except **NameError**:       -标注异常类型后,仅响应此类异常,异常类型名字等同于变量名
    print("输入不是整数")
    

    异常处理的高级使用
    try :
    <语句块1>
    except :
    <语句块2>
    else :
    <语句块3> -else对应语句块3在不发生异常时执行
    finally :
    <语句块4> -finally对应语句块4一定执行

    实例5: 身体质量指数BMI

    height, weight = eval(input("请输入身高(米)和体重(公斤)[逗号隔开]: "))
    bmi = weight / pow(height, 2)
    print("BMI 数值为:{:.2f}".format(bmi))
    who, nat = "", ""
    if bmi < 18.5:
    who, nat = "偏瘦", "偏瘦"
    elif 18.5 <= bmi < 24:
    who, nat = "正常", "正常"
    elif 24 <= bmi < 25:
    who, nat = "正常", "偏胖"
    elif 25 <= bmi < 28:
    who, nat = "偏胖", "偏胖"
    elif 28 <= bmi < 30:
    who, nat = "偏胖", "肥胖"
    else:
    who, nat = "肥胖", "肥胖"
    print("BMI 指标为:国际'{0}', 国内'{1}'".format(who, nat))
    

    程序的循环结构

    遍历循环

    遍历某个结构形成的循环运行方式
    for <循环变量> in <遍历结构> :   - 从遍历结构中逐一提取元素,放在循环变量中
    <语句块>
    遍历循环的应用

    • 计数循环(N次)
      for i in range(N) :    - 遍历由range()函数产生的数字序列,产生循环
      <语句块>
      例:
    >>> for i in range(5):
    print(i)
    0
    1
    2
    3
    4
    
    • 计数循环(特定次)
      for i in range(M,N,K) :
      <语句块>
      例:
    >>> for i in range(1,6,2):
    print("Hello:",i)
    Hello: 1
    Hello: 3
    Hello: 5
    
    • 字符串遍历循环
      for c in s :   - s是字符串,遍历字符串每个字符,产生循环
      <语句块>
      例:
    >>> for c in "Python123":
    print(c, end=",")
    P,y,t,h,o,n,1,2,3,
    
    • 列表遍历循环
      for item in ls :   - ls是一个列表,遍历其每个元素,产生循环
      <语句块>
      例:
    >>> for item in [123, "PY", 456] :
    print(item, end=",")
    123,PY,456,
    
    • 文件遍历循环
      for line in fi :   - fi是一个文件标识符,遍历其每行,产生循环
      <语句块>
      例:
    >>> for line in fi :
    print(line)
    优美胜于丑陋
    明了胜于隐晦
    简洁胜于复杂
    

    无限循环

    由条件控制的循环运行方式
    while <条件> :   - 反复执行语句块,直到条件不满足时结束
    <语句块>

    无限循环的应用
    无限循环的条件

    >>> a = 3
    >>> while a > 0 :
    a = a - 1
    print(a)
    2
    1
    0
    

    循环控制保留字(break 和 continue)

    • break跳出并结束当前整个循环,执行循环后的语句
    • continue结束当次循环,继续执行后续次数循环
    • break和continue可以与for和while循环搭配使用
      例:
    >>> for c in "PYTHON" :
    if c == "T" :
    continue
    print(c, end=" ")
    PYHON
    >>> for c in "PYTHON" :
    if c == "T" :
    break
    print(c, end=" ")
    PY
    

    注:break仅跳出当前最内层循环

    循环的高级用法

    循环的扩展
    循环与else
    for <变量> in <遍历结构> :    -当循环没有被break语句退出时,执行else语句块
    <语句块1>    -else语句块作为"正常"完成循环的奖励
    else :
    <语句块2>   - 这里else的用法与异常处理中else用法相似

    while <条件> :
    <语句块1>
    else :
    <语句块2>
    例:

    >>> for c in "PYTHON" :
    if c == "T" :
    continue
    print(c, end="")
    else:
    print("正常退出")
    PYHON正常退出
    
    >>> for c in "PYTHON" :
    if c == "T" :
    break
    print(c, end="")
    else:
    print("正常退出")
    PY
    

    模块3: random库的使用

    random库是使用随机数的Python标准库

    • 伪随机数: 采用梅森旋转算法生成的(伪)随机序列中元素
    • random库主要用于生成随机数
    • 使用random库: import random
      random库包括两类函数,常用共8个
    • 基本随机数函数: seed(), random()
    • 扩展随机数函数: randint(), getrandbits(), uniform(), randrange(), choice(), shuffle()

    基本随机数函数

    函数 描述
    seed(a=None) 初始化给定的随机数种子,默认为当前系统时间 >>>random.seed(10) #产生种子10对应的序列
    random() 生成一个[0.0, 1.0)之间的随机小数>>>random.random() 0.5714025946899135

    例:

    >>> import random
    >>> random.seed(10)
    >>> random.random()
    0.5714025946899135
    

    扩展随机数函数

    函数 描述
    randint(a, b) 生成一个[a, b]之间的整数 >>>random.randint(10, 100) 64
    randrange(m, n[, k]) 生成一个[m, n)之间以k为步长的随机整数 >>>random.randrange(10, 100, 10) 80
    getrandbits(k) 生成一个k比特长的随机整数 >>>random.getrandbits(16) 37885
    uniform(a, b) 生成一个[a, b]之间的随机小数 >>>random.uniform(10, 100) 13.096321648808136
    choice(seq) 从序列seq中随机选择一个元素 >>>random.choice([1,2,3,4,5,6,7,8,9]) 8
    shuffle(seq) 将序列seq中元素随机排列,返回打乱后的序列 >>>s=[1,2,3,4,5];random.shuffle(s);print(s) [3, 5, 1, 2, 4]

    实例6: 圆周率的计算

    公式法:

    #CalPiV1.py
    pi = 0
    N = 100
    for k in range(N) :
    pi += 1/pow(16,k)*( 
    4/(8*k+1) – 2/(8*k+4) - 
    1/(8*k+5) – 1/(8*k+6))
    print("圆周率值是: {}".format(pi))
    

    蒙特卡罗方法:

    #CalPiV2.py
    from random import random
    from time import perf_counter
    DARTS = 1000*1000
    hits = 0.0
    start = perf_counter()
    for i in range(1, DARTS+1):
    x, y = random(), random()
    dist = pow(x ** 2 + y ** 2, 0.5)
    if dist <= 1.0:
    hits = hits + 1
    pi = 4 * (hits/DARTS)
    print("圆周率值是: {}".format(pi))
    print("运行时间是: {:.5f}s".format(perf_counter()-start))
    
  • 相关阅读:
    【宋红康程序思想学习日记5】数组排序之冒泡法
    求割点 poj 1523
    网络流 poj 3308 最小割
    网络流最小割 POJ 3469
    网络流 POJ2112
    网络流 HDU 3605
    网络流HDU 2883
    网络流 最大流HDU 3549
    微信公众平台开发者中心服务器配置Token验证失败问题
    排列熵算法简介及c#实现
  • 原文地址:https://www.cnblogs.com/xusze/p/10375088.html
Copyright © 2011-2022 走看看