python-基础数据类型

数值类型

整数类型(int)

  • 整数通常被称为整型,数值为正或者负,不带小数点。表示数字的时候,通常
    使用十进制(decimal) 来表示。
进制描述函数
十六进制用0x前缀和0-9,a-f表示hex() -->10进制转16进制
八进制用0o前缀和0-7表示oct() -->10进制转8进制
二进制用0b前缀和0-1表示bin() -->10进制转2进制
  • 整数长度32位
  • 连续分配内存地址
  • 小整数对象池,范围-5~256 (节省开销,增快运行速度)
  • 整数缓冲区

浮点数(float)

  • 浮点数也就是小数,较大的数一般用科学计数法进行表示,把10用e替代,1.23x10^9就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等
  • 浮点数与整数之间转换

在这里插入图片描述

复数(complex)

  • 复数由 实数部分 和 虚数部分 构成,可以用 a + bj, 或者 complex(a,b) 表示,
    复数的 实部a 和 虚部b 都是浮点。

数学计算

  • 需要导入math模块的科学计算函数有
项目描述
math.ceil(x)向上取整
math.floor(x)向下取整
math.pow(x,y)x**y(幂次)
import math             # 导入标准库math

print(math.ceil(4.1))   # 5:向上取整

print(math.floor(4.5))  # 4:向下取整

print(math.pow(2, 3))   # x**y  2**3

  • 不需要导入math模块:
项目描述
abs(x)取绝对值
round(x)四舍六入五成偶
a = -10                 # 初始化变量a
print(abs(a))           # 10 打印取绝对值后的值


# python3进行改良,不再是四舍五入,而是四舍六入五成偶
print(round(4.1))       # 舍去为4

print(round(4.5))       # 舍去为4

print(round(4.6))       # 进15

print(round(3.5))       # 4

注意:五成偶具体解释是:看这个5后面还有没有非0数字,如果没有,就是奇进偶不进,如果有非0数字,不管5前面是奇数还是偶数,都进1,如果这个5后面没有非0数字,这个5前面是奇数就进1,偶数就不进1

布尔值和空值

布尔值

布尔类型就两个值,True和False 注意:首字母必须大写

  • 数值类型:0、0.0bool 值都为False ,其它的都为 True
  • 字符串:空字符串bool 值False,其它的都为 True。注意空格字符串为 True
  • 列表:空列表bool 值False,其它的都为 True。
  • Nonebool 值永远为 False
    我们可以通过 python 内置的 bool()函数来测试一个表达式的布尔值的结果
print(bool(True))     # True
print(bool(False))    # False

# 数值:0 0.0的bool值为False,其余的全为True
print(bool(1))        # True
print(bool(-1))       # True
print(bool(0))        # False
print(bool(0.0))      # False

# 字符串:只有空字符串的bool值为False,其余均为True。注意:含有空格的字符串也是非空字符串
print(bool("yes"))    # True
print(bool(""))       # False
print(bool("  "))     # True
print(bool("0"))      # True

# 列表
print(bool([]))              # False
print(bool([1, 2, 3]))       # True

# None
print(bool(None))               # False  None的布尔值永远为False


布尔类型运算

  • and 运算
  • or 运算
  • not 运算
  • 算术 运算,注意:把 True 看作1,而 False 看作 0
"""
布尔算数运算
"""
print(True + 1)    # 2
print(False + 1)   # 1

空值

  • 空值不是布尔类型,是 Python 里一个特殊的值,用 None 表示(首字母大写)。None 不能理解为0,因为0是整数类型,而 None 是一个特殊的值。None 也不是布尔类型,而是 NoneType

字符串

使用单引号或双引号来创建字符串,使用三引号创建多行字符串

  • 字符串的单引号与双引号都是 成对 出现的,不能一边单一边双。
  • 字符串是 不可变 的 序列数据类型,不能直接修改字符串本身,和数值类型一样。

字符串的储存

  • 整数 在内存中占 一个字节
  • 字符串 不管中间多少内容都要 单独存储
    在这里插入图片描述

字符串的下标

  • 由于字符串是 序列数据结构 ,所以我们可以通过 下标 将字符串中某个字母取出来。下标也可称为 索引,默认从0开始

字符串的切片

切片模式:a[start:stop:step]
注意:

  • 索引默认从0开始
  • 切片时左闭右开
  • 当是取单个字符的时候,索引超出范围会报错。而切片时不会报错。
  • 步长不能为0,也不允许为浮点数

字符串类型转换

在这里插入图片描述

字符串组成方式

  • 字符串相加
"""
字符串拼接
"""
print('1'+'2')    # 字符串用+做拼接 '12'
  • 字符串格式化
    • %s %d %f
    • str.format()
    • python3.6.4 引入 f”
