第一章 Python初探

目录

一、python类别

 二、python编码

2.1 编码类型

2.1.1 ASCII编码

2.1.2 GB2312编码

2.1.3 GBK编码

2.1.4 ANSI(扩展的ASCII编码)

2.1.5 Unicode编码

2.2 python的编码问题

2.3 字符编码检测-chardet

2.4 判断是否是字符串-isinstance()

2.5 进制转换

2.5.1 bin( number ):

2.5.2 oct( number ):

2.5.3 hex(number ):

2.5.4 int():

三、python基础

3.1 help()

3.2 dir()

3.3 数据类型和变量

3.3.1 常量

3.3.2 整数、布尔类型、浮点数和复数

3.3.3 逻辑值、与或非

3.3.4 变量

3.3.5数据类型

3.3.6 基本数据类型间的转换

3.4 对象

3.5 保留字

3.6 物理行和逻辑行

3.7 单行注释和多行注释

3.8 原码、反码、补码

3.8.1 机器数

3.8.2 真值

3.8.3 原码

3.8.4 反码

3.8.5 补码

3.8.6 为何要使用原码, 反码和补码

3.9 运算符和表达式

3.9.1 算术运算符

3.9.2 比较运算符

3.9.3 赋值运算符

3.9.4 逻辑运算符

3.9.5 位运算符

3.9.6 成员运算符

3.9.7 身份运算符

3.9.8 运算符的优先级

3.9.9 operator包的应用

3.10 标准输入、标准输出和错误输出

3.10.1 标准输出

3.10.2 标准输入

3.10.3 错误输出

3.10.4 退出程序

3.11 random随机函数

3.12 浮点数计算之坑

3.12.1 decimal模块

四、课堂练习题

4.1 输入两个数,判断两个数是正数还是负数

4.2 找到列表中最大和第二大的值

4.3 随机生成一个10位数字;随机生成一个10位字母

4.4 生成3个数字、3个小写字母、3个大写字母

4.5 二进制与十进制互转


一、python类别

CPython、JPython、IronPython(为了和java,.net更好的调用,所以才有JPython、IronPython)

