python基本数据类型

IOP

变量

定义

变量 顾名思义,可变的量,可赋值任意的数据类型,python能自动识别变量值的数据类型

程序中用到的各种数据类型都存储在变量中
type(x) 查看对象类型
id(x) 获取对象内存地址

a = 1
b = 'hello'    #字符串赋值变量需要用英文'单引号'或者'双引号'括起来
type(a)
<class 'int'>
type(b)
<class 'str'>
print(a)
1
print(b)    #调用变量时,不需要带上引号,如果加了引号会直接当成字符串处理
hello

变量命名规则

  • 以字母、下画线开头,后面可以跟任意字母、数字和下画线
  • 不能以数字开头
  • 不能有空格以及标点符号
  • 不能使用关键字和内置函数作变量名
  • 变量名对英文字母的大小写敏感
  • 最好使用驼峰式(helloWorld)或下划线(hello_world)的命名方式

关键字和内置函数(不能用作变量名)

import keyword
keyword.kwlist
help("keywords")
import builtins
dir(builtins)

常量

  • 常量是在指定了初始值后,不应该再改变
  • 常量一般用大写字母表示
  • 遵循常量约定,使代码具有良好可读性

数字类型

整数、浮点数和复数

数据类型有:数字、字符串、布尔值、列表、元组、字典
数字类型非数据类型,数字类型有:整数、浮点数和复数。

  • 整数和浮点数的差异时是否包含小数部分
  • 浮点数必须包含一个小数点
  • int表示整数
  • float表示浮点数
a = 3
b = 3.0
type(a)
<class 'int'>
type(b)
<class 'float'>

浮点数的两种表示形式:

  • 十进制形式:5.21,52.1,521.0
  • 科学计数形式 5.21e2,5.21.E2 也就是5.21乘10 的平方

只有浮点数可以使用科学计数形式

复数的虚部用j或J表示
复数的基本运算:

a = 3 + 4j
print(a.real)
3.0
print(a.imag)
4.0

进制之间的转换

进制之间可通过内置函数相互转换

  • int(x,d) 接收的是字符串x,转换为对应的d进制的数为十进制的数
  • bin(x) 将十进制的参数x转换为二进制
  • oct(x) 将十进制的参数x转换为八进制
  • hex(x) 将十进制的参数x转换为十六进制

内置模块

python中包含大量的标准库,库也就是别人写好的代码集合,在程序中可以直接使用python中标准库中的模块。
import 导入使用

math模块

import math   #导入模块
print(math.sin(5))
print(math.cos(6))
print(math.log(8,2))

dir(math)   #查看模块有哪些用法

random模块

import random
random.random()   # 随机生成一个函数,它在[0,1]范围之间
random.randint(a,b)   # 用于生成一个指定范围内的整数,包含a,b

内置函数range()
内置函数可以直接使用,不需要导入

range(10)	#生成一个0到10的列表,包括0但不包括10
range(1, 10)	#生成一个指定范围的列表,包括1,不包括10

字符串

字符串的表示方式

python中最常用的字符串表示方式是单引号('')和双引号("")

  • 单引号
  • 双引号
  • 混合使用
s = 'Hello World!'
print(s)
r = "Hello World!"
print(r)
print("I'd much rather you 'not'.")	#混合使用
print('I "said" do not much this.')

转义符<br />**' 表示单引号," **表示双引号

\ 被称作转义字符,除了用来表示引号,还有比如用

  • \n 表示字符串中的换行(相当于按一下回车键的效果)
  • \t 表示字符串中的制表符(相当于按一下tab键的效果)
  • \ 表示字符串中的 \ (因为单个斜杠被用来做转义了,所以真的要表示 \ 字符,就要两个斜杠)


如果字符串本身包括单引号或双引号,则需要特殊处理

print('I\'m in a file.')

** 还有个用处,就是用来在代码中换行,而不影响输出的结果:

"this is the \
same line"