"""
字符串格式化
"""
name = "hansen"
age = 20

# %号格式需要考虑数据类型
# %s --> str
# %d --> decimal
# %f --> float
print("%s年龄为%d" % (name, age))


# str.format() 好处1:不用考虑数据类型 好处2:可以切换位置
# {} --> 占坑
print("{1}年龄为{0}".format(age, name))


# f''  python3.6.4以上的版本
# {} --> 占坑
print(f"{name}年龄为{age}")

字符串常见操作

  • 语句: S.find(sub[, start[, end]])
    返回该元素最小的索引
    • sub–> 查找值(字符串子串)
    • start–> 从该索引位置开始查找
    • end–> 在该索引位置结束查找,如果查找值刚好在该索引位置,不会返回索引位置
    • 返回值类型:整型
    • 查找值不在该字符串之内,程序不会报错返回值-1
# 初始化变量name
name = 'Michael Jackson'

print(type(name.find('c')))     # 返回值类型--> <class 'int'>

print(name.find('c'))           # 返回字符串中第一个字符'c'索引位置--> 2

print(name.find('c', 10, 11))   # 在字符串索引7<= index < 11查找并返回'c'最小索引位置--> 10

print(name.rfind('c'))          # 返回字符串中倒数第一个'c'位置--> 10

print(name.find('A'))         # 查找值'A'明显不在该字符串之内,但程序不会报错,返回值---> -1
  • 语句 S.index(sub[, start[, end]])
    返回该元素最小的索引,与s.find()使用方法一样
    区别:

    • 查找值不在该字符串之内,程序报错.(与s.find()的区别点)
  • 语句: S.replace(old, new[, count])
    替换

    • old–> 目标值
    • new–> 替换值
    • count–> 替换次数,默认全部替换
    • 返回值类型:字符串类型
# 初始化变量name
name = 'Michael Jackson'

print(name.replace('c', 'C'))     # 将字符串中c 全部替换为C --> 'MiChael JaCkson'

print(name.replace('c', 'C', 1))  # 将字符串中c 替换为C ,仅替换一次--> 'MiChael Jackson'

print(name)                       # 以上操作只是创建副本,不会对原字符串进行修改 -->'Michael Jackson'
  • 语句 S.split(sep=None, maxsplit=-1)
    以sep来分割字符串,并返回列表。sep默认为None,分割默认为空格
    • sep–> 使用sep作为分隔符字符串,并在返回值中删除sep (如果未指定sep,则sep=None 任何空白字符串都是分隔符,并从返回值中删除空白字符串。)
    • maxsplit–> 切片次数,默认全部切片
    • 返回值类型:字符串列表类型
# 初始化变量name
name = 'Michael Jackson'

print(name.split("c"))     # 以’c'作为分割符,来分割字符串 -->['Mi', 'hael Ja', 'kson']

print(name.split("c", 1))  # 以’c'作为分割符,来分割字符串.仅进行1次切片 -->['Mi', 'hael Jackson']

print(name.split())        # 未指定分隔符,则视为空白字符串作为分隔符--> ['Michael', 'Jackson']

print(name.split('5'))     # 指定分隔符不在字符串内,则输出整个字符串列表 --> ['Michael Jackson']
  • 语句:S.startswith(prefix[, start[, end]])
    判断字符串是否以前缀开始,返回为bool值。如果s以指定的前缀开始,则返回True,否则False
    • prefix–> 前缀值
    • start–> 开始比较位置
    • end–> 结束比较位置
    • 返回值类型:布尔
# 初始化变量name
name = 'Michael Jackson'

print(name.startswith('M'))      # 字符串以‘M’开头 -->True

print(name.startswith('J'))      # 字符串不以‘J’开头 -->False

print(name.startswith('J', 8))   # 字符串在比较起始位置8处以‘J’开头 -->True
  • 语句:S.endswith(suffix[, start[, end]])
    判断字符串是否以尾缀结束,返回为bool值。如果字符串以指定的后缀缀结束,则返回True,否则False
    • prefix–> 前缀值
    • start–> 开始比较位置
    • end–> 结束比较位置
    • 返回值类型:布尔
# 初始化变量name
name = 'Michael Jackson'

print(name.endswith('son'))        # 字符串以‘son’结尾 -->True

print(name.endswith('el'))       # 字符串不以‘el’结尾 -->False

print(name.endswith('el', 0, 7))   # 字符串在索引位置0~7内(即字符串'Michael')以‘el’结尾 -->True
  • 语句:S.lower()
    将字符串全部转为小写,返回一个转换成全小写字母的字符串副本
    • 返回值类型:字符串
