Python北理工_第三章 基本数据类型

本文介绍了Python中的数字类型(整数、浮点数、复数)及其运算,如pow、round和科学计数法,并深入解析了字符串类型表示、操作符、处理函数及格式化技巧。此外,还涵盖了time库的时间获取、格式化和计时功能,适合初学者理解基础编程概念。
摘要由CSDN通过智能技术生成

3.1 数字类型及操作

整数类型、浮点数类型、复数类型、数值运算操作符

1.整数类型

与数学中的整数概念一致

  • -可正可负,没有取值范围限制
  • -pow(x, y)函数,计算x^{y},想算多大算多大

4种进制表示形式

  • 十进制:1010,99,-217
  • 二进制:以0b或0B开头:0b010,-0B101
  • 八进制:以0o或0O开头:0o123,-0O456
  • 十六进制:以0x开头或0X开头:0x9a,-0X89

2.浮点数类型

与数学中的实数概念一致

  • 带有小数点及小数的数字
  • 浮点数取值范围和小数精度都存在限制,但常规计算可忽略
  • 取值范围数量级约,精度数量级

浮点数 运算存在不确定尾数(不是bug)

  • round(x, d):对x四舍五入,d是小数截取位数
  • 浮点数之间 运算及比较 用round()函数进行辅助
  • 不确定尾数一般发生在,round()十分有效

科学计数法

使用字母e或E作为幂的符号,以10为基数,格式如下:

<a>e<b>,表示:a*10^{b}

例如:

4.3e-3,4.3*10^{-3},0.0043

9.6E5,9.6*10^{5},960000.0

3.复数类型 

如果 x^{2}=-1,那么 x 的值是什么?

定义 j=\sqrt{-1},以此为基础,构建数学体系

a+bj 被称为复数,其中,a是实部,b是虚部

z.real 获取实部,z.imag 获取虚部

例:

z = 1.23e-4+5.6e+89j
print(z.real)  
# 0.000123
print(z.imag)
# 5.6e+89

4.数值运算操作符

x + y
x - y
x * y
x / y除,10 / 3=3.3333
x // y整数除,10 / 3 = 3
+ xx 本身
x % y取余,10 % 3 = 1
x ** y幂运算,x 的 y 次幂
x op= y

二元操作符

x = x op y

数字类型的关系

类型之间可以进行混合运算,生成结果为“最宽”类型

整数->浮点数->复数

例:123+4.0 = 127.0

 数值运算函数

一些以函数形式提供的数值运算功能
函数及使用描述
abs(x)

绝对值,x的绝对值

abs(-10.01)结果是10.01

divmod(x, y)

