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

一、数据类型

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或者是序列中的空字符串、空列表、空元组。

在这里插入图片描述
布尔值可以用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允许用’’’…’’’ 的格式表示多行内容
在这里插入图片描述

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

输出结果如下:
在这里插入图片描述

空值

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

二、数据类型的转换

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

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

转换为整型int类型:

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

在这里插入图片描述

转换为浮点型float类型:

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

在这里插入图片描述
转换为布尔值布尔类型:

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个字节

字符ASCIIUnicodeUTF-8
A0100000100000000 0100000101000001
x01001110 0010110111100100 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 %
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值