1. 目录

    2.1数据类型

    2.1.1整数

    2.1.2 浮点数

    2.1.3 字符串

    2.1.4 布尔值

    2.1.5 空值

    2.1.6 变量

    2.1.7 常量

    2.2字符串和编码

    2.2.1 字符编码

    2.2.2 python的字符串

    2.2.3 格式化

    2.3 使用list和tuple

    2.3.1 list

    2.3.2 tuple

    2.4 条件判断

    2.5 循环

    2.5.1 for循环

    2.5.2 while循环

    2.5.3 break

    2.5.4 continue

    2.6 使用dict和set

    2.6.1 dict

    2.6.2 set


     python基础

2.1数据类型

在python中可以直接处理的数据类型有以下几种:整数、浮点数、字符串、布尔值、空值、变量、常量。

2.1.1整数

python可以处理任意大小的整数,用16进制表示时用0x前缀和0-9,a-f表示,python当中内置了整数和二进制,八进制以及16进制的转换函数。当在python中将整数转换成二进制,八进制和16进制表示时。

data = 156
print(bin(data))
print(oct(data))
print(hex(data))

从上到下依次是二进制,八进制和十六进制的表示方法

当要将二进制,八进制和十六机制转换成整数时:

num1 = "10011100"
num2 = "234"
num3 = "9c"print(int(num1,2))
print(int(num2,8))
print(int(num3,16))

从上到下依次是二进制,八进制和十六进制。

2.1.2 浮点数

浮点数就是小数,对于很大或者很小的浮点数,就必须用科学计数法表示,用e替换10,比如1.23*109就是1.23e9.

整数和浮点数在计算机内部的储存方式是不一样的,整数永远是精确的,而浮点数存在四舍五入的误差

2.1.3 字符串

字符串指的是以单引号或者双引号括起来的任意文本,单引号和双引号本身是一种表示方式而不是字符串的一部分。如果单引号本身是一个字符,那么可以用双引号括起来。如果在一个文本中同时包含单引号和双引号就需要用\进行转义。

print("I'm, OK!")
print('I am "OK!"')
print('I\'m, \"OK!\" ')

从上到下依次是文本中含有单引号、双引号以及文本中同时含有单引号和双引号。转义字符\可以转义很多字符,例如\n表示换行,\t表示制表,同时字符\本身也需要转义,也就是说\\表示的是\。

print('\\')
print('learning \npython')
print('learning\tpython')

为了简化操作,python中允许用r’’,此时’’中的字符不表示任何转义。同时对于换行,如果有多个字符需要换行允许使用’’’  ’’’进行表示。如果在’’’  ’’’操作之前加上r,此时换行仍然生效。

print(r'learning\tpython')
print('''learn
python
123''')
print(r'''learn
python
123''')

可以看出,当在单引号前加上r之后,\t的制表效果就取消了。

2.1.4 布尔值

布尔值和布尔代数的表示完全一致,一个布尔值只有True和False两种表示方式,也可以通过布尔运算计算出布尔值。

print(3>5)

输出结果为False

布尔值可以用and,or和not运算,and运算是与运算,只有所有的结果都为True输出结果才是True。

# and运算
print(True and True)
print(True and False)
print(False and False)
print(3>5 and 5>3)

从上到下的输出结果依次是True,False,False,False

布尔值的or运算是或运算,只有有一个结果是True,输出结果就是True

# or运算
print(True or True)
print(True or False)
print(False or False)
print(3>5 or 5>3)

从上到下的输出结果依次是True,True,False,True

布尔值的not运算是非运算,是把True变成False

# not运算
print(not True)
print(not False)
print(not 3>5)

从上到下的输出结果依次是False,True,True

布尔值运算经常运用在条件判断中,

age=50
if age>=18:print('adult')
else:print('teenager')

此时输出结果adult。

2.1.5 空值

空值用None表示,空值不是0,0在python中是有意义的,而None是一个特殊的空值。

2.1.6 变量

变量不仅可以是数字,还可以是任意数据类型。变量在程序中是用变量名表示,变量名可以用任意的英文字母以及英文字符和数字表示但是不能用数字开头。在python中=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量。

a = 123 # a是整数
print(a)
a = 'ABC' # a变为字符串
print(a)

2.1.7 常量

常量就是不能变的变量,在Python中通常用全部大写的变量名表示常量。全部大写的变量名只是一个习惯上的用法,并没有特殊意义,你可以用任何字母表示常量。

在python中,除法也是精确的,python中存在两种除法,一种是/,另外一种是//。其中/的计算结果是浮点数,即使两个数可以整除,最后的结果也是浮点数。

