MOOC —— Python语言基础与应用 by 北京大学 第三章 数据类型(一)

11、数据的基本类型:数值

整数类型:int
常见的运算

运算符功能备注
m + n加法
m - n减法
m * n乘法
m // n整数除法结果是商的整数部分
m / n除法”真“除法,得到小数
m % n求余数
divmod(m, n)求整数除法和余数会得到两个整数,
一个是m // n,另一个是m % n
m ** n求乘方整数m的n次方
abs(m)求绝对值

比较大小
m == n
m > n
m >= n
m < n
m <= n
比较简单,看了就懂,不再详述
各进制表示方法,会英语就容易记

进制前缀例子
十进制decimal无前缀367
二进制binary0b0b101101111
八进制octal0o0o557
十六进制 hexadecimal0x0x16f

浮点数:float
操作与整数类似
浮点数受到17位有效数字的限制
进制转换导致精度误差
这里要提一下,浮点数四舍五入时有可能失败,如

>>>'%.2f' % 1.255
'1.25'

为什么会这样?有兴趣了解的自行百度。对精度要求高的,如金融领域,利用decimal模块来解决这个问题

复数:complex
复数之间只能比较是否相等
复数:a+bi
进行复数计算,有 专门的模块 cmath

更多的数学函数:math模块
数学常数
圆周率π、自然对数的底e等
数学函数
三角函数、对数、最大公约数、最小公倍数等,可以通过dir查看

