python数据类型
# 拉取最新的数据
git pull 仓库 分支
git pull teacher master
python数字类型
int 整型
# 整型,表示的范围无穷大
a = 1
print(a, "是", type(a), "类型")
a = -1
print(a, "是", type(a), "类型")
# 2的10次方
a = 2**10
print(a, "是", type(a), "类型")
进制
# 进制 print进行输出时,默认情况是以十进制的形式输出
# 二进制(0,1)
a = 0b10101
print(a, "是", type(a), "类型")
# 十六进制(0-9,a-f)
a = 0x1fb
print(a, "是", type(a), "类型")
# 八进制(0-7)
a = 0o127
print(a, "是", type(a), "类型")
进制转换
返回的都是字符串类型
将任意类型变量强制转换为二进制
# 进制转换 bin,oct,hex
# bin 将任意类型转换为二进制
help(bin)
# bin(number) =>二进制字符串
a = 10
print(a,"转换成二进制的结果:",bin(a))
a = 0x10
print(a,"转换成二进制的结果:",bin(a))
返回二进制字符串
将任意类型变量强制转换为八进制
# oct 将任意类型转换为八进制
help(oct)
a = 34
print(a,"转换成八进制的结果:",oct(a))
a = 0b11101001
print(a,"转换成八进制的结果:",oct(a))
返回八进制字符串
将任意类型变量强制转换为十六进制
# hex 将任意类型转换为十六进制
help(hex)
a = 34
print(a,"转换成十六进制的结果:",hex(a))
a = 0b11101001
print(a,"转换成十六进制的结果:",hex(a))
返回十六进制字符串
将任意类型变量强制转换为十进制
int(str,base) base没有指定时,默认为十进制
int(1.1) 将浮点数据转换为int型
返回int类型
a = 10
# a_oct是八进制字符串
a_oct = oct(a)
print(a_oct)
# help(int)
# 将八进制字符串强制转换为十进制,必须指定base的值,表示需要转换的变量是几进制
# base默认为10
a_int = int(a_oct, base=8)
print("结果是", a_int)
a_int = int(123)
print("结果是", a_int)
a_int = int('1010', base=2)
print("结果是", a_int)
a_int = int('0b1010', base=2)
print("结果是", a_int)
练习
print("计算两数之和")
a = input("请输入数字a:")
b = input("请输入数字b:")
print("a + b = ", int(a) + int(b))
print("进制转换器")
number = int(input("请输入一位10进制数:"))
print(number, "的二进制是", bin(number))
print(number, "的八进制是", oct(number))
print(number, "的十六进制是", hex(number))
float 浮点型
# float数据是不精确的
i = 0.7
i = i - 0.1
print(i)
i = i - 0.1
print(i)
i = i - 0.1
print(i)
i = i - 0.1
print(i)
float不精确的原因
"""
10 => 1010
因为在计算机里面数字都是用二进制保存的,而部分浮点型数据的小数无法用二进制精确的表示出来
条件判断 如果浮点数据变量尽量要使用<或>来进行比较
避免使用 a==0.7
"""
decimal
# Decimal 可以表示精确的浮点数
# 2.1 = > 整数位和小数分别存储 =》 使用整数的存储方式进行存储
# 所以小数部分也可以精确的表示
# 2 =>10
# 1 =>01
from decimal import Decimal
# Decimal 数据类型
# 表示精确的0.1数据
my_dec = Decimal('2.1')
print(my_dec, type(my_dec))
my_dec = Decimal(2.1)
print(my_dec, type(my_dec))
my_dec = Decimal('2.123')
print(my_dec, type(my_dec))
my_dec = Decimal(2.123)
print(my_dec, type(my_dec))
complex 复数
复数的基本形式是a+bi,其中a,b是实数,a称为实部,bi称为虚部,i是虚数单位
复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数
部分,这里的x和y都是实数。
# 复数
c = 1+1j
print(c,type(c))
d = -3+2j
sum = c + d
print(sum)
字符串
字符序列 有顺序的
字符串表示
单引号和双引号定义的字符串必须在一行,三引号定义的字符串可以分布在连续的多行
单引号 :‘word’
双引号:“It’s a hot day”
str1 = "It's a hot day!"
print(str1)
str2 = 'It\'s a hot day!'
print(str2)
三引号:
prompt = """
请选择您要选择的业务:
1.存款
2.取款
3.转账
"""
choice = input(prompt)
转义字符
raw功能的作用:
返回到原始(原生)的字符,
让\t失去代表tab键的功能
# 以反斜杠开头的字符,转义字符
prompt = "请选择您要选择的业务:\n1.存款\n2.取款\n3.转账"
print(prompt)
# r => raw =>原始 => 正则表达式
# 使用r时转义字符不起作用
prompt = r"请选择您要选择的业务:\n1.存款\n2.取款\n3.转账"
print(prompt)
字符串取值
下标法
prompt = "Today is a hot day!"
# 下标法取字符 =》 从0开始
# 正下标/索引,负下标/索引
print(prompt[0]) # T
print(prompt[-1]) # !
切片法
# 取多个字符 =》切片 =》str[开始下标:结束下标:步长] 包含开始值,不包含结束值
# 开始下标不写时,默认是字符串的开始
# 结束下标不写时,默认是字符串的结束
# 默认步长为1
print(prompt[0:5]) # Today
print(prompt[-4:-1]) # day
print(prompt[-4:]) # day!
print(prompt[::2]) # 步长为2,跳过一个输出
print(prompt[::3]) # 步长为3,跳过两个输出
# 倒叙输出,步长为负
print(prompt[::-1])
练习
取出yadoT
# 如果步长为负,从右到左取值
print(prompt[4::-1])
# 先取出Today,再逆向输出
print(prompt[0:5])
print(prompt[0:5][::-1])
字符串序列是不可变的
prompt = "Today is a hot day!"
print(prompt[6])
# 字符串是不可变序列,如果定义好了,不能修改它的值
prompt[6] = 'I'
# TypeError: 'str' object does not support item assignment
级连字符串
如果把两个字符串相邻放着,它们会被python自动级连。
如“cali,”'18’会自动转换为”cali, 18”
info = "cali," "18"
print(info) # cali,18
字符串常用方法
prompt = "Today is a hot day"
# dir => 查看对象有什么方法
print(dir(prompt))
print(dir(str))
# help => 查看方法如何用
# 对象.方法
# help(对象.方法)
help(prompt.title)
print(prompt.title())
判断类
# str.isdigit () 字符串中是否只包含数字
# str.isnumeric() 字符串中是否只包含数字,包括中文数字
mystr = '1234'
print(mystr.isdigit()) # T
mystr = '1234一二三q'
print(mystr.isnumeric()) # F
mystr = 'Hello world!'
print(mystr.istitle()) # F
print(mystr.isalpha()) # F
mystr='我是cali'
print(mystr.isalpha()) # T
mystr = "Today is a hot day!"
print(mystr.startswith("Today")) # T
print(mystr.startswith("hot",11)) # T
print(mystr.endswith("day!")) # T
统计类
mystr = "Today is a hot day"
print(len(mystr)) # 18
print(mystr.count("ay")) # 2
# 使用index方法时,如果没找到会报错,找到了就返回第一次出现的位置
print(mystr.index('day')) # 2
# 使用find方法时,如果没找到就返回-1,找到了返回第一次出现的位置
print(mystr.find('cold')) #-1
转换类
str = "Today is a hot day!"
print(str.upper()) #TODAY IS A HOT DAY!
print(str.lower()) #today is a hot day!
print(str.title()) #Today Is A Hot Day!
split
# split => 切割字符串 =》默认分隔符为一个或多个空格
str = "cali##18##female"
print(str.split('##'))
# 返回结果为列表
# ['cali', '18', 'female']
join
# join => 拼接字符串
mylist = ['cali', '18', 'female']
# "分隔符".join(列表)
print("##".join(mylist))
strip
# str.strip([string])
# strip 去除首尾指定的字符,默认为空白字符
my_email = " ladfieaf@123.com "
print(my_email.strip()) #ladfieaf@123.com
my_email = "ladfieaf@123.com"
print(my_email.strip("lamo")) #dfieaf@123.c
练习
s = "i,am,lilei"
s1 = s.replace(',', ' ')
print(s1) # i am lilei
print(s1[-5:]) # lilei
print(s1.upper()) # I AM LILEI
print(s1.lower()) # i am lilei
Python字符串拼接
# join
mylist = ['i', 'love', 'python']
mystr = " ".join(mylist)
print(mystr)
# + 效率差
mystr = ""
for item in mylist:
mystr = mystr + item
print(mystr)
Python字符串格式化-%
字符串格式化(%)
基本格式
%[(name)][flags][width].[precision]typecode
- (name):命名
- flags: +,-,’ ‘或0。+表示右对齐;-表示左对齐;’ '为一个空格,表示在正数的左侧填充一个空
格,从而与负数对齐,0表示使用0填充。
- width表示显示宽度
- precision表示小数点后精度
name = "cali"
age = 18
mystr = "%s %s" %(name,age)
print(mystr) # cali 18
字符串格式化-format
字符串格式化(format)
{变量:[填充字符][对齐方式 <^>][宽度][格式]}
name = "cali"
age = 18
mystr = "{1} {0}".format(name,age)
print(mystr) # 18 cali
字符串格式化-f
# 推荐 {变量名:[填充字符][对齐方式<^>][宽度][格式]}
# < 向左对齐,^居中对齐,>向右对齐
name = "cali"
age = 18
mystr = f"{name} {age}"
print(mystr) # cali 18
练习
a = "字符串拼接1"
b = "字符串拼接2"
c = a + b
print(c)
c = f"{a}{b}"
print(c)
mylist = [a,b]
c = "".join(mylist)
print(c)
c = ""
for item in mylist:
c = c + item
print(c)
print(len(c))
print(c[6])
str = "8*y*cali*china**it*soft*linux*python"
mystr = ""
i = 0
for item in str:
if item == '*':
i = i + 1
str = str.replace("*", "")
str = "*"*i + str
print(str) # ********8ycalichinaitsoftlinuxpython
布尔类型
布尔值(Booleans) 布尔值是一个逻辑值。
取值范围
• 只有 True和 False(真和假)
哪些值布尔值为假
• ‘’, 0, 0.0, (), [],{},None, False
• None是一个特殊的常量,表示一种特殊的数据类型(NoneType)
哪些值布尔值为真
)
mylist = [a,b]
c = “”.join(mylist)
print©
c = “”
for item in mylist:
c = c + item
print©
```python
print(len(c))
print(c[6])
str = "8*y*cali*china**it*soft*linux*python"
mystr = ""
i = 0
for item in str:
if item == '*':
i = i + 1
str = str.replace("*", "")
str = "*"*i + str
print(str) # ********8ycalichinaitsoftlinuxpython
布尔类型
布尔值(Booleans) 布尔值是一个逻辑值。
取值范围
• 只有 True和 False(真和假)
哪些值布尔值为假
• ‘’, 0, 0.0, (), [],{},None, False
• None是一个特殊的常量,表示一种特殊的数据类型(NoneType)
哪些值布尔值为真
• 除了为假的,其他的都为真