Python小白的自学笔记第三天

主要是数字类型及操作和字符串类型及操作,还有一些别的杂七杂八的东西

数字类型及操作

整数

无限制,没有C的取值范围
有四种表示形式:

  1. 十进制
  2. 二进制,以0b或者0B开头
  3. 八进制,以0o或者0O开头
  4. 十六进制,以0x或0X开头

**int(x)**函数,将浮点数舍弃小数部分转化成整数(好像复数不能用)

浮点数

有取值范围和精度范围,精度范围达到10-16
两个浮点数之间的运算存在“不确定尾数”,即上篇提到的浮点数的bug
不确定尾数发生在10-16左右,即精度范围处,即0.3000000……4,中间全是0
在运算与比较时,常使用round()函数,round(0.1+0.2 , 1)类似的用法十分有效

与C类似,Python同样用e或E来表示科学计数法,aE10即可表达a10

**float(x)**函数,将整数转化成浮点数,即加上.0 (……此处应有吐槽……)

复数

居然有复数……
复数表达为实部+虚部j的写法
当一个变量被赋值成复数后,变量.real表示实部,变量.imag表示虚部
复数会保留成带括号的形式,而实部与虚部分别表示成浮点数

**complex(x)**所以你一定猜到是变成复数了,加上+0j……

运算符号

需要注意的是,与C中不同,除法一定是浮点数形式,多加了一个整数除的运算,即像C的整数除以整数一样,是只得到整数的结果,运算符号是“//”

6/2  10/3

结果是3.0 、 3.3333

6//2  10//3

结果是3 、 3

x**y

是对x进行幂运算,y可以为小数,是开方运算

二元运算除了+=,-=,*=,/=外,还有//=,%=,**=这些,意义相同,都是x=x相应运算y

Python的运算可以多种数字类型来做,最后选类型最宽的一种,整数<浮点数<复数
11+3.0结果是14.0

几个运算函数
pow(x,y[,z]) 计算x的y次方(然后取余z)

计算x的y次方,可以嵌套,比如pow(2,pow(2,100))是可以的,与x**y类似,可以没有z就此结束,加上z就再做一个取余运算,最后输出余数

divmod(x,y) 商余

计算x//y与x%y输出(整数商,余数)

max(x1,x2…)

取最大值

min(x1,x2…)

取最小值

字符串类型及操作

编码形式

python三及以上的版本,字符串全部使用Unicode编码形式,这种编码形式可以支持包括汉字,日语,各种奇奇怪怪的字符等等一系列的字符,使用十六进制数的形式来对应

类型

有两类共四种表示方式

  1. 一类是单行字符串,用一对单引号或双引号表示
  2. 另一类是多行字符串,用一对三单引号或三双引号表示
    ‘’’…
    …’’’
    想到多行注释的写法也是这样……发现Python中并没有给出真正多行注释的写法,只是多行字符串如果没有进行任何操作就可以当作注释来使用

提供看起来很睿智的三双引号的表示方法是因为:如果想要在字符串文本中使用单引号或者双引号的话,就应该在字符串两边用另一种,如'..."...'就是在字符串中使用了双引号,同理如果想使用单引号就在字符串两边使用双引号。
如果想要在字符串中既使用单引号又使用双引号,就必须使用多行字符串的’’’,这样在出现不是连续三个’’'时都可以使用单引号或者双引号

另一个使用单双引号的方法是用转义符,与C类似,同样\n换行,\r回车,\b退格,双引号单引号可以用"与’来表示,字符串"...\"...'在打印时就会变成..."...

操作

切片的高级用法

之前简单说过切片的用法,这里更高级了

<字符串>[M: N: K]

当M缺失时表示从头开始,N缺失表示至结尾
当使用MNK时,表示从M开始,到N结束,以步长为K来截取
例如

'012345'[::2]

最后就会得到024,以此理解步长

有一个由此引申把字符串倒过来的小技巧

'<字符串>'[::-1}

这样就可以把字符串倒过来……C语言流下了眼泪
但是好像不能在其它形式时将K使用为负数,就算写上MN并且M=0,N=n-1,K=-1时程序也不能运行

