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)
这个函数获得的值可以在其它函数中使用

时间格式化

格式化字符

所有的格式化模板字符串都是以%+字符的形式构成的,用在相关函数中

  1. %Y:表示年份,取值范围0000~9999
  2. %m:表示月份,取值范围01~12
  3. %B:表示月份的名称,取值范围January~December
  4. %b:表示月份名称的缩写,取值范围Jan~Dec
  5. %d:表示日期,取值范围01~31
  6. %A:表示星期几,取值范围Monday~Sunday
  7. %a:表示星期几:取值范围Mon~Sun
  8. %H:表示小时(24小时制):01~24
  9. %I:表示小时(12小时制):01~12
  10. %p:表示上下午:AM或PM
  11. %M:表示分钟:00~59
  12. %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 <遍历结构> :
     <语句块>
  1. for i in range(N)O(N)
  2. for i in range(M , N [,K] )
  3. for c in str 字符串的遍历,可以遍历字符串中每个字符进行操作,c可以用任意字符,只是习惯
  4. for item in ls对列表遍历,ls是一个列表,item可以用任意字符,只是习惯
  5. 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的用法一样

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值