python学习笔记(3)

时间:2022-08-29 23:36:03

......................................................................................................................................................................................

基本数据类型

......................................................................................................................................................................................

数字类型及操作

整数类型

可正可负,没有取值范围限制

pow(x,y)函数:计算 x^y,想算多大算多大

  • 4种进制表示形式

    十进制:1010, 99, -217

    二进制,以0b或0B开头:0b010, -0B101

    八进制,以0o或0O开头:0o123, -0O456

    十六进制,以0x或0X开头:0x9a, -0X89

浮点数类型

带有小数点及小数的数字

浮点数取值范围和小数精度都存在限制,但常规计算可忽略

取值范围数量级约-10307至10308,精度数量级10^-16

需要注意的是:浮点数间的运算存在不确定尾数,这不是bug

例如:0.1 + 0.3

0.4

0.1 + 0.2

0.30000000000000004

不确定尾数

由此可借用round()函数

round(x, d):对x四舍五入,d是小数截取位数

浮点数间运算与比较用round()函数辅助

不确定尾数一般发生在10-16左右,round()十分有效

科学计数法

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

(a)e(b)表示 a*10^b

例如:4.3e-3 值为0.0043

复数类型

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

例:z = 1.23e-4+5.6e+89j

实部是什么? z.real 获得实部

虚部是什么? z.imag 获得虚部

数值运算操作符

操作符及使用 描述
x + y 加,x与y之和
x – y 减,x与y之差
x * y 乘,x与y之积
x / y 除,x与y之商 10/3结果是3.3333333333333335
x // y 整数除,x与y之整数商 10//3结果是3
+x x本身
-x x的负数
x % y 余数,模运算 10%3结果是1
x ** y 幂运算,x的y次幂,x^y。当y是小数时,则是开方运算 10**0.5结果是√10
x op= y 即 x = x op y,其中op为二元操作符 如:x += 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,[..]表示参数z可省略 pow(3, pow(3, 99), 10000) 结果为 4587
round(x[, d]) 四舍五入,d是保留小数位数,默认值为0 round(-10.123, 2) 结果为 -10.12
max(x1,x2, … ,xn) 最大值,返回x1,x2, … ,xn中的最大值,n不限 max(1, 9, 5, 4, 3) 结果为 9
min(x1,x2, … ,xn) 最小值,返回x1,x2, … ,xn中的最小值,n不限 min(1, 9, 5, 4, 3) 结果为 1
int(x) 将x变成整数,舍弃小数部分int(123.45) 结果为123; int("123") 结果为123
float(x) 将x变成浮点数,增加小数部分float(12) 结果为12.0; float("1.23") 结果为1.23
complex(x) 将x变成复数,增加虚数部分complex(4) 结果为 4 + 0j

实例3: 天天向上的力量

问题:工作日的努力

工作日模式要努力到什么水平,才能与每天努力1%一样?

A君: 一年365天,每天进步1%,不停歇

B君: 一年365天,每周工作5天休息2天,休息日下降1%,要多努力呢?

#DayDayUpQ4.py
def dayUP(df): //根据df参数计算工作日力量的函数参数不同,这段代码可共用def保留字用于定义函数
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: //while保留字判断条件是否成立条件成立时循环执行
dayfactor += 0.001
print("工作日的努力参数是:{:.3f} ".format(dayfactor))

字符串类型及操作

字符串类型的表示

字符串有 2类共4种 表示方法

  • 由一对单引号或双引号表示,仅表示单行字符串

    "请输入带有符号的温度值: " 或者 'C'
  • 由一对三单引号或三双引号表示,可表示多行字符串

    ''' Python

    语言 '''
  • 如果希望在字符串中包含双引号或单引号呢?

    '这里有个双引号(")' 或者 "这里有个单引号(')"
  • 如果希望在字符串中既包括单引号又包括双引号呢?

    ''' 这里既有单引号(')又有双引号 (") '''

    字符串切片高级用法

    使用[M: N: K]根据步长对字符串切片
  • <字符串>[M: N],M缺失表示至开头,N缺失表示至结尾

    "〇一二三四五六七八九十"[:3] 结果是 "〇一二"
  • <字符串>[M: N: K],根据步长K对字符串切片

    "〇一二三四五六七八九十"[1:8:2] 结果是 "一三五七"

    "〇一二三四五六七八九十"[::-1] 结果是 "十九八七六五四三二一〇"

    字符串的特殊字符

    转义符 \
  • 转义符表达特定字符的本意

    "这里有个双引号(")" 结果为 这里有个双引号(")
  • 转义符形成一些组合,表达一些不可打印的含义

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

字符串操作符

由0个或多个字符组成的有序字符序列

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

获取星期字符串

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

字符串处理函数

一些以函数形式提供的字符串处理功能

函数及使用 描述
len(x) 长度,返回字符串x的长度 len("一二三456") 结果为 6
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) x为Unicode编码,返回其对应的字符
ord(x) x为字符,返回其对应的Unicode编码

字符串处理方法

"方法"在编程中是一个专有名词

