欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

课程笔记--002(数据类型、命名规则、运算、字符)

程序员文章站 2022-03-02 15:40:43
...

一、数据类型

Python3 中有六个标准的数据类型:
●Numbers(数字类型)
●Strings(字符串类型)
●Lists(列表类型)
●Tuples(元组类型)
●Dictionaries(字典类型)
●Sets(集合类型)

Python内置的数字类型有整型(Integers)、浮点型(Floating point numbers)和复数(Complex numbers)三种,作为可以进行算术运算等的数据类型。

整数

Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x 前缀和0-9,a-f表示如: 0xff00 , 0xa5b4c3d2
0b开始的是二进制(binary),0o开始的是八进制(octonary)

0x9+0x1 
# 输出结果为10,意思是十六进制的9与十六进制的1相加,结果为十六进制的10,但此处输出的为十进制的10,在十六进制中,用a来表示十进制的10
0xa
# 输出结果为10
0xa+0x1 # 输出11
#十六进制的10与十六进制的1相加,结果为十六进制的b,输出十进制结果也就为11

布尔值

一个布尔值只有True 、False 两种值
布尔值是整型(Integers)的子类,用于逻辑判断真(True)或假(False),用数值1和0分别代表常量True和False。

在Python语言中,False可以是数值为0、对象为None或者是序列中的空字符串、空列表、空元组。

课程笔记--002(数据类型、命名规则、运算、字符)
布尔值可以用and 、or 和not 运算。

5 > 3 and 3 > 1 # True
5 > 3 or 1 > 3  # True
not 1 > 2 # True

浮点数

浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的1.23e9 ,或者12.3e8 ,0.000012可以写成1.2e-5
Python的浮点型执行IEEE754双精度标准,8个字节一个浮点。101010000001000…0100

复数型(Complex)

复数类型(Complex)由实数和虚数组成a+bj,用于复数的表示,虚数部分需加上j或J,如:-1j、0j,1.0j。
Python的复数类型是其他语言一般没有的。

(3+4j)+(5+7j)
# 输出(8+11j)

字符串

字符串是以单引号’ 或双引号" 括起来的任意文本,比如’abc’ , “xyz” 等等。

如果字符串内部既包含’ 又包含" 怎么办?可以用转义字符\ 来标识,‘I’m “OK”!’

转义字符\ 可以转义很多字符,比如\n 表示换行, \t 表示制表符,字符\ 本身也要转义,所以\ 表示的字符就是\

如果字符串里面有很多字符都需要转义,就需要加很多\ ,为了简化,Python还允许用r’‘表示’‘内部的字符串默认不转义,如果字符串内部有很多换行,用\n 写在一行里不好阅读,为了简化,Python允许用’’’…’’’ 的格式表示多行内容
课程笔记--002(数据类型、命名规则、运算、字符)

print('I\'m ok.')
print('I\'m learning\nPython.')
print('\\\t\\')
print(r'\\\t\\')
print('''line1
line2
line3''')

输出结果如下:
课程笔记--002(数据类型、命名规则、运算、字符)

空值

空值是Python里一个特殊的值,用None 表示。None 不能理解为0 ,因为0 是有意义的,而None 是一个特殊的空值。
此外,Python还提供了列表、字典等多种数据类型,还允许创建自定义数据类型。

二、数据类型的转换

type()函数是内建的用来查看变量类型的函数,调用它可以简单的查看数据类型,基本用法:

type(对象) #对象即为需要查看类型的对象或数据,通过返回值返回相应的类型,

转换为整型int类型:

int(x [,base])
# int()函数将x转换为一个整数,x为字符串或数字,base进制数,默认为十进制

课程笔记--002(数据类型、命名规则、运算、字符)

转换为浮点型float类型:

 float(x)
# float()函数将x转换为一个浮点数,x为字符串或数字,没有参数的时默认返回0.0。

课程笔记--002(数据类型、命名规则、运算、字符)
转换为布尔值布尔类型:

bool(x)
# bool() 函数用于把给定参数转换为布尔类型,返回值为True或者False,在没有参数的情况下默认返回 False。
bool()  #空置转布尔类型
 #返回结果False 
bool(0) #整数0转布尔值
#返回结果False
bool(1)  #整数1转布尔值
 #返回结果True
 bool(100) #整数100转布尔值
#返回结果True

三、变量命名规则

●名称第一字符为英文字母或者下划线
●名称第一字符后可以使用英文字母、下划线和数字
●名称不能使用python的关键字或保留字符
●名称区分大小写,单词与单词之间使用下划线连接

a = 1
t_007 = ‘T007’
Answer = True

等号= 是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量。
这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。
静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语言
理解变量在计算机内存中的表示也非常重要

a = ‘ABC’

Python解释器干了两件事情:
1. 在内存中创建了一个'ABC' 的字符串;
2. 在内存中创建了一个名为a 的变量,并把它指向'ABC' 。
也可以把一个变量a赋值给另一个变量b,这个操作实际上是把变量b指向变量a所指向的数据,
a = 'ABC'
b = a
a = 'XYZ'
print(b) # ABC
print(a) # XYZ

四、运算

算术运算

算术运算符主要是用于数字类型的数据基本运算,Python支持直接进行计算,也就是可以将python shell当计算器来使用。

+ 加 - 两个对象相加 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.0//2.0 输出结果 4.0

a=10
b=20

a+b  # 输出30
a-b  # 输出-10
a*b  # 输出200
b/a  #  输出2
b%a  # 输出0
a**b # 输出100000000000000000000
9//2 # 输出 4
9.0//2.0  # 输出 4.0

