jupyther_python基础系列03 第三章 基本数据类型

第一部分 数字类型

数字类型的组成

整数–不用进制的转换

  • 默认输入十进制
  • 二进制0b, 八进制0o, 十六进制0x
16 == 0b10000 == 0o20 == 0x10
True
  • 十进制和其他进制的转换
  • 注意:转换结果为str类型
a = bin(16)  #转二进制
b = oct(16)  #转八进制
c = hex(16)  #转十六进制
print(a, b, c)
type(a)

0b10000 0o20 0x10





str
  • 其他进制转换十进制
d = int(a, 2) 
e = int(b, 8)
f = int(c, 16)
print(d, e, f)
type(d)
16 16 16





int

浮点数—不确定性

  • 不确定小数问题
(0.1 + 0.2 ) == 0.3
False
0.1 + 0.2
0.30000000000000004

** 计算机采用二进制小数表示浮点数的小数部分 **

  • 部分小数不能用二进制小数完全表示

  • 通常不会影响计算精度

0.1 + 0.7 
0.7999999999999999
  • 四舍五入得到精确解
a = 3*0.1
print(a)
0.30000000000000004
b = round(a, 1) # 将a保留一位小数 进行四舍五入
print(b)
b == 0.3
0.3





True

复数---- a+bj

  • 大写J或者小写j均可
3+4j
type(3+4j)

数字运算操作符 (a 操作符 b)

  • 加减乘除 + - * /
(1 + 3 - 4*2)/5
-0.8
  • 取反 -
x = 1
-x
-1
  • 乘方运算
2 ** 3
8
  • 整数商 // 和模运算%
13 // 5  #整数商  x/y向下取整
2
13 % 5  #模运算 余数
3

说明

  • 整数与浮点数运算结果是浮点数
  • 除法运算结果是浮点数
1 + 1.5
2.5
2 / 5
0.4
8 / 4
2.0

数字运算操作函数 function(x, )

  • 求绝对值 abs()
abs(-5)
5
abs(3 + 4j)  #对复数a+bj 执行的是求模运算 (a^2+b^2)^0.5
5.0
  • 幂次方 pow(x,n)
pow (2, 5)  # 2 ** 5
32
pow(2, 5, 3)  # 2^5 % 3 
2
  • 四舍五入 round(x, n)
