Python3学习笔记之-学习基础(第一篇)

Python3学习笔记之-学习基础(第一篇)


 


前言

        接下来的时间里,我将对学习python3的一写基础知识进行梳理,本系列文章详细介绍了python3的相关知识点,从小白到大牛相信自己就能做到。

        首先介绍一下python这门语言。python是一门计算机编程语言,它是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。龟叔给Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序。

Python就为我们提供了非常完善的基础代码库,许多功能不必从零编写,直接使用现成的即可。除了内置的库外,Python还有大量的第三方库,也就是别人开发的,供你直接使用的。许多大型网站就是用Python开发的,例如YouTube、Instagram,还有国内的豆瓣。很多大公司,包括Google、Yahoo等,甚至NASA(美国航空航天局)都大量地使用Python。

        总的来说,Python的哲学就是简单优雅,尽量写容易看明白的代码,尽量写少的代码。如果一个资深程序员向你炫耀他写的晦涩难懂、动不动就几万行的代码,你可以尽情地嘲笑他。

对于初学者我们可以选择Anaconda中的Jupyter Notebook来编写代码,这玩意用起来简单,你直接从网上下载一个Anaconda安装包就行。

话不多说,直接开始

一、数据类型和变量

1.数据类型

        首先记住能够直接处理数据的数据类型:整数、浮点数、字符串、布尔值、空值 

当然数据类型还有其他的,但是咱先不讲,列表啊、字典啊啥的,不急,慢慢来。

整数

        在python中能处理任意大小的整数,上过初中都知道,和数学没区别,正的负的写法和数学上一猫一样,比如:1,20,-20,0等。

        在计算机中有二进制、八进制、十进制、十六进制的概念,也许你不了解,但是你记住,用十六进制表示整数比较方便,十六进制用0x+(0-9,a-f),这括号里表示十六进制数,0x就是前面加上的玩意,就是要有它。相关知识给你一张图:

                

对于很大的数,例如10000000000,很难数清楚0的个数。Python允许在数字中间以_分隔,因此,写成10_000_000_00010000000000是完全一样的。十六进制数也可以写成0xa1b2_c3d4

浮点数

        这个更简单,这就是小数,举例:1.23,3.14,-2.2,1.23e等于1.23\times 10^9,浮点数运算可能有四舍五入的误差

字符串

        字符串就是单引号或双引号括起来的任意文本,比如:'abc' , "abc" 单引号和双引号不算字符串的一部分奥。关于这个有一个姿势点,如果我想要单引号双引号咋办,哎还是有办法的,记住这个转义字符 \ 下面看代码:

print('I\'m ok.')#这个print就是输出语句,第二个引号加上一个\ 这个引号就能出现
结果:I'm ok.
print('I\'m learning\nPython.')#这个\n更牛逼,它能换行
结果:I'm learning
     Python.
print('\\\n\\')#这个相信也能看懂,第一个斜杠是转义字符,为了输出第二个\
                #第三个\n是换行,然后第四个\转义字符为了输出最后一个\
结果:\
      \

如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用r''表示''内部的字符串默认不转义,

print(r"我是'\,老子不转义")
#结果:我是'\,老子不转义

如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用'''  '''的格式表示多行内容,这三个引号前面也能加上r,里面的字符也能输出了。

 print('''line1
 line2
 line3''')
结果:line1
      line2
      line3

布尔值

布尔值咱只需要记住一个Ture,一个False,这不用说也看得明白,你在python输入3>2,他给你返回的值就是True,3<2呐,就返回False。

布尔值可以用and,or,not运算,这几个单词简单成马了吧。举个例子:

True and True

 输出:True,and运算是与运算,只有所有都为Trueand运算结果才是True

True or False

 输出:True,or运算是或运算,只要其中有一个为Trueor运算结果就是True

not True

 输出:False,not运算是非运算,它是一个单目运算符,就是把Ture变成False,反过来一样。

布尔值经常用在条件判断中,比如:

if age >= 18:
    print('老年人')
else:
    print('小年轻')

空值

空值在python中特殊,就用None表示,它可不是0,0也有意义,这个None不行。

2.变量

在计算机语言中,变量不仅可以是数字,还可以是任意数据类型。

变量在程序中就是用一个变量名表示了,变量名必须是大小写英文、数字和_的组合,且不能用数字开头,比如:

a = 1 # 变量a是一个整数
a = 'qwe00' # 变量a是一个字符串
a = True # 变量a是一个布尔值

记住这个=是赋值语句,要记住这个等号与数学上的两边相等不一样,在计算机中,x=x+2也成立,那就是表示经过赋值,x的值变大了2,同一个变量可以反复赋值,还能是不同类型的变量,这种你就能叫它动态语言,那么问题来了,啥是静态语言,就是int a = 123,这个时候这个a她就得是int(整)类型。

下面看个更神奇的:

a = '芜湖'
b = a
a = '大司马'
print(b)

 你只要注意一点,b=a这一条语句,表示a把它自己的芜湖给了b,所以输出结果就是’芜湖‘。python语句就是从上往下一句句执行,有先后顺序的。

 现在你可能不理解,在最底层,其实是有一个地址,这个‘芜湖'它住一间房子里,a知道它的门牌号,后来呢a把门牌号告诉了b,b也就知道了,可不是把’芜湖‘复制了哦。

3.常量

所谓常量就是不能变的变量,比如常用的圆周率π就是一个常量。在Python中,通常用全部大写的变量名表示常量:

PI = 3.14159265359

 二、字符串和编码

1.字符编码

字符串比较特殊的就是一个编码问题。因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295

由于计算机是美国人发明的,因此,最早只有127个字符被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122

但是要处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。

所以全世界各国的不同,混合就会出现乱码问题。因此,Unicode字符集应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。

如果统一成Unicode编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。

所以,本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间。

2.python字符串

上面说了很多普及知识,基本上没大用,你就记住UTF-8编码很牛逼,很多情况下都用,在最新的Python 3版本中,字符串是以Unicode编码的,也就是说,Python的字符串支持多语言,举例:

print('输出中文English都没问题')
输出中文English都没问题
#Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符
ord('A')
65
chr(66)
'B'

python字符串类型是str,如果要在网上传输,或者保存磁盘,str要转化成bytes,python对bytes类型数据用带b前缀的单引号或者双引号表示:

x = b'ABC'
#'ABC'是str,b'ABC'是bytes,这个它只占用一个字节。

纯英文的str可以用ASCII编码为bytes,内容是一样的,含有中文的str可以用UTF-8编码为bytes。含有中文的str无法用ASCII编码,因为中文编码的范围超过了ASCII编码的范围,Python会报错。

bytes中,无法显示为ASCII字符的字节,用\x##显示。

反过来,从网络或磁盘上读取了字节流,要把bytes变为str,就需要用decode()方法

b'ABC'.decode('ascii')
结果:'ABC'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8',errors='ignore')
#设置errors='ignore'忽略错误的字节
结果'中文'

 要计算str包含多少个字符,可以用len()函数、如果换成byteslen()函数就计算字节数:

len('ABC')
3
len(b'ABC')
3

 3.格式化

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

常见的占位符有:

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

记住这张表就欧克了。以后还会用到format(),f-string,都简简单单。,举两个例子:

'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125)
结果:'Hello, 小明, 成绩提升了 17.1%'

这个format() 第一个{0},代表的就是第一个小明,第二个{1}就是第二个字符,.1f就是保留几位小数。

r = 2.5
s = 3.14 * r ** 2
print(f'The area of a circle with radius {r} is {s:.2f}')
结果:The area of a circle with radius 2.5 is 19.62

这个f-string方法呢,{r}里面的r就是上面定义r的值,.2f就是保留两位小数。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是小先生

知识是无价的,白嫖也可以的。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值