赋值运算

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

逻辑运算

Python语言支持逻辑运算符,以下假设变量 a 为 10, b为 20:

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

a=10
b=20
a and b # 返回20
a or b  #返回10
not(a and b)  # 返回False

成员运算

除了以上的一些运算符之外,Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。

in — 如果在指定的序列中找到值返回 True,否则返回 False。 x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in — 如果在指定的序列中没有找到值返回 True,否则返回 False。 x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。

a=[1,2,3,4,5]
b=4
c = 6
b in a # 输出True
b not in a # 输出False
c in a # 输出False
c not in a # 输出True

身份运算

身份运算符用于比较两个对象的存储单元

is — is 是判断两个标识符是不是引用自一个对象 x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False
is not — is not 是判断两个标识符是不是引用自不同对象 x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。

Python运算符优先级

**	    指数           (最高优先级)
~ + -	    按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
* / % //	乘,除,取模和取整除
+ -	    加法减法
>> <<	    右移,左移运算符
&'AND'
^ |	    位运算符
<= < > >=	比较运算符
<> == !=	等于运算符
= %= /= //= -= += *= **=	赋值运算符
isis not	身份运算符
innot in	成员运算符
not or and	逻辑运算符   (最低优先级)

五、字符

字符串和编码

ASCII编码是1个字节,而Unicode编码通常是2个字节,中、日、韩的三种文字占用了Unicode中0x3000到0x9FFF的部分

字母A 用ASCII编码是十进制的65 ,二进制的01000001 ;
字符0 用ASCII编码是十进制的48 ,二进制的00110000 ,注意字符'0' 和整数0 是不同的;
汉字'中'已经超出了ASCII编码的范围,用Unicode编码是十进制的20013 ,二进制的01001110 00101101 。
把ASCII编码的A 用Unicode编码,只需要在前面补0就可以,因此, A 的Unicode编码是00000000 01000001 。

UTF-8编码(8-bit Unicode Transformation Format,又称万国码)把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节

字符 ASCII Unicode UTF-8
A 01000001 00000000 01000001 01000001
x 01001110 00101101 11100100 10111000 10101101

对于单个字符的编码,Python提供了ord() 函数获取字符的整数表示, chr() 函数把编码转换为对应的字符:

x1=ord('A')    #x=65
x2=ord('中')   #x=20013
x3=chr(66)     #x='B'
x4=chr(25991)  #x='文'
print("ord('A')= ", x1)

字符串的长度

纯英文的str 可以用ASCII 编码为bytes ,内容是一样的,含有中文的str 可以用UTF-8 编码为bytes 。要计算str 包含多少个字符,可以用len() 函数

x=len('ABC') # 输出3
x=len('中文') # 输出2

len() 函数计算的是str 的字符数,如果换成bytes , len() 函数就计算字节数。

由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码,如果.py 文件本身使用UTF-8编码,并且也申明了# -- coding: utf-8 -- ,打开命令提示符测试就可以正常显示中文

字符串的连接

字符串的连接是指将多个字符串连接在一起组成一个新的字符串。例如:

sample_str2 = 'Jack', 'is', 'a', 'Python', 'fan'
sample_str2
# 输出 ('Jack', 'is', 'a', 'Python', 'fan')

当字符串之间没有任何连接符时,这些字符串会直接连接在一起,组成新的字符串。

sample_str3 = 'Jack''is''a''Python''fan'
sample_str3
# 输出JackisaPythonfan

字符串之间用’+’号连接时,也会出现同样的效果,这些字符串将连接在一起,组成一个新的字符串。

sample_str4 = 'Jack'+ 'is'+ 'a'+ 'Python'+ 'fan'
sample_str4
# 输出'JackisaPythonfan'

用字符串与正整数进行乘法运算时,相当于创建对应次数的字符串,最后组成一个新的字符串。

sample_str5 = 'Jack'*3               #重复创建相应的字符串
 print(sample_str5)
# 输出 JackJackJack

注意:字符串直接以空格隔开的时候,该字符串会组成元组类型。

字符串的包含判断

字符串是字符的有序集合,因此用in操作来判断指定的字符是否存在包含关系。如:

sample_str7 = 'Python'
print('a' in sample_str7)            #字符串中不存在包含关系
print('Py' in sample_str7)           #字符串中存在包含关系
# 运行结果如下:False True

格式化 (占位符/格式化输出)

在Python中,采用的格式化方式和C语言是一致的,用% 实现:

s1='Hello, %s' % 'world'  
s2='Hi, %s, you have $%d.' % ('Michael', 1000000)  
print(s1)    # Hello, world
print(s2)  # Hi, Michael, you have $1000000.

% 运算符就是用来格式化字符串的。在字符串内部, %s 表示用字符串替换, %d 表示用整数替换,有几个%? 占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%? ,括号可以省略。

常见的占位符有:

占位符 替换内容
%d 整数
%f 浮点数
%s 字符串
%x 十六进制整数

其中,格式化整数和浮点数还可以指定是否补0和整数与小数的位数:

x='Age: %s. Gender: %s' % (25, True)  
print(x) #输出 Age: 25. Gender: True
print('%2d-%02d' % (3, 1))    # 3-01
print('%.2f' % 3.1415926)     #3.14

如果你不太确定应该用什么, %s 永远起作用,它会把任何数据类型转换为字符串

x='growth rate: %d %%' % 7    
# 字符串里面的% 是一个普通字符,这个时候就需要转义,用%% 来表示一个%
print(x) # growth rate: 7 %