a = 0.618
print(round(a))
print(round(a, 2))
print(round(a, 5))
1
0.62
0.618
  • 整数商和模运算 divmod(x, y)
  • 等价于返回二元组(x//y, x % y)
divmod(13, 5)
(2, 3)
  • 序列最大/最小值 max() min()
max(2, 5 ,7 ,1 ,2 ,3 ,5 ,12)
12
min(2, 5 ,7 ,1 ,2 ,3 ,5 ,12)
1
  • 求和 sum(x)
sum([1,2,3,4,5,8,6])
29
sum((1,5,8,5,5,2,2,1))
29
sum({1,2,3,4,4,4,4})
10
  • 借助科学计算库 math\scipy\numpy
import math
a = math.exp(1)  #指数运算
b = math.log2(2)  #对数运算
c = math.sqrt(4)  #开平方运算
print(a, b, c)
2.718281828459045 1.0 2.0
import numpy as np
a = [1, 2, 3, 4, 5]
mean = np.mean(a)  #求平均值
median = np.median(a)  #求中位数
std = np.std(a)  #求标准差
print(mean, median, std)
3.0 3.0 1.4142135623730951

第二部分 字符串类型

字符串的表达

  • 用""或’'括起来的任意字符
print("Python")
print('Python')
Python
Python
  • 字符串中有双引号或单引号的情况
print("hello 'world")  #有单用双
print('hello "world')  #有双用单
hello 'world
hello "world
  • 转义字符
print("\"Python\" is good")
"Python " is good
  • 转义字符 换行输入
s = "str\
saa"

print(s)
strsaa

字符串的性质

字符串的索引

s = "My name sis Python user"
print(s)
My name sis Python user

变量名[位置编号]

  • 正向索引—从0开始递增
  • 位置编号不能超过字符串长度
print(s[0])
print(s[2])
print(s[5])
M
 
m

  • 反向索引 -1开始递减
print(s[-1])
print(s[-3])
r
s

字符串的切片

变量名[开始位置: 结束位置: 切片间隔]

  • 切片间隔默认为1
  • 切片范围不包含结束位置
s = "Python"
print(s[0:3:1])
print(s[0:3:2])
print(s[0:3])
Pyt
Pt
Pyt
  • 起始位置是0, 可以省略
  • 结束位置省略, 代表可以取到最后一个字符
  • 可以使用反向索引
s= "Python"
print(s[0:6])
print(s[:6])
print(s[:])
print(s[-6:])
Python
Python
Python
  • 反向切片
  • 起始位置是-1 可以省略
  • 结束位置省略, 代表可以渠道第一个字符
s = "123456789"
print(s[-1:-10:-1])
print(s[:-10:-1])
print(s[::-1])
987654321

987654321
987654321

字符串操作符

字符串的拼接

  • 字符串1 + 字符串2
str1 = "Hello "
str2 = "world "
str1 + str2
'Hello world '

字符串的复制

s = str1 + str2
print(s * 3)
print(3 * s)
Hello world Hello world Hello world 
Hello world Hello world Hello world 

成员运算

  • 子集 in 全集 任何一个连续的切片都是原字符串的子集
folk_singers = "My name is Zhang san"
"Zhang san" in folk_singers
True
  • 遍历字符串字符 for 字符 in 字符串
for c in "Python":
    print(c)
P
y
t
h
o
n

字符串处理函数

字符串的长度

s = "Python"
len(s)
6

字符编码

将中文字库, 英文, 数字, 特殊字符等转化成计算机可是被的二进制数

  • 每一个单一字符对应一个唯一的不重复的二进制编码

  • Python 中使用的是Unicode编码

  • 将字符转化为Unicode码 ---- ord(字符)

for i in ("1", "a", "*", "中"):
    print(ord(i))
49
97
42
20013
  • 将Unicode码转为字符 —chr(Unicode码)
print(chr(10000))
print(chr(12345))
print(chr(20013))
print(chr(12585))
✐
〹
中
ㄩ

字符串的处理方法

字符串的分割 ----字符串.split(分割字符)

  • 返回一个列表
  • 源字符串不变
language = "Python C C++ HTML PHP R Java"
language_list = language.split(" ")
print(language_list)
print(language)
['Python', 'C', 'C++', 'HTML', 'PHP', 'R', 'Java']
Python C C++ HTML PHP R Java

字符串的聚合 — “聚合字符”.join(可迭代数据类型)

  • 可迭代类型 如: 字符串 列表
s = "123456"
s_join = ",".join(s)
s_join
'1,2,3,4,5,6'
  • 序列类型必须是字符类型
s = ["1", "2", "3", "4", "5"]
"*".join(s)
120

删除两端特定字符 — 字符串.strip(删除字符)

  • strip从两侧开始搜索, 遇到指定字符执行删除, 遇到非指定字符, 搜索停止
  • 左删除lstrip 右删除rstrip
s = "*******Pyhon*****"
print(s.strip("*"))
print(s.lstrip("*"))
print(s.rstrip("*"))
Pyhon
Pyhon*****
*******Pyhon

字符串的替换 -----字符串.replace(“被替换”,“替换成”)

s = "---Python---C++---"
s1 = s.replace("-", "*")
s1
'***Python***C++***'

字符串统计 -----字符串.count(“待统计字符串”)

s = "My is is jmsanf"
print("is:",s.count("is"))
print("s:",s.count("s"))
is: 2
s: 3

字符串字母大小写

  • 字符串.upper() 字母全部大写
  • 字符串.lower() 字母全部小写
  • 字符串.title() 首字母大写
Hs = "pyHonp"
print(s.upper())
print(s.lower())
print(s.title())
PYTHON
python
Python

第三部分 布尔类型 True or False

逻辑运算的结果

a = 10
print(a > 8)
print(a < 8)
print(a == 5)
True
False
False
  • any() all()
print(any([False, 1, 0, None]))  # 任意非0就是True
print(all([False, 1, 0, None]))
True
False

指示条件

n = 28
while True:
    m = eval(input("please input number: "))
    if m == n:
        print("bingo")
        break
    elif m > n:
        print("is big")
    else:
        print("is small")
please input number: 12
is small
please input number: 36
is big
please input number: 28
bingo

作为掩码

import numpy as np
x = np.array([1, 3, 2, 5, 7])
print(x > 3)
x[x > 3]
[False False False  True  True]





array([5, 7])

第四部分 类型判别及类型转换

类型判别

  • type(变量)
print(type(a))
print(type(12))  ##int
print(type("5a"))  #str
print(type(True))  #bool
print(type(["s", "a", "j", "n"]))  #list
print(type((1, 2, 3)))  #tuple
print(type({1, 2, 3, 5}))  #set
print(type({"name": "张三", "性别": "女", "年龄": "18"}))  #dict
<class 'int'>
<class 'int'>
<class 'str'>
<class 'bool'>
<class 'list'>
<class 'tuple'>
<class 'set'>
<class 'dict'>
  • isinstance(变量, 预判类型)
  • 变量类型是预判类型的子类型,则为真,否则为假
age = 20
name ="Ada"
print(isinstance(age, int))
print(isinstance(age, object))
print(isinstance(name, object))
True
True
True
  • 字符串检查方法

字符串.isdigit()是否只有数字组成

s = "123456"
s2 = "a123"
print(s.isdigit())
print(s2.isdigit())
True
False

字符串.isalpha()是否只有字母组成

s = "abc"
s2 = "a123"
print(s.isalpha())
print(s2.isalpha())
True
False

字符串.isalnum()是否只有数字和字母组成

s = "abc###"
s2 = "a123"
print(s.isalnum())
print(s2.isalnum())
False
True

类型转换

  • 数字类型转字符串 str(数字类型)
age = 20
print("is " + str(age))
is 20
  • 仅有数字组成的字符串转数字 int() float() eval()
s1 = "20"
s2 = "10.2"
int(s1)
20





20
float(s2)
10.2
eval(s1)
20

练习

x = 3.14
print(round(x,2),round(x))
3.14 3
s ="python is a good language"
print(s[0:6:1])
python
print(s[-26:-18])
python 
print(s.title())
Python Is A Good Language
print(s.count("o"))
3
print(s.replace("python","C++"))
C++ is a good language
s_list = s.split(" ")
s_list
['python', 'is', 'a', 'good', 'language']
"*".join(s_list)
'python*is*a*good*language'
b = bin(255)
o = oct(255)
h = hex(255)
print(b, o, h)
0b11111111 0o377 0xff
print(int(b, 2), int(o, 8), int(h, 16))
255 255 255

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值