咕咕咕了好多天终于能更了,是不是八点要考语文了?啊啊啊啊SPY-PCR还不会(sigh好像要出分了
这次看了一点数据类型以及操作,虽然基础但感觉知识点还是挺细的,在字符串里纠正了之前关于引号的说明的一点小错误(哎,只怪自己没有多写测例
整数类型
整数类型比较简单,可正可负,无取值范围限制。在程序中,常用四种表示方法表达整数,即:二进制(B/b),八进制(o/O),十进制,十六进制(x/X)
二进制 | 0B010, -0b101 |
八进制 | 0O123,0o123(是o不是0) |
十进制 | 123,-123 |
十六进制 | 0x1a3, -0X123 (10~15对应a/A~f/F) |
需要记住两个函数:
1. 强制转换函数int()
用于将其他类型强制转换为整型,当强制转换字符串时,字符串去引号后内部必须是整数;强制转换浮点数为整数时,小数被去掉。
像:int("123.456")以及int("love")都是不允许的
2. 幂运算函数pow(x,y)
用于计算x的y次幂。正负以及整型/浮点型都没有关系,而且如果计算结果是个复数,也可以直接显示出来。
值得一提的是,在数学上0^0没有定义,但是pow函数可以显示出1。
细心的童鞋可能会注意到(其实我标白了),第二个函数应该得到虚数单位 j ,但是结果出现了一个数值很小的实部,在于浮点数的运算存在不确定尾数。
浮点数类型
带有小数点和小数的数字,取值范围和小数精度有限制,但常规计算可以忽略,精度为10^(-16)。浮点数运算有一个重要特点,即:
浮点数的运算存在不确定尾数
(左边的print是程序,右边的数字是输出)
这样是因为计算机用53位二进制数表达小数,这样的表达方式只能“接近”而不能“精确”,所以会产生误差。所以,判断语句:0.1 + 0.2 == 0.3 将会得到False。
同样有两个函数需要记住:
1. 强制转换函数float()
用于将其他类型强制转换为浮点型,当强制转换字符串时,字符串去引号后内部必须是数;强制转换整数为浮点数时,会被补上一位小数0。
像float("love")是不允许的
2. 近似函数round(x,d)
因为不确定小数在小数点后16位或更多的时候才会出现,因此一般计算的时候可以对其进行小数保留,round(x,d)对x四舍五入,d为保留小数点后的位数。如果不给d参数,则默认不进行四舍五入的保留操作。
3. 科学计数法
科学计数法用e或者E表示,输出默认为浮点数类型,还挺简单的
复数类型
Python自带复数数据类型(比C/C++方便一点),其虚数符号为 j,且有实部real,虚部imag(这两个不是提取函数,不用加括号)
运算操作符
| 加 | 减 | 乘 | 除 | 除法取整数 | 除法取余数 | 幂运算|
| + | - | * | / | // | % | ** |
二元增强运算符:x op= y 等价于:x = x op y
(例如x *= y 等价于 x = x * y
数值运算函数
主要是内置函数:
1. 取绝对值:abs(x) == |x|
2. x除以y分别取整和取余:divmod(x,y) == (x//y, x%y)
3. 取幂函数pow(x,y[,z]) == (x ** y) % z
(其中[]表示参数可以省略)
4. 四舍五入函数round(x[,d])
省略d则默认d = 0,即取整
5. 返回最大最小值函数max(x1,x2.....),min(x1,x2......)
6. 强制转换函数:
int(parameter),float(parameter),complex(int x)
例如:float(12) == 12.0
混合运算的话,会自动转换成最宽的数据量类型。而宽度比较:
复数>浮点数>整数
例如:print(12.789 * 3) 得到 38.367
字符串表示
Python字符串强大的一点在于采用Unicode编码方式。C/C++采用ASC码编码方式,其中不包含中文字符;而Unicode几乎覆盖所有字符,包括中文字符。空间为0到0x10FFFF个。
单行字符串:' '(单引号) 与 " "(双引号)
多行字符串:''' '''(三单引号) 与 """ """(三双引号)
【勘误】:如果字符串出现双引号,则可以用单引号表示字符串;反之亦然;三单引号可以包括字符串中的单双引号(但是单双引号必须成对出现,且不混用):
合法操作:
print(" 我喜欢'ta' ") #单引号表示字符串'ta'
print(' 我喜欢"ta" ') #单引号表示字符串"ta"
print(""" 我喜欢"ta" """)
print(''' 我喜欢"ta" ''')
不合法操作:
print(" 我喜欢"ta' ')
#引号混用,系统识别不出这个ta
字符串操作
字符串索引:用中括号表示索引str[i]
比如字符串str = "我喜欢你"
str[2] 就是 "欢"
字符串切片:即得到子串str[M:N:step]
str[M:N:step]表示从str[M]到str[N]得到字符子串;step表示步长,即跳过(step-1)个字符提取一个,步长不能为0。
如果M缺失,则从开头开始提取;
如果N缺失,则一直提取到结尾;
如果step缺失,则不跳字符,即步长为1;
要实现倒序,则可以使步长为-1(如果有MN参数,则step>=1);
3. 转义字符 表示字符本意
\b回退,\n换行,\r回车
如果在字符串中有双引号,又想以双引号表示字
符串,则 \" 表示真正的双引号:
print(" 我喜欢\"ta\" ")
4. 字符串操作符
加号连接字符串x+y;
复制:n*x或者x*n 将x复制n次;
子串判断:x in s,真则true,假则false
字符串处理函数
计算长度:len(str)返回整数类型
强制转换:str(other type)返回字符串类型
可以理解为与eval()互逆
进制转换函数:返回字符串类型
十六进制:hex(int)
八进制:otc(int)
大小写转换:得到的还是字符串
str.lower()全小写
str.upper()全大写
分割字符串为字符:str.split(str)返回为列表
计算子串在母串中出现次数:str.count(substr)
替换子串:str.replace(old, new)替换子串
字符串居中:str.center(width[,fillchar])
将字符根据width居中(需要规定width长度),fillchar可选空余填充
去掉左右字符:str.strip(chars)
从str中去掉左侧和右侧chars中列出的字符(是去掉各个字符,不是去掉chars代表的子串)
str.join(iter):在iter变量除最后一个元素外每一个元素后面都增加一个str(注意谁是被加入进来的),可用于分割字符串
这几天的咕咕咕
咕咕咕,咕咕咕,咕咕咕了好几天,不是没有原因(借口)的。最近准备了一次面试,但从准备到面试结束,我认清了我足够菜,感觉得重新学习C/C++。安排上。