Python语言程序设计笔记 - 3 基本数据类型
3 基本数据类型
3.1 数字类型及其操作
整数类型
- 可正可负,没有取值的范围限制
- pow(x,y) 计算x^y
- 表示形式:十进制表示,二进制(0b,0B开头)、八进制(0o,0O表示)、十六进制(0x,0X)
浮点数类型:带有小数点及小数的数字
- 浮点数间运算存在不确定尾数,不是bug
- 0.1 + 0.2 == 0.3 # False
- round(x, d) 对x四舍五入,d是小数截取的位数
- 浮点数运算及比较,用round函数辅助
- 科学计数法:4.3e-3 = 0.0043
复数类型:
- z=a+bj
- z.real 获得实部,z.image获得虚部
数值操作符:



整数->浮点数->复数
数值运算函数:
- abs(x) : 求绝对值
- divmod(x, y) : 商余
- pow(x, y[, z]) : 幂余
- round(x, d) : 四舍五入,d是保留小数位,默认为0
- max(x1, x2, … , xn) : 求数列中的最大值
- min(x1, x2, … , xn) : 求数列中的最小值
- int(x) : 将x变为整数型
- float(x) : 将x变为浮点数型
- comlex(x) : 将x变为复数型
3.2 实例3:天天向上的力量
Q1:计算努力和放松365天的差别
1 | dayup = pow(1.001, 365) |
Q2:不同努力程度的差别
1 | dayfactor = 0.01 |
Q3:五天工作,两天休息
1 | dayup = 1 |
Q4:要怎样的努力程度才能追上别人
1 | def dayUP(df): |
3.3 字符串类型及操作
字符串类型及操作
字符串:由0个或多个字符组成的有序字符序列
字符串共有两类四种表示:
- 由一对单引号或双引号表示,仅表示单行字符串
- 由一对三单引号或三双引号表示,可表示多行字符串
字符串的序号;正向递增序号,反向递减序号
索引:
[ ] 切片:
[M: N: K],头,尾,步长,省略表示索引至一端。逆序:[::-1] 转义符:

字符串操作符:
- x + y: 连接两个字符串x和y
- n * x 或 x * n: 复制n次字符串x
- x in s:如果x是s的子串,返回True,否则返回False
字符串处理函数:
- len(x) : 计算字符串的长度
- str(x) : 转换x为字符串类型
- hex(x) 或 oct(x) : 将整数x的十六进制或者八进制小写心事的字符串
- chr(u) : u为unicode编码,返回其对应的字符
- ord(x) : x为字符,返回其对应的Unicode编码
字符串的处理方法:< a >.< b >
- str.lower() 或 str.upper() : 返回字符串的副本,全部为大写或小写字符
- str.split(sep=None) :返回一个列表,由str根据sep被分割的部分组成
- str.count(sub) : 返回子串sub在str中出现的次数
- str.replace(old, new) : 返回字符串的副本,所有old子串被替换为new
- str.center(width[,fillchar]) : 字符串str根据宽度width居中,fillchar可选
- str.strip(chars) 从str中去掉在其左侧和右侧chars中列出的字符
- str.join(iter) : 在iter变量除最后元素外每个元素后增加一个str
字符串类型的格式化:
槽:{ <序号>: <格式控制标记>}


3.4 模块2:time库的使用
time库的基本情况
- 表达计算机时间
- 提供获取系统时间并格式化输出功能
- 提供系统级精确计时功能,用于程序性能分析
- import time
time库包括三类函数:
时间获取:
- time() : 获取当前系统的时间戳,级计算机内部的时间值
- ctime() : 获取当前时间并以易读方式表示,返回字符串
- gmtime() : 获取当前时间,输出为结构体
时间格式化:将时间以合理的方式展示出来
strftime(tpl, ts) : tpl是格式化模板字符串,用来定义输出效果;ts是计算机内部时间变量类型


1
2
3import time
t = time.gmtime()
time.strftime("%Y-%m-%d %H:%M:%S",t)strpitme() : 将一段字符串变成时间
程序计时应用:
- perf_counter() : 返回一个CPU级别的精确时间计数值,单位为秒
- sleep(s) : s拟休眠的时间,单位是秒,可以是浮点数
3.5 实例4:文本进度条
文本进度条
1
2
3
4
5
6
7
8
9
10
11#TextProBarV1.py
import time
scale = 10
print("------Start------")
for i in range(scale+1):
a = '*' * i
b = '.' * (scale - i)
c = (i/scale)*100
print("{:^3.0f}%[{}->{}]".format(c,a,b))
time.sleep(0.5)
print("------End------")向下刷新的文本进度条
1
2
3
4
5#TextProBarV2.py
import time
for i in range(101):
print("\r{:3}%".format(i), end="")
time.sleep(0.1)进度条:
1
2
3
4
5
6
7
8
9
10
11
12
13#TextProBarV3.py
import time
scale = 50
print("Start".center(scale//2, "-"))
start = time.perf_counter()
for i in range(scale+1):
a = '*' * i
b = '.' * (scale - i)
c = (i/scale)*100
dur = time.perf_counter() - start
print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end='')
time.sleep(0.1)
print("\n"+"End".center(scale//2,'-'))进度条设计函数

3. Practice
三次方格式化: 获得用户输入的一个数字,可能是整数或浮点数,a,计算a的三次方值,并打印输出。输出结果采用宽度20个字符、居中输出、多余字符采用减号(-)填充。如果结果超过20个字符,则以结果宽度为准。
Input:
10Output:
--------1000------1
2s=input()
print("{0:-^20}".format(pow(eval(s),3)))星号三角形:读入一个整数N,N是奇数,输出由星号字符组成的等边三角形,要求:第1行1个星号,第2行3个星号,第3行5个星号,依次类推,最后一行共N的星号。
Input: 3
Output:
1
2*
***1
2
3num = eval(input())
for i in range(round((num+1)/2)):
print(round((num-2*i-1)/2)*" "+(2*i+1)*"*"+round((num-2*i-1)/2)*" ")凯撒密码:
原文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
假设用户可能使用的输入包含大小写字母a
zAZ、空格和特殊符号,请编写一个程序,对输入字符串进行恺撒密码加密,直接输出结果,其中空格不用进行加密处理。使用input()获得输入。1
2
3
4
5
6
7
8
9
10
11
12Str = input()
p="abcdefghijklmnopqrstuvwABCDEFGHIJKLMNOPQRSTUVW"
q="xyzXYZ"
for i in range(0, len(Str)):
if Str[i] == ' ':
print(' ', end="")
elif Str[i] in q:
print(chr(ord(Str[i])-23),end='')
elif Str[i] in p:
print(chr(ord(Str[i])+3),end='')
else:
print(Str[i],end='')


