zoukankan      html  css  js  c++  java
  • Python流程控制和运算符

    运算符

    算术运算符

    • 算数运算符是运算符的一种
    • 是完成基本的算术运算使用的符号,用来处理四则运算
    运算符 描述 示例(a=10,b=20)
    + 加 - 两个对象相加 a + b 输出结果 30
    - 减 - 得到负数或是一个数减去另一个数 a - b 输出结果 -10
    * 乘 - 两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 200
    / 除 - x除以y b / a 输出结果 2
    % 取模 - 返回除法的余数 b % a 输出结果 0
    ** 幂 - 返回x的y次幂 a**b 为10的5次方, 输出结果 100000
    // 取整除 - 返回商的整数部分 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0

    比较运算符

    运算符 描述
    == 等于 - 比较对象是否相等
    != 不等于 - 比较两个对象是否不相等
    > 大于 - 返回x是否大于y
    < 小于 - 返回x是否小于y
    >= 大于等于 - 返回x是否大于等于y
    <= 小于等于 - 返回x是否小于等于y

    赋值运算符

    运算符 描述 示例
    = 简单的赋值运算符 c = a + b 将 a + b 的运算结果赋值为 c
    += 加法赋值运算符 c += a 等效于 c = c + a
    -= 减法赋值运算符 c -= a 等效于 c = c - a
    *= 乘法赋值运算符 c *= a 等效于 c = c * a
    /= 除法赋值运算符 c /= a 等效于 c = c / a
    %= 取模赋值运算符 c %= a 等效于 c = c % a
    **= 幂赋值运算符 c = a 等效于 c = c a
    //= 取整除赋值运算符 c //= a 等效于 c = c // a

    位运算符

    运算分 描述 示例(a=60,b=13)
    & 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 (a & b) 输出结果 12 ,二进制解释: 0000 1100
    | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1 (a | b) 输出结果 61 ,二进制解释: 0011 1101
    ^ 按位异或运算符:当两对应的二进位相异时,结果为1 (a ^ b) 输出结果 49 ,二进制解释: 0011 0001
    ~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 (~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式
    << 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。左移一位相当于乘以2 a << 2 输出结果 240 ,二进制解释: 1111 0000
    >> 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数。右移一位相当于除以2 a >> 2 输出结果 15 ,二进制解释: 0000 1111

    逻辑运算符

    运算符 逻辑表达式 描述 示例(a=10,b=20)
    and x and y 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值 (a and b) 返回 20
    or x or y 布尔"或" - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值 (a or b) 返回 10
    not not x 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True not(a and b) 返回 False

    如果是逻辑中的数值运算时,需要注意:

    • x or y时,如果x为非0,则值为x,否则为y
    • x and y时,运算结果与or相反

    成员运算符

    运算符 描述 示例
    in 如果在指定的序列中找到值返回 True,否则返回 False x 在 y 序列中 , 如果 x 在 y 序列中返回 True
    not in 如果在指定的序列中没有找到值返回 True,否则返回 False x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True

    身份运算符

    运算符 描述 示例
    is is是判断两个标识符是不是引用自一个对象 x is y, 如果 id(x) 等于 id(y) , is 返回结果 True
    is not is not是判断两个标识符是不是引用自不同对象 x is not y, 如果 id(x) 不等于 id(y). is not 返回结果 False

    身份运算符用于比较两个对象的存储单元

    is 和 == 的区别

    • == 判断两边的值是否相等
    • is 判断内存地址是否相等

    运算符的优先级

    运算符 描述
    ** 指数 (最高优先级)
    ~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
    * / % // 乘,除,取模和取整除
    + - 加法减法
    >> << 右移,左移运算符
    & 位 'AND'
    ^ | 位运算符
    <= < > >= 比较运算符
    <> == != 等于运算符
    = %= /= //= -= += *= **= 赋值运算符
    is is not 身份运算符
    in not in 成员运算符
    not or and 逻辑运算符

    流程控制

    条件语句

    条件语句在开发中主要用于进行 逻辑判断

    if语句的基本语法:

    # 格式1
    if 条件:
        代码块
    
    # 格式2
    if 条件:
        代码块
    else:
        代码块
    
    # 格式3
    if 条件:
        代码块
    elif 条件:
        代码块
    ...
    else:
        代码块
    
    if语句基本语法
    

    运行流程图:

    if-案例1:

    #!/usr/bin/env python
    # -*-coding:utf-8-*-
    
    """
    @author:fyh
    @time:2019/5/31
    """
    
    """
    需求
    
        1.输入用户年龄
        2.判断是否满 18 岁 (>=)
        3.如果满 18 岁,允许进网吧嗨皮
        4.如果未满 18 岁,提示回家写作业
    """
    
    # 1. 输入用户年龄
    age = int(input("请输入年龄:"))
    
    # 2. 判断是否满 18 岁
    if age >= 18:
        print("可以进网吧嗨皮……")
    else:
        print("你还没长大,应该回家写作业!")
    

    if嵌套-案例2:

    #!/usr/bin/env python
    # -*-coding:utf-8-*-
    
    """
    @author:fyh
    @time:2019/5/31
    """
    
    """
    需求
    
        1.定义布尔型变量 has_ticket 表示是否有车票
        2.定义整型变量 knife_length 表示刀的长度,单位:厘米
        3.首先检查是否有车票,如果有,才允许进行 安检
        4.安检时,需要检查刀的长度,判断是否超过 20 厘米
            4.1如果超过 20 厘米,提示刀的长度,不允许上车
            4.2如果不超过 20 厘米,安检通过
        5.如果没有车票,不允许进门
    """
    # 定义布尔型变量 has_ticket 表示是否有车票
    has_ticket = True
    
    # 定义整数型变量 knife_length 表示刀的长度,单位:厘米
    knife_length = 20
    
    # 首先检查是否有车票,如果有,才允许进行 安检
    if has_ticket:
        print("有车票,可以开始安检...")
    
        # 安检时,需要检查刀的长度,判断是否超过 20 厘米
        # 如果超过 20 厘米,提示刀的长度,不允许上车
        if knife_length >= 20:
            print("不允许携带 %d 厘米长的刀上车" % knife_length)
        # 如果不超过 20 厘米,安检通过
        else:
            print("安检通过,祝您旅途愉快……")
    
    # 如果没有车票,不允许进门
    else:
        print("大哥,您要先买票啊")
    

    循环语句

    循环的作用:

    • 循环的作用就是让 指定的代码 重复的执行

    while循环

    基本语法:

    # 格式1
    while 条件:
        循环体
    
    
    # 格式2
    while 条件:
        代码块
    else:
        当条件为假的时候执行
    

    while-else案例1:

    count = 0
    while count < 5:
        print(count, " is  less than 5")
        count = count + 1
    else:
        print(count, " is not less than 5")
    

    while-else案例2:

    #!/usr/bin/env python3
    # -*-coding:utf-8-*-
    
    """
    @author:fyh
    @time:2019/9/10
    """
    
    print_num = int(input("which loop do you want it printed out?"))
    count = 0
    while count < 100:
        if count == print_num:
            print("There you got the number:", count)
            choice = input("Do you want to continue the loop?(y/n)")
            if choice == "n":
                break
            else:
                while print_num <= count:
                    print_num = input("Which loop do you want it to be printed out")
                    print("已经过了")
        else:
            print("Loop:", count)
        count += 1
    else:
        print("Loop:", count)
    

    while-死循环:

    #!/usr/bin/env python
    # -*-coding:utf-8-*-
    
    """
    @author:fyh
    @time:2019/5/31
    """
    
    while True:  # 该条件永远为true,循环将无限执行下去
        num = input("Enter a number  :")
        print("You entered: ", num)
        
    # 该语句永远不会被执行到
    print("good bye")
    

    for循环

    基本格式:

    for iterating_var in sequence:
       statements(s)
    

    for-案例1:

    #!/usr/bin/env python
    # -*-coding:utf-8-*-
    
    """
    @author:fyh
    @time:2019/5/31
    """
    
    for letter in 'Python':  # 第一个实例
        print('当前字母 :', letter)
    
    fruits = ['banana', 'apple', 'mango']
    for fruit in fruits:  # 第二个实例
        print('当前水果 :', fruit)
    
    print("Good bye!")
    

    for-else案例2:

    #!/usr/bin/env python
    # -*-coding:utf-8-*-
    
    """
    @author:fyh
    @time:2019/5/31
    """
    
    for i in range(1, 20):
        print(i)
    else:
        print("hahah")
    

    break和continue

    break 和 continue 是专门在循环中使用的关键字

    • break 某一条件满足时,不再执行循环体中后续重复的代码,并退出循环
    • continue 某一条件满足时,不再执行本次循环体中后续重复的代码,但进入下一次循环判断

    案例1-while:

    print_num = input("which loop do you want it printed out?")
    count = 0
    while count < 10000000:
        if count == print_num:
            print("There you got the number:", count)
            choice = input("Do you want to continue the loop?(y/n)")
            if choice == "n":
                break
            else:
                while print_num <= count:
                    print_num = input("Which loop do you want it to be printed out")
                    print("已经过了")
        else:
            print("Loop:", count)
        count += 1
    else:
        print("Loop:", count)
    

    案例2-for:

    # 猜数字游戏,3次机会
    import random
    
    
    real_num = random.randrange(10)
    
    
    for i in range(3):
        guess_num = input("please input a number:").strip()  # 去除空格和换行
        if len(guess_num) == 0:
            continue
        if guess_num.isdigit():
            guess_num = int(guess_num)
        else:
            print("please input a really num:")
            continue
    
    
        if real_num > guess_num:
            print("Wrong! you should input a bigger")
        elif real_num < guess_num:
            print("Wrong! you should input a smaller")
        else:
            print("Configuration! you go it!")
            break
    
    
    else:    # 在for循环正常执行完之后执行后面的else语句
        print("The real num is", real_num)
    

    三目运算符

    """
        格式:
            a if a > b else b
    """
    
    # 求a和b两个数字中的较大值.
    a = 10
    b = 20
    # 使用三目运算符求较大值
    max = a if a > b else b
    print("较大值为:%d" % max)
    
  • 相关阅读:
    PointToPointNetDevice doesn't support TapBridgeHelper
    NS3系列—10———NS3 NodeContainer
    NS3系列—9———NS3 IP首部校验和
    NS3系列—8———NS3编译运行
    【习题 7-6 UVA
    【Good Bye 2017 C】 New Year and Curling
    【Good Bye 2017 B】 New Year and Buggy Bot
    【Good Bye 2017 A】New Year and Counting Cards
    【Educational Codeforces Round 35 D】Inversion Counting
    【Educational Codeforces Round 35 C】Two Cakes
  • 原文地址:https://www.cnblogs.com/fengyuhao/p/11697489.html
Copyright © 2011-2022 走看看