print(10/3)
print(9/3)

这两个的输出结果都是浮点数。

//的计算结果是整数,即使两个数不能整除,最后的结果也是整数

print(10//3)
print(9//3)

这两个的输出结果都是整数3,而不是3.0。

2.2字符串和编码

2.2.1 字符编码

计算机只能处理数字,不能处理文本,如果要处理文本就需要先把文本转换成数字才能处理,最早的计算机设计时,采用8个bit作为一个字节,一个字节能表示的最大整数就是255,最早只有127个字符被编码到计算中,其中包含大小写英文字母以及数字和一些符号,这个编码被称为ASCII编码。

但是如果要处理中文显然一个字符是不够用的,为了不与ASCII编码产生冲突,中国制定了GB2312编码用来处理中文。然而,全世界的语言有上百种,因此各种不同的编码不可避免的会产生冲突。这种结果就是在有多种语言的文本中会产生乱码。

为了解决这种乱码现象,Unicode字符集产生了,把所有语言都统一到一套编码里,这样就不会产生乱码问题。ASCII编码是1个字节,而Unicode编码通常是两个字节。然而,如果文本中都是英文,那么Unicode编码则比ASCII编码多一倍存储空间。

为了节约空间,出现了把Unicode编码转换为可变长编码的UTF-8编码。UTF-8编码把一个Unicode字符根据不同数字大小编码成1-6个字节,英文字母被编码成一个字节,汉字通常是3个字节,只有很生僻的字符才会编码成4-6个字节。

在计算机内存中,统一使用Unicode编码,当需要保存的时候,转换成UTF-8编码,当需要读取的时候再转换成Unicode编码。

浏览网页时,服务器会把动态生成的Unicode编码内容转换成UTF-8编码再进行传输。

2.2.2 python的字符串

Python中的字符串是以Unicode编码的,python支持多种语言。python中提供了ord函数来获取字符的函数表示,chr函数把编码转换成对应的字符。在Pycharm中的具体表现为

print('今年18岁')
print(ord('A'))
print(ord('中'))
print(chr(65))
print(chr(20013))

python中的字符串类型是str,在内存中以Unicode编码保存,一个字符对应若干个字节。如果字符要在网络上传输,或者保存到磁盘上,就需要把str变为以字节为单位的bytes。

以Unicode表示的str通过encode()方法可以将编码转换为指定的bytes。纯英文的str可以用ASCII转换为指定的bytes。但是含有中文的str只能用UTF-8编码表示而不能用ASCII,会报错。python中对于bytes类型的数据用带b前缀的单引号或者双引号表示。在pycharm中的体现如下:

# encode函数,str转换成bytes
print('ABC'.encode('ascii'))
print('中文'.encode('utf-8'))

输出结果是以b为前缀的字符串,输出结果如下。

为了将str类型的字符串存入到硬盘或者磁盘中,将字符串转换成bytes类型,如果我们要从硬盘中读取字符串就需要将bytes格式的文件转换成str类型,这个时候就用到了decode函数。

# decode函数,bytes转换成str
print(b'ABC'.decode('utf-8'))
print(b'ABC'.decode('ascii'))
print(b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8'))

同样的,英文可以使用UTF-8和ASCII,而中文只能使用UTF-8。

如果在bytes编码中混入了一小部分无效的编码,可以使用errors=ignore忽略掉错误的字节。在pycharm中的具体表现如下:

print(b'\xe4\xb8\xad\xe6\x96\x87\xff'.decode('utf-8',errors='ignore'))

最后一段\xff属于无效编码,加入errors之后仍然可以正确输出。

如果需要计算str中的字符数或者bytes类型中的字节数,就需要使用len()函数。

# len函数计算str字符数
print(len('ABC'))
print(len('中文'))# len函数计算bytes字节数
print(len(b'ABC'))
print(len(b'\xe4\xb8\xad\xe6\x96\x87'))
print(len('中文'.encode('utf-8')))
print(len('ABC'.encode('ascii')))

通常一个英文字符占一个字节,而一个中文字符占三个字节。为了避免str和bytes在转换过程中产生乱码,我们一般统一采用UTF-8编码。

2.2.3 格式化

如果我们输入的内容是根据变量变化的,那么就需要一种简便的格式化字符串的方式,在python中通常用%格式化字符串。

占位符

替换内容

%d

整数

%f

浮点数

%s

字符串

%x

十六进制整数

格式化整数和浮点数还可以指定是否补0和整数与小数的位数,pycharm中的体现如下。

print('hello %s' %'world')# 格式化整数和浮点数
print('%d-%02d' % (3, 1))
print('%.2f' % 3.1415926)

如果不确定用什么,%s永远起作用,可以把任何数据类型转换为字符串。如果%是字符串中的一个字符,那么就需要通过%进行转义,即%%表示字符%。

print('Age: %s. Gender: %s' % (25, True))
print('growth rate: %d %%' % 7)

format()是另外一种格式化字符串的方式。依次传入参数替换字符串中的占位符{0},{1}等等。

# format格式化字符串
print('Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125))

最后一种格式化字符串的方式是f-string。与其他格式化字符串的方式不同,f-string是以变量进行替换。

# f-string格式化字符串
r = 2.5
s = 3.14 * r ** 2
print(f'The area of a circle with radius {r} is {s:.2f}')

2.3 使用list和tuple

2.3.1 list

list是一种有序的集合,可以随时添加和删除其中的元素。在pycharm中的具体体现如下,

math = ['01','02','03']
print(math)

变量math就是一个list,可以使用len函数来获得list中的元素个数。

print(len(math))

可以用索引来访问list中每一个位置的元素,正序的索引是从0开始的,也可以直接访问最后一个元素,用-1表示。

print(math[0],math[1],math[2])
print(math[-1],math[-2],math[-3])

list是一个可变的有序列表,因此可以在列表中的任意位置插入元素,通过append可以直接在列表末尾插入元素,insert操作可以在列表的任意位置插入元素,在pycharm中的具体体现如下:

# 在列表中插入元素
math.append('04')
print(math)math.insert(0,'00')
print(math)

在列表中可以插入元素,那么也就可以删除元素,通过pop操作可以删除列表中任意一个元素。pop操作可以直接删除列表中最后一个元素,也可以通过pop(i)删除列表中的指定元素。

# 在列表中删除元素
math.pop()
print(math)math.pop(0)
print(math)

如果需要替换列表中的某个元素,那么可以直接进行赋值替换。

# 替换列表中的元素
math[0] = '00'
print(math)

列表中的元素可以是不同类型的字符,同时,列表中的元素也可以是一个列表

# 不同元素的列表
math2 = ['one',123,True]
print(math2)# 列表中的元素是列表
s = [1,[2,3],4]
print[s]

同时,可以读取列表中第二个列表中的任意元素。

# 提取列表中第二个列表的第一个元素
print(s[1][0])

2.3.2 tuple

tuple是一个元组,tuple和list非常类似,但是tuple一旦初始化之后就不能对元素进行修改。

math = ('00','01','02')
print(math)

因为tuple不能修改元素,所以不存append和insert操作,也不能通过赋值对tuple中的元素进行修改。

如果要定义一个只含有一个元素的tuple,要在这一个元素之后添加一个逗号,来表示定义的是一个元素,因为()既可以表示tuple也可以表示数学公式,为了防止歧义,需要在元素之后添加一个逗号。

# 定义一个只有一个元素的tuple
math = (1,)
print(math)

tuple中的元素不能改变,但是如果在tuple中存在一个列表,那么这个列表中的元素是可变的,仍然可以通过赋值来修改元素。这个时候list中的操作仍然有效。

# 可变的tuple
t = ('a', 'b', ['A', 'B'])
t[2][0] = 'X'
t[2][1] = 'Y'print(t)p = [0,1,2]
t = ('a', 'b', p)p.append(3)
p.insert(0,4)
print(t)

2.4 条件判断

在python中通过if语句来执行判断操作,这个操作在大部分的语言中应该都是一样的吧。

i = 18if i>10:print('i比10大')
else:print('i比10小')

如果有多个判断条件的时候,通过elif来执行,最后一个条件才用else。

m=10if 1<m<9:print('i比9小')
elif 15>m>=10:print('i比15小')
else:print('i比15大')

python中的条件判断是从上往下执行,如果满足了第一个if条件,会自动忽略之后的elif和else。

n=10if n>8:print(123)
elif n>6:print(456)
else:print(789)

此时输出的就是123而不是456。这时候就是只执行了第一个if判断条件,而忽略了elif和else。

if的判断条件可以简写,只要x的输入是非零数值,非空字符串,非空list等就判断为true.

x=123
if x:print('True')

结合第一章中提到的input函数可以使程序更加完整,但是input函数输入的是str字符串,字符串不能直接与整数进行比较,python中提供了int函数将str字符串转换成整数。

m = input('请输入年龄:')
age = int(m)if age>18:print('呵,老男人')
else:print('呵,细狗')

2.5 循环

2.5.1 for循环

python中提供了两种循环方式,一种是for.... in....循环,把list或者tuple中的元素依次打印出来。

math = [0,1,2,3]for i in math:print(i)

如果我们想要通过for循环来实现1-10的整数之和,那么可以通过sum变量进行累加操作。

# 计算1-10的整数之和
sum= 0
for i in [1,2,3,4,5,6,7,8,9,10]:sum = sum + iprint(sum)
print(sum)

这里注意print的缩进,如果在for之中,那么会输出累加的详细过程,每一个步骤的数据,在for循环之外,那么就会输出最后的结果55。

这种累加的方式比较麻烦,如果要计算1-100的整数和,那我们还需要手动输入1-100所有的整数。python中提供了range函数来解决这个问题。range表示所有小于5的整数,通过list函数转换成列表

# 通过range函数生成小于5的所有整数
print(list(range(5)))
print(tuple(range(5)))

通过range函数可以实现1-100的整数和求解。

# 实现1-100的整数和
sum= 0for x in range(101):sum = sum+x
print(sum)

2.5.2 while循环

除了for循环,python中第二种循环方式就是while循环,只要满足条件就一直循环,直到不再满足条件的时候就跳出循环。

# while循环实现一百以内的奇数和
sum = 0
n = 99
while n >0:sum=sum+nn= n-2
print(sum)

while同样可以与第一章中提到的input函数结合。

# 实现任意的奇数相加
sum= 0
n = input('请输入数字')
m = int(n)
while m >0:sum=sum+mm= m-2
print(sum)

2.5.3 break

在循环过程中,如果需要提前结束循环,可以通过break操作,提前跳出循环。

# break跳出循环
n = 1
while n <= 100:if n > 10: # 当n = 11时,条件满足,执行break语句break # break语句会结束当前循环print(n)n = n + 1
print('END')

2.5.4 continue

通过continue操作可以跳过当前的循环,直接进行下一次循环。

# continue进行下一次循环n = 0
while n < 10:n = n + 1if n % 2 == 0: # 如果n是偶数,执行continue语句continue # continue语句会直接继续下一轮循环,后续的print()语句不会执行print(n)

2.6 使用dict和set

2.6.1 dict

Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。

如果我们需要实现一个根据名字查找年龄的操作,可以通过dict实现。

# dict实现名字与年龄对应
d = {'li':18,'liu':38,'hu':58}
print(d['li'])

除了初始化的时候将数据放入dict,还可以通过key放入,也就是进行赋值操作。

d['Adam'] = 67
print(d['Adam'])

一个词只能对应一个值,如果多次赋值的话,只会保存最后一次的赋值。如果输入了一个不存在的词,则会报错。要判断在字典里是否存在这个词,有两种验证方式,一种是通过in,另一种是通过d.get()

# 判断Key是否存在
print('cao' in d)
print(d.get('cao'))
print(d.get('cao',-1))

要删除一个key同样可以使用pop操作,对应的value也会被从dict中删除。

# 删除dict中的元素
d.pop('Adam')
print(d)

相较于list,dict要占用更多的空间,但是它的查询速度更快。dict的key必须是不可变对象。

2.6.2 set

set与dict类似,也是一组key的集合,但是set中不包含value。key不能重复,所以在set中没有重复的元素。要创建一个set需要一个list作为输入。

# 创建一个set
s = set([1,2,3])
print(s)

重复的元素将会被自动过滤,不会输出。这个结果仍然是{1,2,3}

# set中重复的元素是无效的
m = set([1,2,2,3,3])
print(m)

可以通过add(key)和remove(key)来增加或者删除set中的元素,当然重复添加的元素是无效的。

# 添加元素
s.add(4)
print(s)# 删除元素
s.remove(4)
print(s)

set可以看作是一个无序的无重复的数学集合,两个set可以做数学意义上并集和交集操作。&是交集的表示,|表示并集。

# set交并集
s1= set([1,2,3])
s2= set([2,3,4])
print(s1&s2)
print(s1|s2)p=[1,2,3]
s3=set(p)
print(s3)

廖雪峰python教程---pycharm版之二相关推荐

  1. Python 3 学习(一)—— 基础:廖雪峰 Python 教程学习笔记

    文章目录 Python教程 值类型和引用类型 列表和字典的基本操作 列表 元组 字典 Set 函数 内置函数 定义函数 空函数 参数检查 定义默认参数要牢记一点:默认参数必须指向不变对象! Pytho ...

  2. 廖雪峰python教程视频-为什么看不懂廖雪峰的Python学习教程?

    廖雪峰的Python教程已经很友好了,接近于把饭喂到嘴边了. 这不是廖雪峰教程的问题,而是一个基础代码技能和实际应用需求的代码技能差距太远导致的. 如果是新手,只学会了廖雪峰Python教程,那约等于 ...

  3. 廖雪峰python教程完整版-为什么看不懂廖雪峰的Python学习教程?

    廖雪峰的Python教程已经很友好了,接近于把饭喂到嘴边了. 这不是廖雪峰教程的问题,而是一个基础代码技能和实际应用需求的代码技能差距太远导致的. 如果是新手,只学会了廖雪峰Python教程,那约等于 ...

  4. 廖雪峰Python教程-笔记

    廖雪峰Python教程 学习范围: Python基础 函数 高级特性 函数性编程 模块 面向对象编程 错误,调试和测试 IO编程 笔记: Python的整数没有大小限制 Python 3的字符串使用U ...

  5. 廖雪峰python教程在哪看_:廖雪峰python教程在哪

    标签,你可以自己查看网页源代码. 廖雪峰的python教程有一点地方没看明白,求指导 题主贴了函数,似乎是一样的,就分析这一个版本:def add_end(L=None): if L is None: ...

  6. 廖雪峰Python教程 实战day05

    廖雪峰Python教程 实战day05 1. Web程序工作流程 本文部分文字内容.图片摘自<Flask Web开发实战:入门.进阶与原理解析>,作者李辉. 在编写自己的Web框架之前,首 ...

  7. 会python再学java要多久_【学过python多久能学会java】廖雪峰python教程要学多久

    自学完廖雪峰python可以找到相关工作吗? 如果只是学完廖雪峰的教程我觉得是不够的,你必须对一些方面有更加深入的实践和学习.我是工作中需要用到python,看了廖雪峰的教程,实现快速开发. 学过py ...

  8. 廖雪峰python教程笔记:装饰器

    这是看廖老师python教程的第一个的笔记,因为这是这份教程最难的章节之一,我来来回回看了三遍,终于有所突破,写在这里是为了巩固自己的理解,同时也是希望有错的地方能够得到指正.具体内容见廖雪峰老师的课 ...

  9. python入门到精通需要学多久-廖雪峰python教程要学多久-零基础学Python需要多久...

    零基础学python大约需要多久 看不同的人,不同的学习能和基础. 像我通java,vc ,javascript,groovy,vb,c 接触过c#,delphi,asp,E语言, 用过dreamwa ...

最新文章

  1. DataFrame 删除与增减行列
  2. 【Python基础】这份 pip 使用小抄,要有全有多全(建议收藏)
  3. NavigationController 已经洗干净了, 就等你来
  4. JAVA取钱多线程实验_JAVA多线程----用--取钱问题2
  5. python中的类属性和实例属性
  6. 霍金首次公开24岁时博士论文 把剑桥的服务器搞瘫痪了……
  7. 一串字符串转换为ascii_将ASCII字符串(char [])转换为C中的BYTE数组
  8. DynamicFusion: Reconstruction and Tracking of Non-rigid scenes in real-time
  9. Hive map阶段缓慢,优化过程详细分析
  10. 练字在现代社会的意义还大不大,尤其是电脑普及的情况下,花费大量的时间去练字还值得么?
  11. iconfont 图标不生效
  12. 第三届中医药文化传承与技能发展大会召开助推中医药文化传承创新
  13. Python|用turtle画笔画爱心
  14. JS 用时间戳计算两个时间之间间隔
  15. 从根节点到叶节点的路径数字之和
  16. 深入学习理论:VC维(VC dimensions)
  17. ios微信双开,iOS微信分身免越狱方法来了!
  18. hook ZwQuerySystemInformation 隐藏进程
  19. 点击a标签改变链接字体颜色,点击其他标签,返回默认字体颜色
  20. SecureCRT8.0的使用及其激活

热门文章

  1. 翻译计算机缩略词GDDR,计算机缩略语精选
  2. 087:vue+openlayers 地图中某位置闪烁点动画 (示例代码)
  3. javascript经典算法之最小硬币找零问题
  4. 双非大三计算机专业考研好?还是实习好?
  5. VS2019创建SDL2工程,以及找不到SDL2.dll
  6. project soli
  7. 教师信息管理系统设计(C语言)
  8. JAVA 递归算法- 椰子汁5元一瓶,4个盖子可以换一瓶椰子汁,3个空瓶可以换一瓶椰子汁,那么 100 块钱可以喝多少瓶椰子汁,剩下瓶盖和空瓶各多少?
  9. Vue CLI 環境設定與打包
  10. CF1768D Lucky Permutation