商余,同时输出 商和余数-->(x//y, x%y)

divmod(10, 3)  结果为 (3, 1)

pow( x, y[, z] )

幂余,(x**y)%z

pow(3, pow(3, 99), 10000) 结果为4587

round( x[, d] )

四舍五入,d是保留小数位数,默认值为0

round(-10.123, 2) 结果为 -10.12

max(x1, x2, ..., xn)最大值
min(x1, x2, ..., xn)最小值
int( x )

将 x 变成整数,舍弃小数部分

float( x )

将 x 变成浮点数,增加小数部分

float(12) 结果为12.0

float("1.23") 结果为 1.23

complex( x )

将 x 变成复数,增加虚数部分

complex(4) 结果为 4+0j

3.2 实例3:天天向上的力量

程序大意:小明一年365天每天努力工作,小红则工作日努力,周末休息,则小红在工作日要多努力才能达到和小明努力一年的效果?

程序流程图:

程序代码:

def dayUP(df):
    dayup = 1
    for i in range(365):
        if i % 7 in [6, 0]:
            dayup = dayup * (1 - 0.01)
        else:
            dayup = dayup * (1 + df)
        return dayup
    dayfactor = 0.01
    while dayUP(dayfactor) < 37.78:
        dayfactor += 0.001
    print("工作日的努力参数是:{:.3f}".format(dayfactor))

 输出结果为:0.019

结论:工作日模式下,每天要努力到1.9%,相当于365天模式每天1%

3.3 字符串类型及操作

1.字符串类型的表示

单行字符串:单引号 or 双引号

多行字符串:三单引号 or 三双引号

在字符串中包含 双引号 or 单引号:

# 'hello'
print("'hello'")
# "hello"
print('"hello"')
# '"hello"'
print(''' '"hello"' ''')

正向递增序号 和 反向递减序号

 使用 [ ] 获取字符串中的一个或多个字符

索引:返回字符串中单个字符  <字符串>[M]

切片:返回字符串中一段字符子串  <字符串>[M : N]

name="gengsj"
# j
print(name[-1])
# geng
print(name[0: 4])

 字符串切片的高级用法

使用 [ M: N: K ] 根据步长对字符串切片

<字符串>[M: N],M缺失表示 至开头,N缺失表示 至结尾

<字符串>[M: N: K],根据步长K 对字符串切片

示例:

str = "HarryPotter"
# 从开头到第五个元素(不包含第五个元素)
print(str[: 5])
# 从第五个元素到末尾
print(str[8: ])
# 从第一个元素到第八个元素,跳跃2
print(str[1: 8: 2])
# 翻转字符串
print(str[: : -1])

 转义字符 \

  • 表达特定字符的本意
print("这里有个双引号(\")")
# 这里有个双引号(")
  •  形成一些组合,表达一些不可打印的含义

        "\b"回退    "\n"换行(光标移动到行首)   "\r"回车(光标移动到行首)

2.字符串操作符

操作符及使用描述
x + y连接两个字符串 x 和 y
n * x 或 x * n复制 n次字符串
x in s如果 x 是 s 的子串,则返回 True,否则返回 False

示例:输入星期几的数字,输出对应中文

weekStr = "一二三四五六日"
weekId = eval(input("请输入星期数字(1-7):"))
print("星期" + weekStr[weekId - 1])

3.字符串处理函数 

函数及使用描述
len(x)长度,返回字符串x的长度
str(x)

把 x 转成字符串格式

str(1.23) 结果为 "1.23"

str([1, 2]) 结果为 "[1, 2]"

hex(x) 或 oct(x)

整数 x 的 十六进制 或 八进制 小写形式字符串

hex(425) 结果为 "0x1a9"

oct(425) 结果为 "0o651"

chr(u)u为Unicode编码,返回其对应的字符
ord(x)x为字符,返回其对应的Unicode编码

 

 示例:打印十二星座

for i in range(12):
    print(chr(9800 + i), end=" ")
# 最后end=" ",是把本来要输入的换行符换成 一个空格

4.字符串处理方法

“方法”

  • “方法”特指 <a>.<b>() 风格中的函数 <b>()
  • 方法本身也是函数,但与<a>有关,<a>.<b>() 风格使用
  • 字符串及变量也是 <a>,存在一些方法

 一些以方法形式提供的字符串处理功能

方法及使用描述
str.lower(),  str.upper()

返回字符串的副本,全部字符小写/大写

"AbCdEfGh".lower()  结果为 "abcdefgh"

str.split(sep = None)

返回一个列表,由 str 根据 sep 被分隔的部分组成

"A,B,C".split(",") 结果为 ['A', 'B', 'C']

str.count(sub)

返回子串 sub 在 str 中出现的次数

"an apple a day".count("a") 结果为4

str.replace(old, new)

返回字符串 str副本,所有 old 子串被替换为new

"python".replace("n", "n123.io")

结果为 "python123.io"

str.center(width [,fillchar])

字符串str根据宽度width居中,fillchar可选 

"python".center(20, "=")

结果为 =======python=======

str.strip(chars)

从str中去掉 chars中列出的字符

"= python= ".strip(" =np")

"ytho"

str.join(iter)

在iter变量除最后元素外每个元素后增加一个str

",".join("12345")结果为

"1, 2, 3, 4, 5"

5.字符串类型的格式化

格式化:对字符进行格式表达的方式

<模板字符串>.format(<逗号分隔的参数>)

# 输出宽度为20,居中对齐,不满20个字符用=填充
print( "{0:=^20}".format("PYTHON") )
# '=======PYTHON======='

# 输出宽度为20,右对齐,不满20个字符用*填充
print( "{0:*>20}".format("BIT") )
# '*****************BIT'

# 输出宽度为10,默认左对齐,添加空格补齐
print("{:10}".format("BIT"))
# 'BIT       '

# 注意:单引号之内为输出内容

3.4 模块2:time库的使用

1.time库基本介绍

time库是 Python 中处理时间的标准库

  • 计算机时间的表达;
  • 提供获取系统时间并格式化输出功能
  • 提供系统级精确计时功能,用于程序性能分析
import time
time.<b>()

2.时间获取 time(), ctime(), gmtime()

函数描述
time()

获取当前时间戳,即计算机内部时间值,(浮点数)

>>>time.time()

1650193056.0178475

ctime()

获取当前时间并以易读方式表示,返回字符串

>>>time.ctime()

Sun Apr 17 18:58:30 2022

gtime()

获取当前时间,表示为计算机可处理的时间格式

>>>time.gtime()

time.struct_time(tm_year=2022, tm_mon=4, tm_mday=17, tm_hour=10, tm_min=59, tm_sec=18, tm_wday=6, tm_yday=107, tm_isdst=0)

3.时间格式化

将时间以合理的方式展示出来

  • 格式化:类似字符串格式化,需要有展示模板
  • 展示模板由特定的格式化控制符组成
函数描述
strftime(tpl, ts)

tpl:格式化模板字符串,定义输出效果

ts:计算机内部时间类型变量

>>>t = time.gmtime()

>>>time.strftime("%Y-%m-%d %H:%M:%S", t)

2022-04-17 11:04:33

strptime(str, tpl)

str:字符串形式的时间值

tpl:格式化模板字符串,用来定义输入结果

>>>timeStr = '2022-04-17 11:04:33'

>>>time.strptime(timeStr, "%Y-%m-%d %H:%M:%S")

字符说明

格式化字符串日期 / 时间说明值范围 和 实例
%Y年份0000~9999
%m月份01~12
%B月份名称January~December
%b月份名称缩写Jan~Dec
%d日期01~31
%A星期Monday~Sunday
%a星期缩写Mon~Sun
%H小时(24h制)00~23
%I小时(12h制)01~12
%p上午/下午AM, PM
%M分钟00~59
%S00~59

4.程序计时

  • -指测量起止动作所经历时间的过程
  • 测量时间:perf_counter()
  • 产生时间:sleep()
函数

描述

perf_counter()

返回一个CPU级别的精确时间计数值,单位为秒

要程序开始前计数一次,完成时再计数一次,计算差值

>>>start = time.perf_counter()

>>>end = time.perf_counter()

>>>end - start

sleep(s)

拟休眠的时间,单位是秒,可以是浮点数

>>>def wait(): time.sleep(3.3)

>>>wait()      程序将等待3.3秒之后退出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值