2.格式输出 运算符 字符编码

1.格式输出

 现在有以下需求,让用户输入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 ----------
Name  : %s 
Age   : %s 
job   : %s 
Hobbie: %s
------------- end ----------------
""" %(name,name,age,job,hobby)
print(info)

%s就是代表字符串占位符,除此之外,还有%d, 是数字占位符, 如果把上面的age后面的换成%d,就代表你必须只能输入数字啦 这时对应的数据必须是int类型. 否则程序会报错 

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

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

类似这样的操作在后面还有很多如果, 你头铁. 就不想转换. 觉着转换很麻烦. 也可以全部都用%s. 因为任何东西都可以直接转换成字符串--> 仅限%s 现在又来新问题了. 如果想输出:

我叫小钱, 今年22岁了,我们已经学习了2%的python基础了

这里的问题出在哪里呢? 没错2%, 在字符串中如果使用了%s这样的占位符. 那么所有的%都将变成占位符. 我们的2%也变成了占位符. 而"%的"是不存在的, 这里我们需要使用%%来表示字符串中的%. 注意: 如果你的字符串中没有使用过%s,%d站位. 那么不需要考虑这么多. 该%就%.没毛病老铁.

print("我是%s,今年22岁了,学习了python2%%了" % '小钱') #有占位符
print("我是小钱,今年22岁了,学习了python2%了" ) #没有占位符

字符串格式化使用操作符百分号(%)实现

   符   号         说     明
     %c       格式化字符及其ASCII码
     %s       格式化字符串
     %d       格式化整数
     %o       格式化无符号八进制数
     %x       格式化无符号十六进制数
     %X       格式化无符号十六进制数(大写)
     %f       格式化定点数,可指定小数点后的精度
     %e       用科学计数法格式化定点数
     %E       作用同%e,用科学计数法格式化定点数
     %g       根据值的大小决定使用%f活%e
     %G       作用同%g,根据值的大小决定使用%f或者%E
# -*- coding:utf-8 -*-
name = input("输入姓名:").strip()
address = input("你来自哪里:").strip()
wife = input("输入老婆名字:").strip()
notlike = input("不喜欢的明星:").strip()

print("我叫"+name+",我来自"+address+",我老婆是"+wife+",不喜欢的明星"+notlike)
print("我叫%s,我来自%s,我老婆是%s,不喜欢的明星%s" % (name, address, wife, notlike))
print(f"我叫{name},我来自{address},我老婆是{wife},不喜欢的明星{notlike}")
print("我叫{},我来自{},我老婆是{},不喜欢的明星{}".format(name, address, wife, notlike))

2.运算符

基本运算符

计算机可以进行的运算有很多种,可不只加减乘除这么简单,运算按种类可分为:

算数运算、 比较运算、逻辑运算、 赋值运算、 成员运算、 身份运算、 位运算. 

算数运算

比较运算

赋值运算

逻辑运算

and

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

print(12 and 13)  # 13
print(0 and 13)  # 0

 or

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

print(12 or 13)  # 12
print(0 or 13)  # 13

not 

如果x为True,返回False,如果x为False,返回Ture

print(not 2 > 1)  # False
print(not 2 < 1)  #Ture

运算顺序

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

 ()=> not => and =>or
print(6 or 8 and 3 or 5) #6
print(8 or 3 and 4 or 2 and 0 or 9 and 7) #8
print(0 or 2 and 3 and 4 or 6 and 0 or 3) #4
print(4 > 5 or 7 and 8 < 6 or 3 and 4) #4

函数

abs(number) 返回指定数的绝对值 
bytes(string, encoding[, errors]) 对指定的字符串进行编码,并以指定的方式处理错误 
cmath.sqrt(number) 返回平方根;可用于负数 
float(object) 将字符串或数字转换为浮点数 
help([object]) 提供交互式帮助 
input(prompt) 以字符串的方式获取用户输入 
int(object) 将字符串或数转换为整数 
math.ceil(number) 以浮点数的方式返回向上圆整的结果 
math.floor(number) 以浮点数的方式返回向下圆整的结果 
math.sqrt(number) 返回平方根;不能用于负数 pow(x, y[, z]) 返回x的y次方对z求模的结果 
print(object, ...) 将提供的实参打印出来,并用空格分隔 
repr(object) 返回指定值的字符串表示 
round(number[, ndigits]) 四舍五入为指定的精度,正好为5时舍入到偶数 
str(object) 将指定的值转换为字符串。用于转换bytes时,可指定编码和错误处理方式 

数学表达式

10 % -3 = -2

x % y 等价于  x - (x // y) * y

10 // -3 = -4

import math
math.floor(2.6) #2
math.floor(2.4) #2

math.ceil(2.4) #3
math.ceil(2.6) #3
round(2.6) #3
round(2.4) #2

3.字符编码

编码问题

python2解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),而python3对内容进行编码的默认为utf8。
计算机:
早期. 计算机是美国发明的. 普及率不高, 一般只是在美国使用. 所以. 早的编码结构就是按照美国人的习惯来编码的. 对应数字+字⺟母+特殊字符一共也没多少. 所以就形成了早的编码ASCII码. 直到今天ASCII依然深的影响着我们.
ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字⺟母的一套电 脑编码系统,主要用于显示现代英语和其他⻄西欧语言,其多只能⽤ 8 位来表示(一个字节bytes),即:2**8 = 256,所 以,ASCII码多只能表示 256 个符号。

随着计算机的发展. 以及普及率的提高. 流行到欧洲和亚洲. 这时ASCII码就不合适了. 比如: 中文汉字有几万个. 而ASCII 多也就256个位置. 所以ASCII不行了. 怎么办呢? 这时, 不同的国家就提出了不同的编码用来适用于各自的语言环境. 比如, 中国的GBK, GB2312, BIG5, ISO-8859-1等等. 这时各个国家都可以使用计算机了.
GBK, 国标码占用2个字节. 对应ASCII码 GBK直接兼容. 因为计算机底层是用英⽂写的. 你不支持英文肯定不行. 而英文已经使用了了ASCII码. 所以GBK要兼容ASCII.
这⾥里GBK国标码. 前面的ASCII码部分. 由于使用两个字节. 所以对于ASCII码而言. 前9位都是0

字⺟母A:0100 0001        # ASCII 
字⺟母A:0000 0000 0100 0001 # 国标码
 

国标码的弊端: 只能中国用. 日本就垮了. 所以国标码不满足我们的使用. 这时提出了一个万国码Unicode.

unicode一 开始设计是每个字符两个字节. 设计完了. 发现我大中国汉字依然无法进行编码. 只能进行扩充. 扩充成32位也就是4个字节. 这回够了. 但是. 问题来了. 中国字9万多. 而unicode可以表⽰示40多亿. 根本用不了. 太浪费了. 于是乎, 就提出了新的

UTF编码.可变长度编码

UTF-8: 每个字符最少占8位. 每个字符占用的字节数不定.根据文字内容进行具体编码. 比如. 英⽂. 就一个字节就够了. 汉字占3个字节. 这时即满足了中文. 也满足了节约. 也是目前使用频率最高的一种编码

UTF-16: 每个字符最少占16位.

GBK: 每个字符占2个字节, 16位.

初识编码 

ASCLL   1967年

GB2312 1980年

Unicode 1991年

GBK       1995年

UYF-8     1992年

ascii

8bit 1byte(字节) 256个码位 只用到了7bit, 用到了前128个 最前面的一位是0
 中国人自己对计算机编码进行统计. 自己设计. 对ascii进行扩展 ANSI 16bit -> 清华同方 -> gbk

GBK

放的是中文编码. 16bit 2byte 兼容ascii

unicode

对所有编码进行统一.

 万国码. 32bit. 4byte. 够用了但是很浪费

 Unicode 升级 utf-8 utf-16 utf-32

Unicode的两该字节表示一个字符(偏僻字符需要4个字节)

utf-8

可变长度的unicode
英文: 1byte
欧洲文字: 2byte
中文: 3byte

生僻字4 - 6vyte

ASCLL编码与Unicode编码的区别:

ASCLL编码是1个字节,而Unicode编码通常2个字节

文本全用英文用Unicode编码比ASCLL编码需要多一倍的存储空间。

字节(byte)

8bit = 1byte

1024byte = 1KB

1024KB = 1MB

1024MB = 1GB

1024GB = 1TB

1024TB = 1PB

1024TB = 1EB

1024EB = 1ZB

1024ZB = 1YB

1024YB = 1NB

1. 初识python
        python是一门弱类型的解释型高级编程语言
        解释器:
            CPython  官方提供的默认解释器. c语言实现的
            PyPy 把python程序一次性进行编译.
            IPython

    2. python的版本
        2.x
        3.x

    3. 变量
        概念: 程序运行过程中产生的中间值. 暂时存储在内存, 方便后面的程序使用它
        就是一个符号.
        x = 10
        郝建 -> 沈腾
        白云 -> 宋丹丹

        命名规范:
            1. 数字, 字母, 下划线组成
            2. 不能是数字开头, 更不能是纯数字
            3. 不能用python的关键字
            4. 不要用中文
            5. 不要太长
            6. 有意义
            7. 区分大小写
            8. 用驼峰或者下划线

        数据类型:
            1. int 整数   +-*/%  //  **
            2. str 字符串,
                把字符连城串
                字符:单一的文字符号
                '', "", ''', """
                + 拼接. 要求两端都得是字符串
                * 重复 必须乘以一个数字
            3. bool 布尔值
                True
                False
                用来判断
        用户交互
            变量 = input(提示语)

        条件判断:
            if 条件:
                if-语句块


            if 条件:
                if-语句块
            else:
                else-语句块


            if 条件1:
                if-1
            elif 条件2:
                if-2
            ......
            else:

二. 作业
三. 今日主要内容
    1. while循环 (难点)
        while 条件:
            循环体(break, continue)

    2. 格式化输出 %s %d
        f"{变量}"

    3. 运算符 and or not  (难点)
        运算顺序: ()=> not  => and =>or

    4. 初识编码 gbk unicode utf-8
        1. ascii   8bit  1byte(字节)  256个码位 只用到了7bit, 用到了前128个 最前面的一位是0
        2. 中国人自己对计算机编码进行统计. 自己设计. 对ascii进行扩展 ANSI 16bit -> 清华同方 -> gbk
            GBK 放的是中文编码. 16bit  2byte 兼容ascii
        3. 对所有编码进行统一. unicode. 万国码.  32bit. 4byte. 够用了但是很浪费

        4. utf-8 可变长度的unicode
            英文: 1byte
            欧洲文字: 2byte
            中文: 3byte
    字节(byte)
    1byte = 8bit
    1kb = 1024byte
    1mb = 1024kb
    1gb = 1024mb
    1tb = 1024gb
    1pb = 1024tb
大概内容

 

作业

2.while,逻辑作业

 

posted @ 2019-02-24 14:10  等待の喵  阅读(617)  评论(0编辑  收藏  举报