zoukankan      html  css  js  c++  java
  • Python学习 之三 Python基础&运算符

    第三章:Python基础 & 运算符

    3.1 内容回顾 & 补充

    • 计算机基础

    • 编码

      字符串: "中国" "Hello"

      字 符: 中 e

      字 节:

      ​ unicode: 中 -> 4个字节, e -> 4个字节

      ​ utf-8 : 中 -> 3个字节, e -> 1个字节

      位 : 01101111 -> 8位表示一个字节

    unicode: 一般用于内存中的数据计算

    utf-8 :一般用于网络传输及数据保存

    • 安装解释器
      • py2
      • py3
    • 语法
      • print / input
      • 整型 int / 字符串 str / 布尔值 boolen
      • 条件语句
      • and 运算符
      • 变量
    • 练习
    # 练习题: 用户输入成绩,根据成绩的不同显示不同的级别,评分规则:A >=90; B >=80; C >=70; D 其他。
    
    score = input("请输入成绩:")
    score_int = int(score)   # 如果不使用int强制转换,执行会报错 TypeError: '>=' not supported between instances of 'str' and 'int'
    
    if score_int >= 90:
    	print("A")
    elif score_int >= 80:
    	print("B")
    elif score_int >= 70:
        print("C")
    else:
        print("D")
    
    • 补充

      # 10086示例
      message = """欢迎致电10086
      1、话费查询
      2、流量服务
      3、业务办理
      4、人工服务
      """
      print(message)
      
      index = input("请输入你要选择的业务:")
      index = int(index)
      if index == 1:
          print('话费查询')
      elif index == 2:
          print('流量服务')
      elif index == 3:
          content = """业务办理
          1、修改密码
          2、更改套餐
          3、停机
          """
          print(content)
          value = input('请输入要办理的业务编号:')
          value = int(value)
          if value == 1:
              print('修改密码')
          elif value == 2:
              print('更改套餐')
          elif value == 3:
              print('停机')
          else:
              print('错误')
      elif index == 4:
          print('人工服务')
      else:
          print('输入错误')
      
    • pycharm 变更解释器

    3.2 循环语句

    ​ 1、循环打印 “ 人生苦短,我用Python ”

    while True:   # 没有终止循环条件,这叫死循环
    	print('人生苦短,我用Python')
    

    ​ 2、while 后加条件

    while 1 > 0:
    	print('人生苦短,我用Python')
    	
    while 1 > 0 and 2 > 1:
    	print('人生苦短,我用Python')
    

    ​ 3、数字相加

    """
    count = 1
    value = count + 1
    print(value)
    """
    
    """
    count = 1
    count = count + 1
    print(count)
    """
    
    

    ​ 4、请通过循环,让 count 每次循环都 +1

    count = 1
    while True:
    	print(count)
    	count = count + 1
    
    count = 1
    while True:
    	print(count)
    	count = count + 2
    # 练习
    while True:   # 这个代码执行的结果就是永远打印1
        count = 1
        print(count)
        count = count + 1
    

    ​ 5、请通过循环,打印 1 2 3 ...10

    count = 1
    while count <= 10:
    	print(count)
    	count = count + 1
    print("结束")
    

    ​ 6、请通过循环,打印 1 2 3 4 5 6 8 9 10

    # 错误示例
    count = 1
    while count <= 10 and count != 7:
    	print(count)
    	count = count + 1
    	
    #正确
    count = 1
    while count <= 6:
    	print(count)
    	count = count + 1
    count = 8
    while count <= 10:
    	print(count)
    	count = count + 1
    
    #正确
    count = 1
    while count <= 10:
    	if count != 7:
       		print(count)
    	count = count + 1
    
    #正确
    count = 1
    while count <= 10:
    	if count == 7:
        	pass
    	else:
        	print(count)
    		count = count + 1
    

    ​ 7、关键字:break - 是终止当前循环

    while True:
    	print(666)
    	break  # 终止当前循环
    print('结束')
    
    # 练习:
    
    # 通过 break 实现打印 1-10
    count = 1
    while True:
    	print(count)
    	if count == 10:
       		break
    	count = count + 1
    print("结束")
    
    # break 是终止当前循环
    while True:
    	print('你好')
    	while True:
        	print(666)
        	break
    	break
    

    ​ 8、关键字:continue

    count = 1
    while count <= 10:
    	print(count)
    	continue    # 本次循环如果遇到 continue,则不再继续往下走,而是回到 while 条件位置
    	count = count + 1
    
    #示例:1 2 3 4 5 6 8 9 10
    count = 1
    while count <= 10:
    	if count == 7:
    		continue
    	print(count)   # 会打印1到6,但程序不会自动终止
    	count = count + 1
    	
    	
    count = 1
    while count <= 10:
    	if count == 7:
        	count = count + 1
       		continue
    	print(count)   
    	count = count + 1
    

    ​ 9、while else

    count = 1
    while count < 10:
    	print(count)
    	count = count + 1
    else:      #不再满足 while 后面的条件时,触发。 或 条件 = False
    	print("ELSE代码块")
    print('结束')
    count = 1
    while True:
    	print(count)
    	if count == 10:
        	break
    	count = count + 1
    else:      # 不再满足 while 后面的条件时,触发。 或 条件 = False
    	print("ELSE代码块")  # 这段代码中这行不会执行,因为条件不会为 False 时,break 已经终止了当前循环	
    print('结束')
    

    ​ 10、while 循环代码执行顺序

    ​ 11、其他

    • 快速注释 Ctrl+?

    • pycharm 断点 (Debug 模式)

      Debug 模式运行代码,Debug模式可以让你看见代码执行每一步都干了什么

    ​ 12、总结

    • while 基本结构
    • break
    • continue
    • while else

    3.3 字符串格式化

    ​ 1、%s 占位符

    name = input('姓名:')
    do = input('在干什么:')
    template = "%s在教室,%s。" % (name,do,)
    print(template)
    

    ​ 2、%d 占位符

    template = "我是%s, 年龄%s, 职业%s" % ("alex",78,"讲鸡汤")
    print(template)
    
    template = "我是%s, 年龄%d, 职业%s" % ("alex",78,"讲鸡汤")
    print(template)
    

    ​ 3、%%

    name = 'alex'
    template = '%s现在手机的电量是100%%'%(name,)  # 如果是 100% 会报错
    print(template)
    

    ​ 4、示例

    name = input('请输入姓名:')
    age = input('请输入年龄:')
    job = input('请输入职业:')
    hobby = input('请输入爱好:')
    msg = """
    ------------ info od Alex ------------
    Name  : %s
    Age   : %s
    Job   : %s
    Hobby : %s
    ------------ end ------------"""
    
    #print(msg%(name,age,job,hobby))
    
    data = msg % (name,age,job,hobby)
    print(data)
    

    3.4 运算符

    3.4.1 算数运算

    以下假设变量 a=2, b=3

    运算符 描述 示例
    + 加——>两个对象相加 a+b=5
    - 减——>两个数相减 a-b=-1
    * 乘——>两个数相乘或是返回一个被重复若干次的字符串 a*b=6
    / 除——>x除以y b/a=1.5
    % 取模——>返回除法的余数 b%a=1
    ** 幂——>返回x的y次幂 b**a=9
    // 取整除——>返回商的整数部分 b//a=1 , 如果是3.0//2.0=1.0
    • 加 +
    a = 10
    b = 20
    print(a + b)  # 结果为 30
    
    • 减 -
    a = 10
    b = 20
    print(a - b)  # 结果为 -10
    
    • 乘 *
    a = 10
    b = 20
    print(a * b)  # 结果为 200
    
    • 除 /
    a = 10
    b = 20
    print(a / b)  # 结果为 0.2
    
    • 取模 %
    value = 11 % 3
    print(value)  # 结果为 2
    
    • 幂 **
    a = 10
    b = 20
    print(a ** b)  # 结果为 100000000000000000000
    val = 2**8
    print(val)   # 结果为 256
    
    • 取整除 //
    val = 9/2
    print(val)  # 结果为 4.5
    c = 9
    d = 2
    print(c // d)   # 结果为4, 9.0//2.0输出结果为4.0
    

    ​ 练习:

    #练习题:打印 1 - 100 之间的奇数
    count = 1
    while count <= 100:
    	val = count % 2
    	if val == 1:
        	print(count)
    	count = count + 1
    	
    #练习题:打印 1 - 100 之间所有的数相加
    total = 0
    count = 1
    while count <= 100:
    	total = total + count
    	count = count + 1
    print(total)
    
    #练习题:打印 1 - 2 + 3 -4 + 5...+ 99 - 100 的结果
    total = 0
    count = 1
    while count <= 100:
    	if count % 2 == 1:
        total = total + count
    else:
        total = total - count
    count = count + 1
    print(total)
    

    3.4.2 比较运算

    以下假设变量 a=10 , b=20

    运算符 描述 示例
    == 等于——>比较对象是否相等 (a==b) 返回 False
    != 不等于——>比较对象是否不相等 (a!=b) 返回 True
    > 大于——>返回 x 是否大于 y (a>b) 返回 False
    < 小于——>返回 x 是否小于 y, (a<b) 返回 True
    >= 大于等于——>返回 x 是否大于等于 y (a>=b) 返回 False
    <= 小于等于——>返回 x 是否小于等于 y (a<=b) 返回 True

    3.4.3 赋值运算

    以下假设变量 a=10 , b=20

    运算符 描述 示例
    = 简单的赋值运算符 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

    ​ 练习:

    count = 1
    while count <= 100:
    	print(count)
    	count += 1   # 等效于  count = count + 1
    

    3.4.4 逻辑运算

    运算符 描述 示例
    and 布尔‘与’ 如果a为False,a and b返回False,否则它返回 b 的计算值 (a and b) 返回 False
    or 布尔‘或’ 如果a为True,它返回True,否则它返回b的计算值 (a or b) 返回 True
    not 布尔‘非’ 如果a为True,它返回False,如果a为False,它返回True not(a and b) 返回 True

    ​ 1、一般情况下的使用:

    if 1 > 0 and 1 < 2:
    	print(666)
    if 1 > 0 and 1 > 2:
    	print(777)	
    if 1 > 0 or 1 > 2:
    	print(888)
    if not 1 > 0 or 1 > 2:
    	print(999)
    
    

    ​ 2、二般情况下的使用:

    小知识:
    	- int
    	- str
    	- bool
    
    #数字转字符串
    v1 = 666
    v2 = str(v1)
    print(v2)  # "666"
    
    #字符串转数字
    v1 = "666"
    v2 = int(v1)
    print(v2)  # 666
    
    #数字转布尔值
    v1 = 1
    v2 = bool(v1)
    print(v2)  # True
    v1 = 0
    v2 = bool(v1)
    print(v2)  # False
    
    #字符串转布尔值
    v1 = "1"
    v2 = bool(v1)
    print(v2)  # True
    v1 = "0"
    v2 = bool(v1)
    print(v2)  # True
    v1 = " "
    v2 = bool(v1)
    print(v2)  # True
    v1 = ""  # 表示空字符串
    v2 = bool(v1)
    print(v2)  # Flase
    
    #布尔值转换其他
    v1 = True
    v2 = int(v1)
    print(v2)  # 1
    v1 = False
    v2 = int(v1)
    print(v2)  # 0
    v1 = True
    v2 = str(v1)
    print(v2)  # True
    v1 = False
    v2 = str(v1)
    print(v2)  # False
    
    

    ​ 3、转换需要记住的:

    • 字符串转数字

    • 数字转字符串

    • "" / 0 转换布尔值之后是 False

      4、经典面试题

      对于 or :

      value = 1 or 9
      第一个值转换成布尔值如果是真,则 value = 第一个值。
      第一个值转换成布尔值如果是假,则 value = 第二个值。
      如果有多个 or 条件,则从左到右依次进行上述流程。
      示例:
      v1 = 0 or 1
      v2 = 8 or 10
      v3 = 0 or 9 or 8

    #示例:
    value = 0 or 9
    print(value)  # 结果为 9
    value = 0 or 0
    print(value)  # 结果为 0
    value = 0 or ""
    print('--->',value,'<---')  # 结果为 --->  <---
    value = 0 or 9 or 8
    print(value)  # 结果为 9
    
    #对于 and :
    如果第一个值转换成布尔值是True,则 value = 第二个值。
    如果第一个值转换成布尔值是False,则 value = 第一个值。
    如果有多个 and 条件,则从左到右依次进行上述流程。
    
    #示例:
    v1 = 1 and 9
    print(v1)  # 结果为 9
    
    v1 = 1 and 0
    print(v1)  # 结果为 0
    
    v1 = 0 and 7
    print(v1)  # 结果为 0
    
    v1 = 0 and ""
    print(v1)  # 结果为 0
    
    v1 = 1 and 0 and 9
    print(v1)  # 结果为 0
    
    #and 和 or 综合 : 先看 and 再看 or (前提是在没有括号的情况下)
    
    #示例:
    v1 = 1 and 9 or 0 and 6
    print(v1)  # 结果为 9
    

    ​ 5、逻辑运算的优先级:

    ​ 在没有 () 的情况下 not 的优先级高于 and , and 的优先级高于 or ,即优先级关系为 ()>not>and>or,同一优先级从左往右计算。

    3.4.5 成员运算

    运算符 描述 示例
    in 如果在指定的序列中找到值返回True,否则返回False x 在 y 的序列中,如果x在y的序列中返回True
    not in 如果在指定的序列中没有找到值返回True,否则返回False x 不在 y 的序列中,如果x不在y的序列中返回True
    • in
    value = "我是中国人"
    #判断‘中国’是否在 value 所代指的字符串中。  或者说 ‘中国’是否是 value 所代指的字符串的子序列。
    v1 = "中国" in value
    
    #示例
    content = input('请输入内容:')
    if "退钱" in content:
    	print('包含敏感字符!')
    
    #示例
    while True:
    	content = input('请输入内容:')
    	if "退钱" in content:
        	print('包含敏感字符')
    	else:
        	print(content)
        	break
    
    • not in
    value = "我是中国人"
    #判断‘北京’是否不在 value 所代指的字符串中。  或者说 ‘北京’是否不是 value 所代指的字符串的子序列。
    v1 = "北京" not in value
    

    3.4.6 身份运算

    运算符 描述 示例
    is is 是判断两个标识符是不是引用自一个对象 x is y,如果 id(x) 等于 id(y),is 返回结果 1
    is not is not 是判断两个标识符是不是引用自不同对象 x is not y,如果 id(x) 不等于 id(y),is not 返回结果 1
    a = 20
    b = 20
    
    print(id(a)) # 打印对象id值
    print(id(b))
    
    if a is b:
    	print('1 - a 和 b 有相同的标识')
    else:
    	print('1 - a 和 b 没有相同的标识')	
    	
    if a is not b:
    	print('2 - a 和 b 没有相同的标识')
    else:
    	print('2 - a 和 b 有相同的标识')
    	
    #修改 b 的变量
    b = 30
    if a is b:
    	print('3 - a 和 b 有相同的标识')
    else:
        print('3 - a 和 b 没有相同的标识')
    
    if a is not b:
        print('4 - a 和 b 没有相同的标识')
    else:
        print('4 - a 和 b 有相同的标识')
    
    以上示例输出结果:
    1543007904
    1543007904
    1 - a 和 b 有相同的标识
    2 - a 和 b 有相同的标识
    3 - a 和 b 没有相同的标识
    4 - a 和 b 没有相同的标识
    
    #is 和 == 的区别 后面学到列表时会学习
    #is 用于判断两个变量引用对象是否为同一个(同一块内存空间), == 用于判断引用变量的值是否相等。
    
    a = [1,2,3]
    b = a
    print(b is a)  # True
    print(b == a)  # True
    b = a[:]
    print(b is a)  # False
    print(b == a)  # True
    

    3.4.7 位运算

    运算符 描述 示例
    & 按位与运算符 (a & b) 输出结果 12,二进制解释: 0000 1100
    | 按位或运算符 (a | b) 输出结果 61,二进制解释: 0011 1101
    ^ 按位异或运算符 (a ^ b) 输出结果 49,二进制解释: 0011 0001
    ~ 按位取反运算符 (~a)输出结果 -61, 二进制解释: 1100 0011 ,在一个有符号二进制数的补码形式
    << 左移动运算符 a << 2 输出结果 240,二进制解释:1111 0000
    >> 右移动运算符 a >> 2 输出结果 15,二进制解释: 0000 1111
    a = 60  # 60 = 0011 1100
    b = 13  # 13 = 0000 1101
    c = 0
    c = a & b;  # 12 = 0000 1100
    print("1 - c 的值为: %s"% c)
    c = a | b;  # 61 = 0011 1101
    print("2 - c 的值为: %s"% c)
    c = a ^ b;  # 49 = 0011 0001
    print("3 - c 的值为: %s"% c)
    c = ~a;  # -61 = 1100 0011
    print("4 - c 的值为: %s"% c)
    c = a << 2;  # 240 = 1111 0000
    print("5 - c 的值为: %s"% c)
    c = a >> 2;  # 15 = 0000 1111
    print("6 - c 的值为: %s"% c)
    
    以上示例输出结果:
    1 - c 的值为: 12
    2 - c 的值为: 61
    3 - c 的值为: 49
    4 - c 的值为: -61
    5 - c 的值为: 240
    6 - c 的值为: 15
    

    3.4.8 运算符优先级

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

    3.5 编码补充

    • 编码扩展

      • ascii

      • unicode

        • ecs2 — Unicode 通过2个字节来表示,这样表示的内容不够多
        • ecs4 — Unicode 通过4个字节来表示,现在基本上都是这种
      • utf-8 — 全球通用,中文用3字节。

      • utf-16

        在Windows系统使用记事本写完数据后,点击文件-另存为,弹框中点击编码后的选择按钮,有个Unicode的选项,这个指的就是utf-16,因为Unicode不能写在硬盘上。

      • gbk2312 ,中文用2字节。

        由中华人民共和国政府制定的,简体汉字编码规范,大陆所有计算机中的简体中文,都使用此种编码格式。

      • gbk ,中文用2字节。

        gbk2312的升级版,又称GBK大字符集,简而言之就是将所有亚洲文字的双字节字符,包括简体中文,繁体中文,日语,韩语等 。

    • 单位转化

    8bit = 1byte
    1024byte = 1kb
    1024kb = 1MB
    1024MB = 1GB
    1024GB = 1TB
    1024TB = 1PB
    1024PB = 1EB
    1024EB = 1ZB
    1024ZB = 1YB
    1024YB = 1NB
    1024NB = 1DB
    常用到 TB 就够了
    

    有不足之处欢迎各位评论指正!

  • 相关阅读:
    AndroidManifest.xml详细分析
    GoogleMap-------解决不能使用问题
    GoogleMap-------manifest文件配置
    GoogleMap-------Google Play services SDK的下载和配置
    css_兼容IE和FF的写法
    dede如何新建一个ajax服务端输出文件
    js用ajax和不同页面的php互相传值的方法
    js获取多个标签元素的内容,并根据元素的内容修改标签的属性
    网页上记录鼠标的点击次数和一段有用的php代码,自己学习使用
    PHP弹出提示框并跳转到新页面即重定向到新页面
  • 原文地址:https://www.cnblogs.com/duncan1863/p/11421836.html
Copyright © 2011-2022 走看看