Python小白的自学笔记第四天
主要是time库,分支结构,循环结构,random库,报错处理
Time库
函数一览
time.time()
time.ctime()
time.gmtime
time.strftime(tpl,ts)
time.strptime(str.tpl)
time.perf_counter()
time.sleep(s)
获取时间
time.time()
获取当前电脑的时间戳,即计算机内部时间值,以浮点数形式输出,是一个很长很奇怪的数字。
其表示的意义是从1970年1月1日0点0分开始,到当前时间的以秒为单位的数值……所以它有什么用
time.ctime()
这个比上一个靠谱多了,这个输出的形式是一个字符串,输出的是人类易读的形式
输出的样子是这样的:Mon Jul 29 19:28:12 2019
time.gmtime()
这个获取时间的方法可以获得计算机可以处理的时间格式,是一种结构体形式(这里是这么叫吗?)print结果输出如下:time.struct_time(tm_year=2019, tm_mon=7, tm_mday=29, tm_hour=11, tm_min=29, tm_sec=34, tm_wday=0, tm_yday=210, tm_isdst=0)
这个函数获得的值可以在其它函数中使用
时间格式化
格式化字符
所有的格式化模板字符串都是以%+字符
的形式构成的,用在相关函数中
%Y
:表示年份,取值范围0000~9999%m
:表示月份,取值范围01~12%B
:表示月份的名称,取值范围January~December%b
:表示月份名称的缩写,取值范围Jan~Dec%d
:表示日期,取值范围01~31%A
:表示星期几,取值范围Monday~Sunday%a
:表示星期几:取值范围Mon~Sun%H
:表示小时(24小时制):01~24%I
:表示小时(12小时制):01~12%p
:表示上下午:AM或PM%M
:表示分钟:00~59%S
:表示秒:00~59
time.strftime(tpl,ts)
其中tpl是格式化模板字符串,用来定义输出效果;ts是计算机内部时间类型变量(即通过gmtime()得到的结果)
tpl必须以字符串的形式输入,除了格式化字符外其它的字符都会保留,例:
t=time.gmtime()
print(time.strftime("%Y-%m-%d %H:%M:%S", t)
结果会输出2019-07-29 11:53:16
这个时区不是中国的时区,所以会有差别
time.strptime(str,tpl)
与time.strftime作用相反,这个函数是把时间转化为gmtime那样结构体的形式
str的输入是以字符串的形式,并在tpl中说明这是怎样形式的字符串,然后返回结构体,如:
timeStr='2019-7-29 20:53:49
print(time.strptime(timeStr, "%Y-%m-%d %H:%M:%S")
输出结果time.struct_time(tm_year=2019, tm_mon=7, tm_mday=29, tm_hour=20, tm_min=53, tm_sec=49, tm_wday=0, tm_yday=210, tm_isdst=0)
计时
time.perf_counter()
精准的测量一个时间值,单位为秒
每次调用返回一个当前时间值,所以如果想计时要调用两次
start = time.perf_counter()
end = time.perf_counter()
time = end-start
sleep(s)
休眠若干秒,单位是秒,可以是浮点数
分支结构
单分支结构
if <条件>:<语句>
True执行,False不执行,当然也可以if True:
这样来写
二分支结构
if <条件>:<语句1>
else:<语句2>
此外要知道另一种紧凑形式的写法
<语句1> if <条件> else <语句2>
比如可以用在一个print里,例:一个猜谜的结果可以这么写
print("猜{}了".format("对" if <条件> else "错"))
这种紧凑形式不支持在语句中进行赋值等操作,只支持表达式形式
多分支结构
if <条件1>:<语句1>
elif <条件2>:<语句2>
elif <条件...>:<语句...>
else :<语句n>
注意取值范围的覆盖就好了
操作符
== ; != ; > ; < ; <= ; >=
A and B ; A or B ; not A
上面和C一样,下面是与或非
可以有if not True
这样的写法,即False
循环
与C类似
for … in …
for <循环变量> in <遍历结构> :<语句块>
for i in range(N)
O(N)for i in range(M , N [,K] )
for c in str
字符串的遍历,可以遍历字符串中每个字符进行操作,c可以用任意字符,只是习惯for item in ls
对列表遍历,ls是一个列表,item可以用任意字符,只是习惯for line in fi
对文件遍历,fi是一个文件标识符,遍历其每行,进行循环
while …
while <条件>:<语句块>
如果是while True这样的条件的话,可以用ctrl+c来退出
break和continue
与C基本一样
break跳出本个最内层的循环体,执行循环后的语句
continue跳出本次循环,执行下一次循环
都可以与while和for搭配使用
for … in …else与while …else
for ... in ... :<语句块1>
else :<语句块2>
while ...:<语句块1>
else :<语句块2>
仅当循环中出现break时有用,当循环没有被break跳出时,执行else后的语句,continue不会触发
random库
使用随机数的标准库
基本随机数函数
random.seed()
random.random()
---
扩展随机数函数
random.randint()
random.getrandbits()
random.uniform()
random.randrange()
random.choice()
random.shuffle()
与C中的随机数函数类似,它并不能产生真正的随机数,而是通过某种算法产生伪随机数,如果在给定相同的随机数种子情况下,则每次数字出现的顺序是一定的
random.seed()
初始化给定的随机数种子,不填时默认使用当前系统时间,在不使用seed函数直接使用random.random时,也默认使用系统时间做种子
种子只需要调用一次,不使用seed函数时,也是按第一次调用random函数时的系统时间做种子
如果多次调用seed,就每次按照新的seed给出随机数,使用相同的seed产生相同的序列
random.random()
随机产生一个[0.0 ,1.0)之间的小数
random.randint(a,b)
生成一个[a,b]之间的整数
random.randrange(m,n[,k])
生成一个[m,n)生成一个mn之间以k为步长的随机整数
如random.randrange(10,100,10)
结果会出现10,20…中的某一个
random.getrandbits(k)
生成一个k比特长的随机整数
random.uniform(a,b)
生成一个[a,b]之间的随机小数
random.choice(seq)
从序列seq中随机选择一个元素
如random.choice([0,1,2,3,4,5,6,7,8,9])
从中随机选择一个
random.shuffle(seq)
将序列seq中的元素随机排列,返回打乱后的序列
报错处理
使用保留字try ; except [; else ; finally]
即有可能报错的地方使用,比如
a=input("请输入一个整数")
print(a**2)
如果用户输入了一个字符,程序就会报错,所以可以使用try except
try :a=input("请输入一个整数")print(a**2)
except :print("请输入一个整数")
这样当第一部分报错时,程序依然可以进行,但是会执行except后的内容
也可以在except后加报错的类型,如except NameError
这样仅当出现NameError这样的错误时才执行except后的语句
还有一种样子是
try :<语句1>
except :<语句2>
else :<语句3>
finally :<语句4>
else仅当在<语句1>执行成功,未执行<语句2>时执行,finally不管怎样都执行时
else的用法与循环中else的用法一样
Python小白的自学笔记第四天相关推荐
- 基于python的openCV自学笔记(四)——遗漏知识点补充
本篇补充暑假学opencv遗漏的相关知识点 参考链接:https://www.bilibili.com/video/BV1Fo4y1d7JL?from=search&seid=17628666 ...
- Python简短的自学笔记
Python自学笔记 第一章:语法类型 list类型:['Michael', 'Bob', 'Tracy'] tuple(元组)类型:t = ('Adam', 'Lisa', 'Bart') dict ...
- 自学笔记十四:Matlab浮点型:创建和转换、取值范围、运算和精度问题
1.浮点型的概念 浮点型分为单精度(single)浮点型和双精度(double)浮点型: IEEE浮点数算术标准(IEEE 754)是IEEE二进位浮点数算术标准(IEEE Standard for ...
- Python在入门-自学笔记-8字典
Python零基础入门自学笔记 参考教程[Python教程]<零基础入门学习Python>最新版@B站@鱼C-小甲鱼 本文记录的主要是Python中的字典. 映射关系 效率会比列表快 0. ...
- python middle()_Python自学笔记(七):函数
写在前面: 在两个电脑上编辑总是莫名其妙丢失内容,发现前面的笔记有丢失的部分,又回去补充了. 记到函数这一部分,书中案例会不断使用前面所学,所以会发现笔记有不完善的地方,以及在学习过程产生的疑问,会自 ...
- kmeans python interation flag_Python自学笔记-第六章面向对象编程(下)
3.魔法方法 Python的对象天生拥有一些神奇的方法,它们总被双下划线所包围,他们是面向对象的 Python 的一切.他们是可以给你的类增加魔力的特殊方法,如果你的对象实现(重载)了这些方法中的某一 ...
- #Python第三方模块学习笔记(四)——CSV模块功能及主要函数介绍
声明:本篇文章为转载文章并附有自己的理解,如有冒犯请联系博主立马删除 源地址:https://blog.csdn.net/u012162613/article/details/41915859 1.c ...
- python网络爬虫——自学笔记1.用requests库爬取图片
1.requests库的安装 rrequests库是公认的python的一个一个非常优秀的第三方库,下载方法也很简单 只需Win+R打开控制台命令窗口,输入pip install requests后回 ...
- 阿里云python轻应用学习笔记(四)---haas100通过python轻应用驱动舵机
摘要:舵机是常用的执行器,haas100具有pwm功能,那么python轻应用编程驱动舵机能不能实现呢?本文就一步步带您做一遍. 硬件:haas100,SG90舵机 软件:win7 x64,串口助理 ...
最新文章
- Vue父组件和子组件之间传递数据
- java线程池队列场景,Java面试题汇总
- 互信息 卡方 - 文本挖掘
- centos离线安装mysql8_CentOS7离线安装Mysql8.0
- webservice 参数太大_手把手系列:常用数据交换方案Web Service接口处理法
- InfluxDB安装及使用
- 四级英语图表作文真题计算机,四级作文辅导二:图表类作文(范文、模板、必备句型。对了,还有作业)...
- tomcat vue 不用 前后端_部署前后端分离项目(后端 tomcat 前端 nginx)
- python 小技巧之获取固定下面包含的某种类型文件的个数
- tablelayout高度问题
- stm32f4 dma da正弦波发生器 keil5 hal库 CubeMX
- 关于linux文件系统出现脏数据修复的思路
- 零基础简单易用的EmberJS框架
- Unity Editor资源重命名
- Chosen.1 翁克 回忆 怪事
- 图片Exif信息解析(Java实现)
- java面向对象小知识
- 名帖157 王徽之 行楷《新月帖》
- 你离年薪50w的架构师还差多远
- Java组各任务工作流程
热门文章
- python考勤管理系统_Mysql和python在考勤系统中的应用
- VisualStudio的下载安装教程
- Linux 安装SVN服务器 图解教程
- 【ML4CO论文精读】用于组合优化的机器学习:方法论之旅(Yoshua Bengio, 2021)
- 搭建zerotier moon中转服务器实现虚拟局域网稳定快速互访
- Hi3518EV200+PS3210调试经验总结
- 云服务案例分析 BB平台 Quiz4
- 转载(https://blog.csdn.net/qq_36738482/article/details/72823509)大数据的概念
- 软件工程专业前景怎么样?
- android svga内存,iOS-SVGA动画渲染之内存优化