4.20 python 学习
廖雪峰python教程
python数据类型
- 整数 interger
- 浮点数 float
- 字符串 string
' '和'' ''是一种表示方式,不属于字符串的一部分。字符串内部既包含''又包含'
需要用转义符——\ 进行标识
例如: print('I\'m, "\ok\"!')
\n表示换行
\t表示制表符
\表示\本身,r' '表示引号内部的内容不转义
例如:
\\\\n\\n\\```
```'''多行内容'''```
* 布尔值
一个布尔值只有两种值**Ture**,**False**,也就是1和0。
三种运算:**and**,**or**,**not**
* 空值 none
* 变量
1. 变量名必须是大小写字母,数字,'_'组成,且不能由数字开头。
2. python是动态语言。不像静态语言,在定义变量时必须指定变量类型。
* 常量
Python中,通常用全部大写的变量名表示常量。这仅是一个惯例。
三种除法:
* / 浮点除,精确到小数点后面几位。
* // 地板除,只保留整数部分,结果是整数。
* % 取余,结果是整数。
####字符串编码
字符串也是可以一种**数据类型**,但因计算机**只能对数字进行运算**,就需要将字符串转换为计算机可以识别的数字。
为解决不同语言类型字符串不同的问题,引入统一的字符串编码:**Unicode**
**为了节约空间**把Unicode编码变成**可变长编码——UTF-8编码**:把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。
ASCII编码实际上可以被看成是UTF-8编码的一部分。
ASCII编码,Unicode编码,UTF-8编码三者在实际应用中的关系:
**计算机内存中**:统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。
**记事本编辑的时**:从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件
**浏览网页的时**:服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器。(网页的源码上会有类似的信息,表示该网页正是用的UTF-8编码)。
####字符串
```ord('A') #获取字符的整数表示
65
chr('66')#把编码转换成对应的字符
'B'```
网络上传输,或保存到磁盘,需要把str变为以字节为单位的bytes
Python对bytes类型的数据用带b前缀的单引号或双引号表示:x=b'ABC'
```'ABC'.encode('ascii') #将字符str编码成指定的bytes
b'ABC'
b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
'中文'```
注意:纯英文的str可以用ASCII编码为bytes;含有中文的str可以用UTF-8编码为bytes;含有中文的str无法用ASCII编码,因为中文编码的范围超过了ASCII编码的范围。
**len()**:计算字符串中有多少个字符
1个中文字符经过UTF-8编码后通常会占用3个字节,而1个英文字符只占用1个字节;避免乱码,应始终坚持用UTF-8编码对str和bytes进行转换。
保存源代码时,就需要务必指定保存为UTF-8编码,并加上:
```#!/usr/bin/env python3
# -*- coding: utf-8 -*-```
确保按照UTF-8编码进行读取源代码
####格式化
```'%.2f' % 3.1415926
'3.14'```
**此格式化不是通常理解的格式化——删除数据,而应该理解为程式化,进行简便的程式化的输出。**
%运算符用来格式化字符串。%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略。
常见的占位符:**%d 整数**、**%f 浮点数**、**%s 字符串**、**%x 十六进制整数**
单独表示%,需要转义,用两个%%表示。
练习题:小明的成绩从去年的72分提升到了今年的85分,请计算小明成绩提升的百分点,并用字符串格式化显示出'xx.x%',只保留小数点后1位:
**代码**
```rl = input('小明去年的成绩:')
rt = input('小明今年的成绩:')
r = ((int(rt) - int(rl))/int(rl))*100
print('小明今年成绩提升百分比:%.1f %%' % r)```
**结果**
小明去年的成绩:72
小明今年的成绩:85
小明今年成绩提升百分比:18.1 %