zoukankan      html  css  js  c++  java
  • 格式化输出 , 基本运算符 ,字符编码

    一. 格式化输出                           

    现在有以下需求,让用户输入name, age, job,hobby 然后输出如下所示:

    复制代码
    ------------ info of Alex Li -----------
    
    Name : Alex Li Age 22
    
    job : Teacher Hobbie: girl
    
    ------------- end -----------------
    复制代码

    你怎么实现呢?你会发现,用字符拼接的方式还难实现这种格式的输出,所以一起来学一下新姿势

    只需要把要打印的格式先准备好, 由于里面的 一些信息是需要用户输入的,你没办法预设知道,因此可以先放置个占位符,再把字符串里的占位符与外部的变量做个映射关系就好啦

    复制代码
     
    name = input("Name:") age = input("Age:")
    job = input("Job:")
    hobby = input("Hobbie:")
    info = '''
    ------------ info of %s    #这里的每个%s就是一个占位符,本行的代表 后面拓号里的 name
    Name : %s #代表 name Age : %s  # 代 表 age job : %s # 代 表 job
    Hobbie: %s #代表 hobbie
    ------------- end -----------------
    ''' % (name,name,age,job,hobbie) # 这行的 % 号就是 把前面的字符串 与拓号 后面的 变量 关联起来,注意不要更改位置和少变量
    print(info)
    复制代码

    %s就是代表字符串占位符,除此之外,还有%d, 是数字占位符, 如果把上面的age后面的换成%d,就代表你必须只能输入数字啦

    这时对应的数据必须是int类型. 否则程序会报错

    使用时,需要进行类型转换.

    int(str)    # 字符串转换成int
    str(int)    # int转换成字符串

    类似这样的操作在后面还有很多

    如果, 你不想转换. 觉着转换很麻烦. 也可以全部都用%s. 因为任何东西都可以直接转换成字符串--> 仅限%s

    现在又来新问题了. 如果想输出:

    我叫xxx, 今年xx岁了,我们已经学习了2%的python基础了

    这里的问题出在哪里呢? 没错2%, 在字符串中如果使用了%s这样的占位符.  那么所有的%都将变成占位符.  我们的2%也变成了占位符. 而"%的"是不存在的, 这里我们需要使用%%来表示字符串中的%. 

    注意: 如果你的字符串中没有使用过%s,%d站位. 那么不需要考虑这么多. 还是%

    二.基本运算符                                   

      计算机可以进行的运算有很多种,可不只加减乘除这么简单,运算按种类可分为算数运算、比较运算、逻辑运算、赋值运算、成员运算、身份运算、位运算,今天我们暂只学习算数运算、比较运算、逻辑运算、赋值运算

    算数运算

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

    比较运算

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

    赋值运算

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

    逻辑运算

    针对逻辑运算的进一步研究:

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

    例题:

    判断下列逻辑语句的True,False。

    复制代码
    复制代码
    1,3>4 or 4<3 and 1==1
    2,1 < 2 and 3 < 4 or 1>2 
    3,2 > 1 and 3 < 4 or 4 > 5 and 2 < 1
    4,1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8
    5,1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
    6,not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
    复制代码
    复制代码

      2 ,  x or y , x为真,值就是x,x为假,值是y;

                 x and y, x为真,值是y,x为假,值是x。

     

    例题:求出下列逻辑语句的值。

    8 or 4
    0 and 3
    0 or 4 and 3 or 7 or 9 and 6

    in,not in :

    判断子元素是否在原字符串(字典,列表,集合)中:

    例如:

    #print('喜欢' in 'dkfljadklf喜欢hfjdkas')
    #print('a' in 'bcvd')
    #print('y' not in 'ofkjdslaf')

    字符编码                                           

    字符串是一种数据类型,但是,字符串比较特殊的是还有一个编码问题。

    因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295

    由于计算机是美国人发明的,因此,最早只有127个字符被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122

    但是要处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。

    你可以想得到的是,全世界有上百种语言,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里,各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码。

    因此,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。

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

    现在,捋一捋ASCII编码和Unicode编码的区别:ASCII编码是1个字节,而Unicode编码通常是2个字节。

    字母A用ASCII编码是十进制的65,二进制的01000001

    字符0用ASCII编码是十进制的48,二进制的00110000,注意字符'0'和整数0是不同的;

    汉字已经超出了ASCII编码的范围,用Unicode编码是十进制的20013,二进制的01001110 00101101

    你可以猜测,如果把ASCII编码的A用Unicode编码,只需要在前面补0就可以,因此,A的Unicode编码是00000000 01000001

    新的问题又出现了:如果统一成Unicode编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。

    所以,本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间:

    字符ASCIIUnicodeUTF-8
    A 01000001 00000000 01000001 01000001
    x 01001110 00101101 11100100 10111000 10101101

    从上面的表格还可以发现,UTF-8编码有一个额外的好处,就是ASCII编码实际上可以被看成是UTF-8编码的一部分,所以,大量只支持ASCII编码的历史遗留软件可以在UTF-8编码下继续工作。

    搞清楚了ASCII、Unicode和UTF-8的关系,我们就可以总结一下现在计算机系统通用的字符编码工作方式:

    在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。

    用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件:

    rw-file-utf-8

    浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器:

    以你看到很多网页的源码上会有类似<meta charset="UTF-8" />的信息,表示该网UTF-8编码

    单位转换    

    1Tb = 1024Gb = 1024kb = 1024mb = 1024kb = 1024byte = 8bit

    进制都是1024

    小补充:

    in和not in的使用       

    in 可以帮我们判断xxx字符串是否出现在xxxxxxx字符串中 

    not in 正好相反

  • 相关阅读:
    TCP源码—连接建立
    TCP系列02—连接管理—1、三次握手与四次挥手
    TCP系列01—概述及协议头格式
    ubuntu软件管理apt与dpkg
    318. Maximum Product of Word Lengths
    317. Shortest Distance from All Buildings
    316. Remove Duplicate Letters
    315. Count of Smaller Numbers After Self
    314. Binary Tree Vertical Order Traversal
    313. Super Ugly Number
  • 原文地址:https://www.cnblogs.com/123zzy/p/9140564.html
Copyright © 2011-2022 走看看