• python-格式化-while-运算符-编码


    格式化输出

    print("This is %s" % "test")  # This is test
    print("%s , %d , %s" % ('a', 12, 'b'))  # a , 12 , b
    print('3%% %s' % "abc")  # 显示%号
    
    str_ = '''
        a b c d %s
          a b c %s
            a b %s
              a %s
                %s
        ''' % ("e", "d", "c", "b", "a")
    
    # a b c d e
    
    # a b c d
    
    # a b c
    
    # a b
    
    # a
    
    # format() 输出
    
    # 位置显示
    
    'a1 ={}, a2={}, a3={}'.format("1", "2", "3")     # a1 =1, a2=2, a3=3
    'a1 ={1}, a2={2}, a3={0}'.format("1", "2", "3")     # a1 =2, a2=3, a3=1
    
    "Your name is{name}, age is {age}".format(name="A", age=12)  # Your name isA, age is 12
    "Your name is{name}, age is {age}".format(age=12, name="A")  # Your name isA, age is 12 和位置无关
    
    # 对象的的属性
    
    class A:
        def __init__(self, name, age):  # 构造函数
            self.name = name
            self.age = age
    
    ​```
        P = A("B", 18)
        "name is: {p.name}, age is:{p.age}".format(p=P) # name is: B, age is:18
    ​```
    
    # 通过下标
    
    s1 = [1, "23", "S"]
    s2 = ["s2.1", "s2.2", "s2.3"]
    
    '{0[1]}  {0[2]} {1[2]} {1[0]}'.format(s2, s1)  # s2.2  s2.3 S 1
    
    # 格式化输出
    
    a = '[{:<10}]'.format('12')  # 默认填充空格的  输出左对齐定长为10位 [12        ]
    b = "[{:>10}]".format("abc")  # 默认填充空格的  输出左对齐定长为10位 [       abc]
    c = "[{:*>10}]".format("abc")  # 输出左对齐定长为10位 填入一个ascii字符  [*******abc]
    d = "[{:*<10}]".format("abc")  # 输出右对齐定长为10位 填入一个ascii字符  [abc*******]
    e = "[{:*^10}]".format("abc")  # 输出居中对其为10位 填入一个ascii字符  [***abc****]
    
    # 浮点小数输出
    
    import math
    a1 = "{:.6f}".format(math.pi) # 3.141593     通常都是配合 f 使用,其中.2表示长度为2的精度,f表示float类型
    
    a2 = "{:,}".format(12345945852326.1524512345)  # 12,345,945,852,326.152
    
    # 进制及其他显示
    
    ​```
    '''
    ​```
    
    b : 二进制
    d :十进制
    o :八进制
    !s :将对象格式化转换成字符串
    !a :将对象格式化转换成ASCII
    !r :将对象格式化转换成repr
    '''
    b1 = '{:b}'.format(10)  #二进制 :1010
    b2 = '{:d}'.format(10)  # 10进制 :10
    b3 = '{:o}'.format(45)  # 8进制 :55
    b4 = '{:x}'.format(45)  # 16进制 :2d
    b5 = '{!s}'.format('45')  # 45
    b6 = "{!a}".format("10")  # '10'
    b7 = "{!r}".format("10")  # '10'
    print(b7)
    
    
    

    while循环

    while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务,例如输入账号,密码等。
    while循环的基本结构:

    [初始化部分一般是用来定义循环变量]
    while 循环条件:
    	循环体语句
    	[循环变量更改部分]
    [else :
    语句体]
    
    

    执行的顺序:

    
    1.	初始化部分:一般是用来定义循环变量或新赋值
    2.	判断循环条件:
    真:
    		执行循环体语句
    		是否执行了break语句
    			执行了:跳过else
    			没执行:当while正常执行完后,执行else
    		回到第二步条件判断
    假:执行else
    
    break:停止:直接停止当前的循环,不论还剩下多少次循环。
    continue:跳过当前循环后面的语句,直接执行下一轮循环。
    

    测试

    i = 0
    while i < 10:
        i += 1
        if i == 7:
            continue
        print(i)
    else:
        print("while over")
    
    

    结果:

    运算符

    算术运算符(arithmetic operator)###

    以下假设变量: 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的20次方, 输出结果 100000000000000000000
    // 取整除 - 返回商的整数部分(向下取整 9//2= 4 -9//2= -5

    取模操作
    % : 取余,取模。取的是第一个操作数和第二个操作数除法的余数。整除结果为0.

    10 % 3 		1
    10 % 5 		0
    10 % -3		-1
    10 % -5		?
    -10%3		  ?
    

    % 真正操作步骤:

    1. 用第一个数除以第二个数,得到最相近的两个商。取最小的数。
    2. 用第一个数减去第二个数和第一步的到的数的乘积。
    10 % -5		# 0
    -10%3		# 1:则两个数为-4,-3,取最小的那个数,则是-4;
                 # 2:-10-(3*-4)= 2   则余数为2
    			
    

    赋值运算符(assignment operator)

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

    逻辑运算符(logic operator)

    运算符 逻辑表达式 描述 实例
    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

    逻辑运算符的结果到底是什么类型???

    结果取决于两个操作数的类型!!!

    针对and操作:第一个操作数如果是可以转成False的话,那么第一个操作数的值,就是整个逻辑表达式的值。
    如果第一个操作数可以转成True,第二个操作数的值就是整个表达式的值。

    针对or操作:第一个操作数如果是可以转成False的话,第二个操作数的值就是整个表达式的值。
    如果第一个操作数可以转成True, 第一个操作数的值,就是整个逻辑表达式的值。

    1)1 > 1 or 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6   # True
    2)not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 # False
    3) 8 or 3 and 4 or 2 and 0 or 9 and 7 # 8
    4) 0 or 2 and 3 and 4 or 6 and 0 or 3  # 4
    5) 6 or 2 > 1  # 6
    6) 5 < 4 or 3  # 3
    7) 2 > 1 or 6  # True
    8) 3 and 2 > 1 #True
    9) 0 and 3 > 1  # 0
    10) 2 > 1 and 3   # 3
    11) 3 > 1 and 0   # 0
    12) 3 > 1 and 2 or 2 < 3 and 3 and 4 or 3 > 2   # 2 
    

    成员运算

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

    编码的初始

    字符编码

    ASCII

    最早的计算机是采用在设计的时候采用了8个比特(bit),一个字节一个字节能表示的最大的整数就是255(11111111 二进制),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295。

    早期,计算机的编码只有127个字符被编码到计算机里,其就是大小为英文、数字、和一些符号。这个编码则被称为ASCII码,早期的ascii都是7位一段,但是为了以后的发展,拓展了一位,具体的ASCII码如下所示:

    但是相对于中国的汉字,有91251个,但是常用字只有3000个左右,其他都是生僻字。两个字节就可以满足我们的日常的需求了(2字节=65536),为了不和ASCII进行冲突,中国就制定了GBK:GB2312编码,将中文进行编码。

    **Unicode **

    Unicode(万国码)把所有语言都统一到一套编码里。
    Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。现代操作系统和大多数编程语言都直接支持Unicode。

    ASCII编码和Unicode编码的区别:

    子母a用ASCII编码的十进制97,二进制是01100001
    特别注意的是:数字0和子母o的编码是不一样的。

    汉字已经超出了ASCII编码的范围,用Unicode编码是十进制的26472,二进制的01100111 01101000

    UTF_8

    问题出现了,当美国的作者写文章的时候,如果使用Unicode编码,要比使用ASCII编码多出一倍的存储空间,导致资源上的浪费。
    在这种情况下,就出现了也为节约为目的,将Unicode编码转换为'可变长编码'的utf-8,UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间.

    字符 ASCII Unicode utf-8
    'a' 01100001 00000000 01100001 01100001
    '杨' ----------- 0110011101101000 11100110 10011101 10101000

    python3,是也unicode进行编码的。

    测试:

    >>> print("杨")  # unicode编码
    杨
    >>> ord("a")  # 转化为10进制
    97
    >>> bin(97)  # 转换为2进制
    '0b1100001'
    >>> chr(97)  # 数字转换为字符(ASCII)
    'a'
    >>> chr(26472)
    '杨
    
    

    在unicode编码中,可以使用encode转换到其他的编码;

    data = '杨'
    a = data.encode(encoding='utf-8')
    print(a)  # b'xe6x9dxa8'
    
  • 相关阅读:
    vue报错 error: data.push is not a function
    vue elment.style样式修改(第三方组件自生成元素)
    按元素标签查询多个
    按css查询多个元素
    按CSS查询一个元素
    查询单个元素
    JavaScript 查找元素
    Spring 商品分类
    Spring 使用日志
    Spring 使用日期类型
  • 原文地址:https://www.cnblogs.com/yangchangjie150330/p/10461102.html
Copyright © 2020-2023  润新知