zoukankan      html  css  js  c++  java
  • 基本运算符、流程控制之if判断、与用户交互

    • 基本运算符

    • 1、算术运算符

    python支持的算术运算符与数学上计算的符号使用是一致的

    salary = 3.3
    
    res = salary * 12
    
      
    print(10 + 1)   # 加法
    
    print(10 - 3)   # 减法
    
    print(10 * 3)   # 乘法
    
    print(10 / 3)   # 除法,得到的返回值会保留整数与小数部分
    
    print(10 // 3)  # 取整除,得到的返回值只保留整数部分(地板除)
    
    print(10 % 3)   # 取余数,相除后只返回余数
    
    print(10 ** 3)  # 幂,10的3次方
    
     
    
    print(10 + 3.1)
    
    print(10 % 3)
    # ps:整型和浮点型可以混着计算<数字类型>
    
    • 2、比较运算符

    比较运算用来对两个值进行比较,返回的是布尔值True或False

    == 等于,两个对象相等返回True,否则返回False

    != 感叹号等于,两个对象相等返回False,否则返回True

    > 大于

    >= 大于等于

    < 小于

    <= 小于等于

    x = 10
    
    y = 10.0
    
    print(x == y)  #整型和浮点型比较
    
    # True
    
    
    
    m = 10     # 整型
    
    n = "10"   # 字符串类型 
    
    print(m == n) #仅限同类型
    
    # False
    
    
    
    print(10 == [1,2,3]) # == 不限类型
    
    # False
    
    print(10 + [1,2,3]) # 报错
    
    
    
    print(10 == [1,2,3])
    
    # False
    
    print(10 != [1,2,3])
    
    # True
    
    
    print(10 > 3.1)
    
    print(10 >= 3.1)
    
    print(10 <= 3.1)
    
    print(10 < 3.1)
    
    • 3、赋值运算符

    python语法中除了有=号这种简单的赋值运算外,还支持增量赋值、链式赋值、交叉赋值、

    解压赋值,这些赋值运算符存在的意义都是为了让我们的代码看起来更加精简

    增量赋值

    = 简单赋值运算

    += 加法赋值运算

    -= 减法赋值运算

    *= 乘法赋值运算

    /= 除法赋值运算

    //= 取整赋值运算

    %= 取余赋值运算

    **= 幂赋值运算

    age = 18   # 简单赋值运算
    
     
    
    age += 10 # age = age + 10 # 加法赋值运算
    
    print(age)
    
    # 28
    
    
    age *= 10 # 乘法赋值运算
    
    print(age)
    
    # 180
    
    
    age %= 3 # age = age % 3 # 取余赋值运算
    
    print(age)
    
    # 0
          
    
    链式赋值

    如果我们想把同一个值同时赋值给多个变量名,可以这么做

    x = 10
    
    y=x
    
    z=y
    

    链式赋值指的是可以用一行代码搞定这件事

    x=y=z=10
    
    print(x,y,z)
    
    print(id(x),id(y),id(z))
    
    交叉赋值

    我们定义两个变量m与n

    如果我们将m与n的值交换过来

    m=10
    
    n=20
    
    temp=n
    n=m
    m=temp
    m,n=n,m
    
    print(m,n)
    

    交叉赋值指的是一行代码可以搞定这件事

    解压赋值

    如果我们想把列表中的多个值取出来一次赋值给多个变量名,可以这么做

    salaries=[11,22,33,44,55,66,77]
    
    mon1=salaries[0]
    
    mon2=salaries[1]
    
    mon3=salaries[2]
    
    mon4=salaries[3]
    
    mon5=salaries[4]
    
    mon6=salaries[5]
    
    mon7=salaries[6]
    
    mon1,mon2,mon3,mon4,mon5,mon6,mon7=salaries
    
    # 变量名变少了
    
    mon1,mon2,mon3,mon4,mon5,mon6,=salaries # 错误
    
    # 变量名变多了
    
    mon1,mon2,mon3,mon4,mon5,mon6,mon7,mon8=salaries # 错误
    
    # 如果只想取头尾的几个值,可以用*_匹配
    
    mon1,mon2,mon3,*_=salaries
    
    print(mon1)
    
    print(mon2)
    
    print(mon3)
    
    print(_)
    
    # 取倒数两个值
    
    *_,last2,last1=salaries
    
    print(last1)
    
    print(last2)
    
    print(_)
    
    # 取前一个以及后两个值
    
    mon1,*_,last2,last1=salaries
    
    print(mon1)
    
    print(last1)
    
    print(last2)
    
    # 如果想取中间的值,*加middle
    
    _,*middle,_=salaries
    
    print(middle)
    
    print(_)
     
    
    # _同样的数值代替以最新的冲掉原值,所以_显示的是77
    
    • 4、逻辑运算符

    逻辑运算符用于连接多个条件,进行关联判断,会返回布尔值True或False

    • not: 将紧跟其后的那个条件取反,not优先级最高
    print(not 10 > 3)
    
    # False
    
    • and: 连接左右两个条件,只有两个条件同时为True,最终结果才为True
    print("egon" == "egon" and 10 > 3)
    # True
    
    print("egon" == "Egon" and 10 > 3)
    # False
    
    • or: 连接左右两个条件,但凡有一个条件为True,最终结果就为True
    print("egon" == "egon" or 10 > 3)
    # Ture
    
    print("egon" == "Egon" or 10 > 3)
    # Ture
    
    • 优先级:not>and>or

    • ① 三者的优先级关系:not>and>or,同一优先级默认从左往右计算。
    3>4 and 4>3 or not 1 == 3 and 'x' == 'x' or 3 >3
    
    print(3>4 and 4>3 or not 1==3 and 'x' == 'x' or 3 >3)
    
    (3>4 and 4>3) or (not 1==3 and 'x' == 'x') or 3 >3
    
    # True
    
    • ② 最好使用括号来区别优先级,其实意义与上面一样

    原理为:

    (1) not的优先级最高,就是把紧跟其后的那个条件结果取反,所以not与紧跟其后的条件不可分割

    (2) 如果语句中全部是用and连接,或者全部用or连接,那么按照从左到右的顺序依次计算即可

    (3) 如果语句中既有and也有or,那么先用括号把and的左右两个条件给括起来,然后再进行运

    print(1 != 1 or 3 > 4 and not "xx" == "egon" or 1 > 10 and 9 > 3 and 1 > 0)
    
    1 != 1 or (3 > 4 and not "xx" == "egon") or ((1 > 10 and 9 > 3) and 1 > 0)
    
    # False
    
    • ③ 短路运算:偷懒原则(能少算就尽量少算)

    逻辑运算的结果一旦可以确定,那么就以当前处计算到的值作为最终结果返回

    print(1 > 0 and 1 != 1 and 3 > 2)
    
    # False
    
    print(1 > 0 or 1 != 1 or 3 > 2)
    
    # True
    

    补充了解:布尔值分为两大类

    1、显式的布尔值:能明确地得到True或False,比如x=True,10 > 3, 10 > 3 and 1==1

    例如:

    3 == 1 and True and 10 > 3
    
    print(3 == 1 and True and 10 > 3)
    
    # False
    

    2、隐式的布尔值:所有的数据类型的值都可以当作隐式的布尔值,其中0、None、空对应

    隐式布尔值为False,其余对应隐式布尔值为True

    10 and 3 and 4 > 2
    
    print(10 and 3 and 4 > 2)
    
    # True
    
    print(10 and 0 and 4 > 2)
    
    # 0
    
    print(0 and 2 or 1)
    
    # 1
    

    流程控制之if判断

    流程控制即控制流程,具体指控制程序的执行流程,而程序的执行流程分为

    三种结构:顺序结构之前我们写的代码都是顺序结构)、分支结构(用到if判断)、

    循环结构(用到while与for)

    1、什么是判断

    判断 条件:

    做xxx

    否则:

    做yyy

    2、为何要判断

    为了让计算机像人一样根据条件的判断结果去做不同的事情

    3、用if关键字来实现分支结构,如何用:完整语法

    print("start...")
    
    if 条件1: # 如果条件1的结果为True,就依次执行:代码1、代码2,代码3
    
    代码1
    
    代码2
    
    代码3
    
    elif 条件2: # 如果条件2的结果为True,就依次执行:代码1、代码2,代码3
    
    代码1
    
    代码2
    
    代码3
    
    elif 条件3: # 如果条件3的结果为True,就依次执行:代码1、代码2,代码3,......
    
    代码1
    
    代码2
    
    代码3
    
    ......
    
    else: #其它情况,就依次执行:代码1,代码2,代码3
    
    代码1
    
    代码2
    
    代码3
    
    print("end...")
    

    注意:

    1、python用相同缩进(4个空格表示一个缩进)来标识一组代码块,同一组代码会自上而下依次运行

    2、条件可以是任意表达式,但执行结果必须为布尔类型 在if判断中所有的数据类型也都会自动转换

    成布尔类型

    ​ 2.1、None,0,空(空字符串,空列表,空字典等)三种情况下转换成的布尔值为False

    ​ 2.2、其余均为True

    1、单分支

    print("start...")
    
    if 条件1:
    
    	代码1
    
    	代码2
    
    	代码3
    
    print("end...")
     
    
    案例:
    
    print("start...")
    
    inp_name = "egon"
    
    inp_pwd = "456"
    
    
    db_name = "egon"
    
    db_pwd = "456"
    
    
    if inp_name == db_name and inp_pwd == db_pwd:
    
    print("用户登录成功")
    
    
    print("end...")
    

    2、双分支

    print("start...")
    
    if 条件1:
    
    代码1
    
    代码2
    
    代码3
    
    else:
    
    代码1
    
    代码2
    
    代码3
    
    print("end...")
    
    案例:
    
    print("start...")
    
    inp_name = "xxx"
    
    inp_pwd = "456"
    
    db_name = "egon"
    db_pwd = "456"
    
     
    if inp_name == db_name and inp_pwd == db_pwd:
        print("用户登录成功")
    
    else:
    
    	print("账号或密码输入错误")
    
    print("end...")
    
    

    3、多分支

    print("start...")
    
    if 条件1:
    
    代码1
    
    代码2
    
     代码3
    
    elif 条件2:
    
    代码1
    
    代码2
    
    代码3
    
    elif 条件3:
    
    代码1
    
    代码2
    
    代码3
    
    print("end...")
    
    
    
    # 如果:成绩>=90,那么:优秀
    
    # 如果成绩>=80且<90,那么:良好
    
    # 如果成绩>=70且<80,那么:普通
    
    # 其他情况:很差
    
    # 案例:
    
    score = 83
    
     
    if score >= 90:
    
    print("优秀")
    
    elif score >= 80:
    
    print("良好")
    
    elif score >= 70:
    
    print("普通")
    
    else:
    
    print("很差")
    
    

    与用户交互

    1、接收用户输入

    inp_name = input("请输入您的用户名:")
    
    inp_name = "123"
    
    print(inp_name,type(inp_name))
    
     
    # 案例1:
    
    print("start...")
    
    inp_name = input("请输入您的用户名:") # inp_name = "egon"
    
    inp_pwd = input("请输入您的密码:") # inp_pwd = "123"
     
    
    db_name = "egon"
    
    db_pwd = 456
    
     
    
    f inp_name == db_name and inp_pwd == db_pwd:
    
    	print("用户登录成功")
    
    else:
    	print("账号或密码输入错误")
    
     
    
    print("end...")
    
     
    
    # 案例2:
    
    score = 83
    
    score = input("请输入您的成绩:") # score = "83"
    
    score = int(score) # 将纯数字组成的字符串转成整型
    
    if score >= 90: # "83" >= 90
    
         print("优秀")
    
    elif score >= 80:
    
         print("良好")
    
    elif score >= 70:
    
    	print("普通")
    
    else:
    
    	print("很差")
    
     
    # python2的raw_input() 等同于python3的input
     
    

    2、格式化输出

    print("1111",end='')
    
    print("2222")
    
    name = input("your name: ")
    
    age = input("your age: ")
    
    print("my name is %s my age is %s" % (name,age))
    
    print("my name is %s my age is %d" % ("egon",19))
    
    print("my name is %s my age is %d" % ("egon","19")) # %d 只能接收数字
    
    print("my name is %s my age is %s" % ("egon",[1,2,3]))
    
  • 相关阅读:
    ES 内存深度解析
    Spring Cache介绍和使用
    mysql 索引及索引创建原则
    mysql中四种存储引擎的区别和选择
    Java中数组、List、Set互相转换
    COGS 1151 活动安排
    洛谷P1650赛马与codevs 2181 田忌赛马
    5月3日济南清北学堂随堂测试题目
    codevs 1206 保留两位小数
    codevs 1203 判断浮点数是否相等
  • 原文地址:https://www.cnblogs.com/gfeng/p/14156794.html
Copyright © 2011-2022 走看看