# 初始化变量name
name = 'Michael Jackson'

print(name.lower())  # 将字符串全部转换为全小写字母'michael jackson'

print(name)          # S.lower()不会改变原字符串,只是创建了副本并进行修改 -->'Michael Jackson'
  • 语句:S.upper()
    将字符串全部转为大写,返回一个转换成全大写字母的字符串副本
    • 返回值类型:字符串
# 初始化变量name
name = 'Michael Jackson'

print(name.upper())  # 将字符串全部转换为大写字母'MICHAEL JACKSON'

print(name)          # S.upper()不会改变原字符串,只是创建了副本并进行修改 -->'Michael Jackson'
  • 语句:S.strip([chars])
    默认去掉字符串左右的空格
    • 返回一个去除掉指定字符的字符串副本
    • 如果chars没有指定值则返回一个去除掉字符串首位空白字符的字符串副本
    • 返回值类型:字符串
# 初始化变量name
name = '-Michael Jackson-   '

print(name.strip())      # 返回一个去除掉字符串首位空白字符的字符串副本-->'-Michael Jackson-'

print(name.strip('-'))   # 返回一个去除掉首尾字符'-'的字符串副本-->'Michael Jackson-   '
  • 语句:S.isalpha()
    判断字符串是否全为字母,如果字符串全为字母则返回True 否则False
    • 如果字符串为空,则返回False
    • 返回值类型:布尔
# 初始化变量name,name1,name2
name = 'MichaelJackson'
name1 = 'Michael Jackson'
name2 = ''

print(name.isalpha())   # 字符串全为字母-->True

print(name1.isalpha())  # 字符串不全为字母,存在空白字符-->False

print(name2.isalpha())  # 空字符串-->False
  • 语句:S.isdigit()
    判断字符串是否全为数字,如果字符串全为数字则返回True 否则False
    • 如果字符串为空,则返回False
    • 返回值类型:布尔
# 初始化变量name,name1,name2
name = '123456789'
name1 = '1234 5678 9'
name2 = ''

print(name.isdigit())   # 字符串全为字母-->True

print(name1.isdigit())  # 字符串不全为数字,存在空白字符-->False

print(name2.isdigit())  # 空字符串-->False
  • S.isalnum()
    判断字符串是否全为数字或者字母,不存在特殊字符,如果字符串全为数字和字母组成则返回True 否则False
    • 如果字符串为空,则返回False
    • 返回值类型:布尔
# 初始化变量name,name1,name2
name = 'ABC123'
name1 = 'ABC 123'
name2 = ''

print(name.isalnum())   # 字符串全为字母和数字-->True

print(name1.isalnum())  # 字符串不全为数字和字母,存在空白字符-->False

print(name2.isalnum())  # 空字符串-->False
  • S.join(iterable)
    将序列中的元素以指定的字符连接生成一个新的字符串
  • 返回值类型:字符串
# 初始化name,name1
name = 'Michael Jackson'
name1 = list("abcdefg")  # 列表

print(','.join(name))    # 输出打印以字符','连接迭代而成的新字符串-->'M,i,c,h,a,e,l, ,J,a,c,k,s,o,n'

print(','.join(name1))   # 输出打印以字符','连接迭代而成的新字符串-->'a,b,c,d,e,f,g'

作业一

  • 当输入y或Y打印进入卸载,
    当输入n或N打印退出程序,
    输入其它则打印输入不在选项范围之内
# 初始化变量option
option = input("卸载程序请输入y/Y,退出程序请输入n/N:")

# 对option进行判断
if option in ['y', 'Y']:    # 输入字符是"y""Y"
    print("进入卸载")               # 输出打印“进入卸载”
elif option in ['n', 'N']:       # 输入字符是"n""N"
    print("退出程序")               # 输出打印“退出程序”
else:                             # 否则
    print("不在选项范围之内")        # 打印输出"不在选项范围之内"

作业三

  • 完成字符串的逆序以及统计
    设计一个程序,要求只能输入长度低于20的字符串,
    当满足需求时,则打印出字符串长度
    以及使用切片逆序打印出字符串
    当不满足需求时,打印用户重新输入
# 初始化列表变量str_input
str_input = input("请输入:")

# 判断输入字符长度
if len(str_input) < 20:                                                  # 长度<20
    print(f"该字符长度:{len(str_input)} \n字符逆序:{str_input[::-1]}")   # 输出字符长度和字符逆序
else:                                                                    # 否则
    print("请重新输入")                                                   # 输出“请重新输入”

作业四

  • ’3’+’4’的结果是什么?
    结果是: ‘34’
    原因: + 可使两字符串首尾拼接
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值