# 输出:AaBb...Zz
>>> result=""
>>> for i in range(26):
...     result += chr(65+i)+chr(97+i)
...
>>> print(result)
AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz
>>> import string
>>> dir(string)
['Formatter', 'Template', '_ChainMap', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_re', '_sentinel_dict', '_string', 'ascii_letters', 'ascii_lowercase', 'ascii_uppercase', 'capwords', 'digits', 'hexdigits', 'octdigits', 'printable', 'punctuation', 'whitespace']
>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.ascii_lowercase
'abcdefghijklmnopqrstuvwxyz'
>>> string.ascii_uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.digits
'0123456789'
>>> string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'

# 输出:ACEGIKMOQSUWY
>>> result =""
>>> for i in range(0,26,2):
...     result += chr(65+i)
...
>>> print(result)
ACEGIKMOQSUWY

# 输出:1a2b...26z
>>> result =""
>>> for i in range(26):
...     result += str(i+1)+chr(97+i)
...
>>> print(result)
1a2b3c4d5e6f7g8h9i10j11k12l13m14n15o16p17q18r19s20t21u22v23w24x25y26z

 二、python编码

2.1 编码类型

2.1.1 ASCII编码

美国信息交换标准代码(American Standard Code for Information Interchange,简称 ASCII)是一种用于信息交换的 美国标准 代码,它的作用是给 英文字母 、数字、标点、 字符 转换成计算机能识别的 二进制数 规定了一个大家都认可并遵守的标准。

2.1.2 GB2312编码

适用于汉字处理、汉字通信等系统之间的信息交换

2.1.3 GBK编码

是汉字编码标准之一,是在 GB2312-80 标准基础上的内码扩展规范,使用了双字节编码。

2.1.4 ANSI(扩展的ASCII编码)

与你使用的windows操作系统的语言有关系的,向windows 7 简体中文版就是GBK(用一个字节表示英文,用两个字节表示一个中文)。

2.1.5 Unicode编码

这是一种世界上所有字符的编码,但是它没有规定的存储方式。
Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。
现代操作系统和大多数编程语言都直接支持Unicode。 Unicode在内存中使用
2.1.6 UTF-8编码
是 Unicode Transformation Format - 8bit 的缩写, UTF-8 是 Unicode 的一种实现方式。它是可变长的编码方式,可以使用 1~4 个字节表示一个字符,可根据不同的符号而变化字节长度。 utf-8在文件传输和存储时使用

2.2 python的编码问题

2.2.1 Python2.7 版本
需要专门考虑中文字符的输出问题,字符串无法完全地支持国际字符集和Unicode编码,因为Python2中 普通字符串实际上就是已经编码(非Unicode)的字节字符串,即str类型,转化为unicode需要进行解码(decode)
2.2.2 Python3版本
所有的字符串默认已经是Unicode编码了,即unicode类型。如果你想使用非Unicode字符串,需要对字符串内容再做编码(encode),编码为你需要得编码格式,编码好的类型为 bytes 类型
总结一句话:
因为Unicode把所有语言都统一到一套编码里,所以Python3几乎已经不需要考虑中文等字符不兼容得问题
>>> s="中国"    # Unicode类型(默认类型),可以用于计算机内存中,不能用于文件存储和网络传输
>>> type(s)
<class 'str'>
>>> s=s.encode("utf-8") # 编码成bytes类型,可用于文件存储和网络传输
>>> type(s)
<class 'bytes'>
>>> s
b'\xe4\xb8\xad\xe5\x9b\xbd'
>>> s+"中国"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can't concat str to bytes
>>> s+s
b'\xe4\xb8\xad\xe5\x9b\xbd\xe4\xb8\xad\xe5\x9b\xbd'
>>> s=s+s
>>> s.decode("utf-8")
'中国中国'

# Unicode(str类型)===>encode()===>bytes类型
# bytes类型===>decode()===>Unicode(str类型)

>>> s="中国" # str类型
>>> s.decode("utf-8")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'?
>>> s.encode("utf-8")
b'\xe4\xb8\xad\xe5\x9b\xbd'
>>> s=s.encode("utf-8")
>>> s
b'\xe4\xb8\xad\xe5\x9b\xbd'
>>> s.encode("gbk")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'bytes' object has no attribute 'encode'. Did you mean: 'decode'?
>>> s.decode("utf-8")
'中国'

解决py文件中文乱码的问题:
1、把程序文件,保存为utf-8编码
2、程序文件头不声明编码,或者声明#encoding=utf-8

2.3 字符编码检测-chardet

注意: chardet检测时,被检测的字符必须足够多,过少的话会不准

C:\Users\asus>pip install chardet
Collecting chardet
  Downloading chardet-4.0.0-py2.py3-none-any.whl (178 kB)
     |████████████████████████████████| 178 kB 285 kB/s
Installing collected packages: chardet
Successfully installed chardet-4.0.0
>>> import chardet
>>> s="今天星期一,天气晴!"
>>> s=s.encode()
>>> s
b'\xe4\xbb\x8a\xe5\xa4\xa9\xe6\x98\x9f\xe6\x9c\x9f\xe4\xb8\x80\xef\xbc\x8c\xe5\xa4\xa9\xe6\xb0\x94\xe6\x99\xb4\xef\xbc\x81'
>>> chardet.detect(s)
{'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}

2.4 判断是否是字符串-isinstance()

>>> s="中国"
>>> s
'中国'
>>> isinstance(s,str)
True
>>> a=s.encode()
>>> isinstance(a,bytes)
True
>>> isinstance(a,str)
False

2.5 进制转换

2.5.1 bin( number ):

    内置函数,接收一个数字,可以是二进制数、八进制数、十进制数和十六进制数,返回以0b开头的二进制字符串表示

>>> bin(0b111)
'0b111'
>>> bin(111)
'0b1101111'
>>> bin(0o11)
'0b1001'
>>> bin(0xA1)
'0b10100001'
>>> type(bin)
<class 'builtin_function_or_method'>

2.5.2 oct( number ):

 内置函数,接收一个数字,可以是二进制数、八进制数、十进制数和十六进制数,返回以0o开头的八进制字符串表示

>>> type(oct)
<class 'builtin_function_or_method'>
>>> oct(0b1111)
'0o17'
>>> oct(0o167)
'0o167'
>>> oct(16)
'0o20'
>>> oct(0xFFF)
'0o7777'

2.5.3 hex(number ):

    内置函数,接收一个数字,可以是二进制数、八进制数、十进制数和十六进制数,返回以0x开头的十六进制字符串表示

>>> type(hex)
<class 'builtin_function_or_method'>
>>> hex(0b1001)
'0x9'
>>> hex(16)
'0x10'
>>> hex(15)
'0xf'
>>> hex(0o100)
'0x40'
>>> hex(0xAF11)
'0xaf11'

2.5.4 int():

 是一个,构造函数如下:

 int(x=0) -> integer

 int(x, base=10) -> integer

函数作用:把一个数字或者字符组转换为一个整数,

参数说明

如果没有指定任何参数返回的是数字0;

如果输入的是浮点数返回的只有整数部分,相当于向下取整;

如果给定了参数base那么x必须是字符串或bytes或bytearray instance ;

base有效的取值是0,或2-36,默认值是10,代表x是十进制;base为0表示x按照字面意思进行解析

>>> int(12.98)       #将浮点数向下取整
12
>>> int('0o10',base=0)  #0o代表八进制,此语句等价于int('0o10',base=8)
8
>>> int('10',base=0)    #默认为十进制,此语句等价于int('10',base=10)
10
>>> int('0b1010',base=0) #0b代表二进制,等价于int('0b1010',base=2)
10
>>> int('0x10',base=0)  #0o代表十六进制,等价于 int('0x10',base=16)
16
>>> int('0b1010',base=2)  #表示将二进制的0b1010转换成10进制数
10
>>> int(0b10)    #直接将输入的二进制转换为十进制数
2
>>> int(0o10)   #直接将输入的八进制转换为十进制数
8
>>> int(0x10)   #直接将输入的十六进制转换为十进制数
16
>>> int(10)     #返回的数据和输入的一致
10
>>> int('15',base=16)  #表示将16进制的0x15转换成10进制数
21
>>> int('15',base=8)   #表示将8进制的0o15转换成10进制数
13
>>> int('15',base=10)  #表示将10进制的15转换成10进制数
15
>>> int('15',base=2)   #将2进制的0x15转换成10进制数,二进制只有0、1,所以会抛出ValueError异常
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 2: '15'

十进制转二进制并进行加减运算:

>>> bin(3)+bin(2) #bin()返回的是字符串,直接相加的话相当于字符串的连接
'0b110b10' 
>>> int(bin(3),base=2)
3
>>> int(bin(3),base=2)+int(bin(2),base=2)
5
>>> bin(int(bin(3),base=2)+int(bin(2),base=2))
'0b101'
>>> a=9
>>> bin(a)
'0b1001'
>>> type(bin(a))
<class 'str'>
>>> bin(a)[2:]
'1001'
>>> "00"+bin(a)[2:]
'001001'
>>> bin(a)[2:].zfill(len(bin(9)))
'001001'
# 格式化字符
>>> "abc".zfill(8)
'00000abc'
>>> "abc".ljust(8,"*")
'abc*****'
>>> "abc".rjust(8,"*")
'*****abc'
>>> "abc".center(8,"*")
'**abc***'

三、python基础

3.1 help()

help 命令可以查看语句或对象的使用方法
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值