python中还有一种表示字符串的方法:
三个引号(''')或者(""")

在三个引号中,可以直接换行,而不用换行符\n

'''
Stay hungry,
stay foolish.
             -- Steve Jobs
'''

字符串的常用操作

字符串的行为称为方法,只能用于定义好的对象(变量),函数是可以独立的操作
调用对象的方法,对象名.方法名

字符串的大小写转换
s.lower 转换为字符串的小写形式
s.upper 转换为字符串的大写形式
s.title 将字符串所有单词的首字母变成大写

say_hello = 'Dear my Daughter'
upper_say_hello = say_hello.upper()
lower_say_hello = say_hello.lower() 
title_say_hello = say_hello.title()
print (say_hello+"\n")  
print (upper_say_hello+"\n")  
print (lower_say_hello+"\n")  
print (title_say_hello+"\n")

输出

Dear my Daughter
DEAR MY DAUGHTER
dear my daughter
Dear My Daughter

通过索引访问单个字符

str = 'python'
print(str[2])

输出

t

字符串拼接运算 +

str1 = 'py'
sr2 = 'thon'
str3 = str1 + str2
print(str3)

输出

python

字符串的连接与切分

s.join(str) 以指定字符s(分隔符)将字符串str连接生成一个新的字符串
s.strip(s,[num]) 通过指定分隔符s对字符串str进行切分,num指定切分次数

str1 = 'python'
print(','.join(str1))
str2 = "my heart will go on"
s = str2.split(' ')
print(s)
print(':'.join(s))
s3 = str2.split(' ',2)
print(s3)

输出

p,y,t,h,o,n
['my', 'heart', 'will', 'go', 'on']
my❤️will:go:on
['my', 'heart', 'will go on']

字符串内置函数

reversed() 内置函数

mystring = "my heart will go on"
print(' '.join(reversed(mystring.split())))

输出

on go will heart my

● 索引	
● s.lower()	——转换为字符串的小写形式
● s.upper()	——转换为字符串的大写形式
● s.title()		——将字符串所有单词的首字母变成大写
● s.replace(old,new)	——返回一个新的字符串,将s中的old替换为new
● s.find(p)	——在字符串s中查找字符串p是否存在,如果存在返回字符串p所在的索引位置,如果不存在返回-1
● .join(s)	——字符串拼接
● s.split()	——对字符串进行切分,默认按所有空字符(空格、换行、制表符)切分,也可以指定分割符
● s.strip()	——去除字符串首尾空格(不包含内部)
● len(s)	——获取字符串s的内容长度
● reversed() ——内置函数

字符串和数字之间的转换

str(a) 将数字转换为字符串
int(s) 将字符串转换为十进制的数
int(x,d) 将为d进制的数字x字符,转换为十进制的数

print(str(15))
print(int('11'))
print(int('11', 8))

输出

15
11
9

正则表达式

KMP模块:(re模块)高效的模式匹配算法
re是python里的正则表达式模块

  • 字符串前面加了r,是raw的意思,它表示对字符串不进行转义
  • “\b”在正则表达式中表示单词的开头或结尾,空格、标点、换行都算是单词的分割。而“\b”自身又不会匹配任何字符,它代表的只是一个位置
  • ^ 匹配输入字符串的开始位置
  • $ 匹配输入字符串的结尾位置
  • “.”在正则表达式中表示除换行符以外的任意字符
  • “\S”它表示的是不是空白符的任意字符。注意是大写字符S
    • 匹配前面的子表达式一次或多次
  • ? - 重复零次或一次,或指明一个非贪婪限定符
  • “*”表示数量:它表示前面的字符可以重复任意多次(包括0)
  • {n,} - 重复n次或更多次
  • {n,m} - 重复n到m次
  • “.*?” 贪婪匹配(最长匹配)
  • I.*?e 懒惰匹配(最短匹配)
  • \w - 匹配字母或数字或下划线或汉字(我试验下了,发现python 3.x版本可以匹配汉字,但2.x版本不可以)
  • \s - 匹配任意的空白符
  • ^ - 匹配字符串的开始
  • $ - 匹配字符串的结束
  • \W - 匹配任意不是字母,数字,下划线,汉字的字符
  • \D - 匹配任意非数字的字符
  • \B - 匹配不是单词开头或结束的位置
print ("\bhi")
print (r"\bhi")

输出
hi
\bhi

写一个正则表达式,能匹配出多种格式的电话号码,包括

(021)88776543
010-55667890
02584453362
0571 66345673

\(?0\d{2,3}[) -]?\d8

findall 按照提供的正则表达式,去匹配文本中的所有符合条件的字符串,返回结果是一个包含所有匹配的list。

import re
text = "Hi, I am Shirley Hilton. I am his wife."
m = re.findall(r"hi", text)
if m:
    print (m)
else:
    print ('not match')

输出

['hi', 'hi']

posted @ 2022-07-08 14:45  hcypeu  阅读(114)  评论(0)    收藏  举报