"方法"特指(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" #主要用于字符串分隔等

字符串类型的格式化

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

字符串格式化使用.format()方法,用法如下:

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

槽内部对格式化的配置方式

{ <参数序号> : <格式控制标记>}

: | <填充> | <对齐> | <宽度> | <,> | <.精度> | <类型>

引导符号|用于填充的单个字符 | < 左对齐 > 右对齐 ^ 居中对齐 | 槽设定的输出宽度 | 数字的千位分隔符|浮点数小数精度|整数类型等

模块2: time库的使用

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

time库包括三类函数

  • 时间获取:time() ctime() gmtime()
  • 时间格式化:strftime() strptime()
  • 程序计时:sleep(), perf_counter()

时间获取

函数 描述
time() 获取当前时间戳,即计算机内部时间值,浮点数 >>>time.time() 1516939876.6022282
ctime() 获取当前时间并以易读方式表示,返回字符串 >>>time.ctime() 'Fri Jan 26 12:11:16 2018'
gmtime() 获取当前时间,表示为计算机可处理的时间格式 >>>time.gmtime()time.struct_time(tm_year=2018, tm_mon=1...

时间格式化

函数 描述
strftime(tpl, ts) tpl是格式化模板字符串,用来定义输出效果 ts是计算机内部时间类型变量

格式化控制符

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

时间格式化

函数 描述
strptime(str, tpl) str是字符串形式的时间值 tpl是格式化模板字符串,用来定义输入效果

程序计时

函数 描述
perf_counter() 返回一个CPU级别的精确时间计数值,单位为秒 由于这个计数值起点不确定,连续调用差值才有意义
sleep(s) s拟休眠的时间,单位是秒,可以是浮点数>>>def wait(): time.sleep(3.3) >>>wait() #程序将等待3.3秒后再退出

实例4: 文本进度条

单行动态刷新

  • 刷新的本质是:用之后打印的字符覆盖之前的字符
  • 不能换行:print()需要被控制
  • 要能回退:打印后光标退回到之前的位置 \r
#TextProBarV3.py
import time
scale = 50
print("执行开始".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"+"执行结束".center(scale//2,'-'))

python学习笔记(3)的更多相关文章

  1. python学习笔记整理——字典

    python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...

  2. VS2013中Python学习笔记&lbrack;Django Web的第一个网页&rsqb;

    前言 前面我简单介绍了Python的Hello World.看到有人问我搞搞Python的Web,一时兴起,就来试试看. 第一篇 VS2013中Python学习笔记[环境搭建] 简单介绍Python环 ...

  3. python学习笔记之module &amp&semi;&amp&semi; package

    个人总结: import module,module就是文件名,导入那个python文件 import package,package就是一个文件夹,导入的文件夹下有一个__init__.py的文件, ...

  4. python学习笔记(六)文件夹遍历,异常处理

    python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...

  5. python学习笔记--Django入门四 管理站点--二

    接上一节  python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...

  6. python学习笔记--Django入门0 安装dangjo

    经过这几天的折腾,经历了Django的各种报错,翻译的内容虽然不错,但是与实际的版本有差别,会出现各种奇葩的错误.现在终于找到了解决方法:查看英文原版内容:http://djangobook.com/ ...

  7. python学习笔记&lpar;一&rpar;元组&comma;序列&comma;字典

    python学习笔记(一)元组,序列,字典

  8. Pythoner &vert; 你像从前一样的Python学习笔记

    Pythoner | 你像从前一样的Python学习笔记 Pythoner

  9. OpenCV之Python学习笔记

    OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书< ...

  10. python学习笔记(五岁以下儿童)深深浅浅的副本复印件,文件和文件夹

    python学习笔记(五岁以下儿童) 深拷贝-浅拷贝 浅拷贝就是对引用的拷贝(仅仅拷贝父对象) 深拷贝就是对对象的资源拷贝 普通的复制,仅仅是添加了一个指向同一个地址空间的"标签" ...

随机推荐

  1. MVC&plus;knocKout&period;js 实现下拉框级联

    数据库:部门表和员工表 在控制器里面的操作: public ActionResult Index3() { ViewBag.departments = new SelectList(getDepart ...

  2. Mac 下如何使用 Tree 命令

    方式一 Mac 系统下默认是不带这条命令的,执行下面这条命令也可以打印出树状结构. find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g' 不想每 ...

  3. 深入了解STL中set与hash&lowbar;set,hash表基础

    一,set和hash_set简介 在STL中,set是以红黑树(RB-Tree)作为底层数据结构的,hash_set是以哈希表(Hash table)作为底层数据结构的.set可以在时间复杂度为O(l ...

  4. javascript之with的使用 弊端

    妹的,昨天都快写完了,一不小心点了个关闭,然后...就没有然后了 wordpress的自动保存功能咋就这么不靠谱呢 记得还在懵懂学习JavaScript基础之时,坊间便有传言“with语句是低效率语句 ...

  5. 关于pydev的语法的错误提示

    第三方包引入时,eclipse默认会把一些包定为错误的,错误是:“undefined variable from import...” 其实是对的,可是报错,很烦人 解决方法:window -- pr ...

  6. ajax实现无刷新分页效果

    基于jquery.pagination.js实现的无刷新加载分页数据效果. 简介与说明 * 该插件为Ajax分页插件,一次性加载数据,故分页切换时无刷新与延迟.如果数据量较大,加载会比较慢. * 分页 ...

  7. 动态规划——Edit Distance

    大意:给定两个字符串word1和word2,为了使word1变为word2,可以进行增加.删除.替换字符三种操作,请输出操作的最少次数   Example 1: Input: word1 = &quo ...

  8. 使用Object&period;prototype&period;toString&period;call&lpar;&rpar;方法精确判断对象的类型

    在JavaScript里使用typeof判断数据类型,只能区分基本类型,即:number.string.undefined.boolean.object. 对于null.array.function. ...

  9. VB 读取列表文件名

    Private Sub Command1_Click()Dim d As String, s As String If Dir(App.Path & "\down", vb ...

  10. Confluence 6 配置 XSRF 保护

    Confluence 需要一个 XSRF 令牌才能创建一个评论,这个被用来保护用户不在评论区恶意发布内容.所有 Confluence 自定义的主题都被启用了这个功能,但是如果你使用自定义主题的话,可能 ...