>>> import math
>>> dir(math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 
'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e',
 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 
 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 
 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 
 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
12、数据的基本类型:逻辑值

配合 if/while 等语句做条件判断
逻辑运算:and / or / not, 优先级:not > and > or
0、空字符串,空序列,None都是False
非0、非空字符串,非空序列都是True

13、数据的基本类型:字符串

成对的双引号或单引号括起来的文字的字符,多行用三个单引号包起来
转义符号 “\”
在这里插入图片描述

字符串有序列号,第一个为0,第二个为1;也可以倒着来,最后一个字符编号为-1,倒数第二个为-2,如下图:

HELLO,WORLD
012345678910
-11-10-9-8-7-6-5-4-3-2-1

常见字符串操作
获取字符串的长度:函数 len()
切片操作:s[start : end : step], start:起始位置;end:结束位置,不包括end;step:步长

>>> s = '01234567'
>>> s[3:8:2]
'357'

+ : 将两个字符串连接起来,得到新字符串
* : 将字符串重复若干次,生成新的字符串

>>> a = '123'
>>> b = 'abc'
>>> a + b
'123abc'
>>> a*3
'123123123'

判断字符串内容是否相同
判断字符串中是否包含某个字符串

>>> a = 'hello'
>>> a == 'hello'
True
>>> 'h' in a
True
>>> 'H' in a
False

删除空格
str.strip: 去掉字符串前后的所有空格,内部空格不受影响
str.lstrip: 去掉字符串左边的所有空格
str.rstrip: 去掉字符串右边的所有空格

判断字母数字
str.isalpha: 判断字符串是否全部由字母构成
str.isdigit: 判断字符串是否全部由数字构成
str.isalnum:判断字符串是否仅包含字母和数字,而不含特殊字符

字符串的高级操作
split:分割
join: 合并
upper/lower/swapcase:大小写相关
ljust/center/rjust: 排版左中右对齐
replace: 替换字串

>>> 'You are my sunshine.'.split(' ')
['You', 'are', 'my', 'sunshine.']
>>> '-'.join(['one','for','two'])	      # 用 '-'连接要被 连接的序列元素
'one-for-two'
>>> 'abc'.upper()	      
'ABC'
>>> 'aBC'.lower()	     
'abc'
>>> 'Abc'.swapcase()	      
'aBC'
>>> 'Hello World!'.center(20)	      
'    Hello World!    '
>>> 'Tom smiled, Tom cried, Tom shouted'.replace('Tom', 'Jane')	      
'Jane smiled, Jane cried, Jane shouted'
14、变量和引用

给数据命名的规则:字母和数字组合而成,可以用下划线 “_”,字母区分大小写,不能用特殊字符,如空格,标点,运算符等,名字的第一个字符必须是字母,不能是数字
赋值:
”==“是对数值的相等性进行判断
”=“ 是计算右边式子的值,赋值给等号左边的变量。 ==>请大家好好理解这句话,请看下面例子

>>> a,b = 1,2     # 这个大家好理解,就是分别给a和b赋值1,2
>>> a
1
>>> b
2
>>> a, b = b, a+b   # 这个会得出什么结果呢,我们看看
>>> a
2
>>> b
3

大家能看明白了么?其中过程是先计算 ”=“号右边的表达式,把b和a+b的值都计算出来,再给” = “左边的对应的变量名赋值。这里是初学者容易犯错的地方

15、上机练习:基本数据类型

一、数值基本运算:33和7 +, -, *, /, //, %, ** hex(), oct(), bin()

>>> 33+7
40
>>> 33//7
4
>>> 33%7
5
>>> hex(33)
'0x21'
>>> oct(7)
'0o7'
>>> bin(33)
'0b100001'

二、类型转换 1,0,‘abc’, None, 1.2, False, ‘’
str(), bool(), int(), float() is None, ==, !=

>>> str(1)
'1'
>>> bool(0)
False
>>> int(1.2)
1
>>> float(0)
0.0
>>> str(False)
'False'
>>> bool(None)
False
>>> None is None
True
>>> 'abc' == False
False
>>> 1.2 != 1
True

三、字符串基本操作 +, *, len(), [], in ,ord(), chr() 含有中文的字符串

>>> len('abc')
3
>>> 'abc'+'def'
'abcdef'
>>> 'abc'*3
'abcabcabc'
>>> 'ab' in 'abc'
True
>>> ord('a')    # 把字符转换成ascii码
97
>>> chr(33)     # 把ascii码转换成字符
'!'
>>> len('你好')
2

四、字符串的高级操作
s=‘abcdefg12345’ 切片:获得defg12,获得fg12345,获得54321, 获得aceg2

>>> s='abcdefg12345'
>>> s[3:9]
'defg12'
>>> s[5:]
'fg12345'
>>> s[11:6:-1]
'54321'
>>> s[:10:2]
'aceg2'

t=‘Mike and Tom’
split拆分
upper/lower/swapcase修改大小写
ljust/center/rjust排版30位宽度左中右对齐
replace将Mike替换为Jerry

>>> t = 'Mike and Tom'
>>> t.split(' ')
['Mike', 'and', 'Tom']
>>> t.upper()
'MIKE AND TOM'
>>> t.lower()
'mike and tom'
>>> t.swapcase()
'mIKE AND tOM'
>>> t.ljust(30)
'Mike and Tom                  '
>>> t.rjust(30)
'                  Mike and Tom'
>>> t.center(30)
'         Mike and Tom         '
>>> t.replace('Mike','Jerry')
'Jerry and Tom'
测验题

1、关于Python中的字符串,下列说法错误的是()。

A. 既可以用单引号,也可以用双引号创建字符串。
B. 在三引号字符串中可以包含换行回车等特殊字符。
C. 字符应该视为长度为1的字符串。
D. 字符串以\0标志字符串的结束。

2、关于python中的复数,下列说法错误的是()。

A. 表示复数的语法是real+image j。
B. 复数之间只能比较是否相等。
C. 虚部必须后缀j且j不区分大小写。
D. 实部和虚部都是整数。

3、下列表达式中返回为True的是()。

A. (3,2)>(‘a’,’b’)
B. 0x56>56
C. 3>2>2
D. ’abc’>’xyz’

4、print(‘a’<‘b’<‘c’),上述代码的输出结果是()。

A. True
B. False
C. a
D. c

5、代码的输出结果是()。

x="big"
y=2
print(x+y)

A. big
B. bigbig
C. 会报错
D. big2

6、代码的输出结果是____。

x="big"
y=2
print(x*y)

7、代码的输出结果是____。

x="big"
y="name"
print(x+y)

8、w的输出是____。

name="Mike"
w = name.upper()

9、u的输出是____。

name="Mike"
u = name[-2:]

10、x的输出是____。

name="Mike"
x = name.replace("k","p")

Answer :
1、D
2、D
3、B
4、A
5、C
6、bigbig
7、bigname
8、MIKE
9、ke
10、Mipe

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值