字符串操作符
  1. x+y将x与y字符串连接,形成新字符串(我已经不会惊讶了
  2. x*n或n*x将字符串x复制n次,n为整数
  3. x in yx是y的字串,返回True,不是返回False
字符串处理函数
  1. len(x)x是字符串,函数结果返回字符串的长度
  2. str(x)任意类型的数据转化为字符串类型,即在两端加上单引号,与eval(x)是相反作用的函数
  3. hex(x)与oct(x)x是整数类型,分别返回为x的十六进制字符串形式和x的八进制字符串形式
  4. chr(u)u是Unicode编码,可以返回向对应的字符。如9800~9811对应的是十二星座的符号,可以试着玩一下
  5. ord(x)x是符号,与chr(u)函数对应,这个函数可以输出符号对应的Unicode编码
字符串处理方法(首先注意这里方法是一个专有名词)(然后这一部分划重点)

方法是一种必须通过<a>.<b>()的形式来使用的函数,其中<a>是一个对象(我好像看到了什么大坑<b>()是函数,这里用“方法”来称呼,一下这一部分字符串处理方法很常用。

  1. str.upper返回字符串副本,将全部字符转化为大写形式(英文单词,起码阿拉伯数字没有变化)
  2. str.lower与上一个方法相反,这里转化为小写形式,这两个方法都可以直接在print函数里使用,print('str'.upper()/lower())这样的写法都是可以的,不是指取自什么
  3. **str.split()**现在理解其基础用法,split()中括号中的元素以字符串形式出现,这个用法可以把一个字符串通过某个符号分割开来,这个符号必须在str中存在,否则编译器会报错,每出现一个相应符号,便分割一次,最后以列表形式返回,列表中的元素都是字符串,例print("abc,123,45,6".split(",")最后返回结果为["abc", "123", "45", "6"]以该例子理解上述我也看不太懂写了什么的东西。在split()括号中出现多个字符串,如split(',''.')这样的东西就要要求str中必须有连着的,.才能分割。
  4. str.count(sub)作用是计数sub子字符串在str字符串中出现的次数,sub子字符串以字符串形式出现,例print("an apple a day".count("a")返回结果为4
  5. str.replace(old, new)作用是替换,将str中的old字符串全部替换为new字符串。
  6. str.center(width[, fillchar])作用是将str字符串在一个长度为width的宽度上居中,fillchar是在两端的填充,可以不写,为空,填充的字符fillchar以字符串形式写入。
  7. str.strip(chars)作用是去掉在str中最左侧和最右侧的"chars",将全部要去掉的字符写在一个"chars"里,chars以字符串的形式写入,注意里面不要乱加空格,因为空格也会被当作要去掉的东西。例print("i loved a girl".strip(" il")最后会返回"oved a gir"左右两端只要出现不是"chars"中任意一个字符的字符,这一侧的删除就停止。
  8. str.join(iter)作用是在字符串iter中,除最后一个元素外的每一个元素后面加入一个str,例print(",".join("123456")可以返回"1,2,3,4,5,6"主要用于格式化输出和分割字符串
字符串类型的格式化

对字符串进行格式表达的方法
使用.format()方法,格式如此:<模板字符串>.format(逗号分隔的参数>)

给出定义:用一对大括号表示,是一个占位信息符{}
例:"...{}...{}...{}".format("<a>","<b>","<c>")在默认状态下,槽的先后顺序为0,1,2……与后面的字符串相对应,后面如果是数字可以不用字符串的写法。如果想要改变槽的对应位置,则在槽中填写对应的编号,例如:...{1}...{0}...{2}.".format("<a>",<b>",<c>")就可以改变槽的填入的顺序,将1,0,2对应的字符串输入

在槽的内部,也可以使用一些操作符号
标准形式是<参数序号>:<格式控制符号>其中":"是引导符号一共有六种操作类型,分别是

  1. <填充>:用于填充的单个字符
  2. <对齐>:<左对齐;>右对齐;^居中对齐
  3. <宽度>:单位是字符
  4. <, >:数字的千位分隔符
  5. < .精度>:.nf与.n
  6. 类型:b二进制形式,cUnicode编码形式,d整数形式,o八进制形式,x十六进制形式,X大写的十六进制形式,以上五种均为整数类型,以下为浮点数类型,f浮点数形式,e科学计数法表示浮点数形式,E以大写E的科学计数法表示浮点数形式,%以百分数形式表示浮点数

(解决了开始时print的输出的形式)
这些控制符都写在一起,顺序必须分别是123456,
123算一类,是通用的操作方法,例:"{0:=^10}".format("cyy")
结果会输出===cyy====顺便一提两边填充不对称时左边少一个
当不写填充时,默认填充为空格,不写对齐时,默认左对齐

另外三个456算作另一类,是数字的相关操作
其中4只有在用于输出为字符串用作给人阅读时使用,常用于财务,如各种考试报名系统,教师管理系统(你为什么这么熟练啊 )
5是浮点数的小数位数,或者是字符串的最大输出长度,输出浮点数时,最后对应format后的也必须是浮点数,不能加引号,输出字符串的长度时即.n。注意要与"{:n}".format()宽度区别,字符串不够宽度会补,字符串超过宽度按原字符串输出,但精度会删去多余的部分
6是以各种类型输出整数类型的数字或浮点数类型的数字

库引用的另一种写法

除了用import+库
库.函数 外,还可以这么写

from 库 import*
函数

import turtle turtle.setup(a,b)
就可以变成
from turtle import* setup(a,b)

但这种引用方式带来一个问题,通过这种方式引用的函数,算作一个在该程序中定义了的函数,可能与自己定义的函数或者其它库中的函数重名,发生问题

还有一个方法

import 库 as 库别名
库别名.函数

这样可以自己给库起一个小名,起成自己的名字什么的都可以

如果只想引用某一个函数,也可以

from 库 import 函数
函数()

for循环语句和range()函数

for 变量 in range(参数):
    ...
    ...

for i  in range(5):
    print(i)

会输出0 1 2 3 4 (每个数字换一次行)

range()函数的作用是产生一个循环序列
如range(5)就是产生0 1 2 3 4
还可以range(M , N)
作用是产生从M到N-1的整数序列
如range(2 , 5)就可以产生2 3 4

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值