python基础篇day2——日期,错误处理,if语句,逻辑,列表数组字典,循环

这篇博客介绍了Python的基础知识,包括日期类型datetime和timedelta的使用,错误处理的try-except结构,if语句和逻辑操作,以及列表、数组、字典和循环的概念与操作。通过实例展示了日期计算、异常捕获和循环应用。

今天学习python教程中的日期,错误处理,if语句,逻辑,列表数组字典,循环

1.日期

日期是一种数据类型,

1.1日期类型 datetime

datetime是日期格式,可以给变量赋予日期格式的值。
使用范例:

from datetime import datetime

today = datetime.now()
print('今天是' + str(today))

执行结果:

今天是2022-04-21 16:58:33.746657

如果要单独显示年,月,日,只需在对应变量后面加上.year,.month,.day即可
例如:

print(today.day)

结果为:

21

值得注意的是,这样获取的年月日是一个int型变量,可以进行int型运算

1.2日期跨度类型 timedelta

timedelta,可以指定一个日期差,比如一天,三天等,使用某个date加减timedelta即可获得相应的date,timedelta中的关键词有:days, seconds, microseconds, milliseconds, minutes, hours, weeks
值得注意的是,并没有year和month关键词,猜测是由于月的天数是不固定导致的。
使用范例:

from datetime import datetime,timedelta
oneday = timedelta(days = 1)
yesterday = today - oneday
print('昨天是' + str(yesterday))

执行结果:

今天是2022-04-21 17:07:12.379615
昨天是2022-04-20 17:07:12.379615

1.3日期的录入 datetime.strptime

有时候我们需要通过输入形式录入日期,此时录入的是string格式,如何转换为date类型呢?需要用药strptime函数。
调用方法:datetime.strptime(待转换变量,'转换格式')
其中,转换格式中,%d表示日,%m表示月,%y表示不带世纪的年份,即只显示后两位,%Y表示完整年份。
使用示例:

birthday=input('请输入出生年月,按【年/月/日】格式')
birthday_date=datetime.strptime(birthday,'%Y/%m/%d')
merryday=input('请输入结婚纪念日,按【年月日】格式')
merryday_date=datetime.strptime(merryday,'%Y%m%d')
print('出生于'+str(birthday_date)+'结婚于'+str(merryday_date)+'正在计算您的单身时长')
print('单身时长:' + str(merryday_date-birthday_date))

输出示例:

请输入出生年月,按【年/月/日】格式1995/3/18
请输入结婚纪念日,按【年月日】格式1996318
出生于1995-03-18 00:00:00结婚于1996-03-18 00:00:00正在计算您的单身时长
单身时长:366 days, 0:00:00

1.4一个小案例:计算多少岁了

功能描述:通过输入一个出生年月日来判断这人多少岁零多少天,需要注意的是,过了生日才会被记为增加一岁。

from datetime import datetime

birthday=input('请输入您的出生年月日,按照【年/月/日】的格式')
birthday_date=datetime.strptime(birthday,'%Y/%m/%d')
# 将出生日期保存到date数据类型中
today=datetime.now()
year=today.year-birthday_date.year
# 这里的year是指岁数,用今年减去出生年
i=0
if today.month<birthday_date.month:
    i=1
elif today.month==birthday_date.month and today.day<birthday_date.day:
    i=1
# 如果今年还没过生日,就让i=1
lastbirthday=(str(today.year-i)+str(birthday_date.month)+str(birthday_date.day))
# lastbirthday变量指的是上一个生日,如果是可能是今年也可能是明年
# 取决于i的值,也就是今年的生日过了没有
lastbirthday_date=datetime.strptime(lastbirthday,'%Y%m%d')
print("您现在"+str(year-i)+'岁零'+str((today-lastbirthday_date).days)+'天啦!')
# 如果今年生日已过,那就是year,如果没过,那得减1,再用今天减去上一个生日即可

输出结果:

请输入您的出生年月日,按照【年/月/日】的格式1995/03/18
您现在27岁零34天啦!

2.错误处理

值得注意的是错误error不是bug,是由于外部不可掌控因素导致的程序运行出错,比如10/0等。常用的有:try,except,finally
结构:
try/except
try/except/else
try/except/else/finally
try/except/finally
try/finally
注意每个词后面都有:
使用实例:

y = int(input('输入一个数字然后被10除'))

try:
    m=10/y
except ZeroDivisionError as e:
    print('不允许除以0')
else:
    print('结果为',m)
finally:
    print('程序运行结束,再见')

结果1:

输入一个数字然后被10除0
不允许除以0
程序运行结束,再见

结果2:

输入一个数字然后被10除-2
结果为 -5.0
程序运行结束,再见

3.if语句

基本结构:
if
if/else
if/elif
代码结构:

if a>b:
    print('a更大!')
elif a<b:
    print('b更大!')
else:
    print('一样大!')

值得注意的是,在python中,如果一个结构中有多句语句,则可以通过四个空格来达到c语言中{}的效果,例如:

if a>b:
    c=a
    print(c)

在这个程序段中,如果a>b那么a=cprint(c)都会在这个if中执行,但当我们把print(c)前面的空格删除,那么在当a>b时,在if结构内仅会执行c=a语句。

4.逻辑关系

4.1与and,或or,非not,集合in(a,b,c...)

其中,集合in的用法为:

country=input('请输入一个国家')
if country in('中国','日本','韩国'):
    print('中日韩圈')
else:
    print('其他')

如果输入中国/日本/韩国则输出中日韩圈,例如:

请输入一个国家中国
中日韩圈
请输入一个国家朝鲜
其他

4.2布尔判断

布尔赋值:flag=True
布尔判断:if flag,if flag==True
需要注意的是:TrueFlase首字母均要大写

5.列表,数组

5.1列表

使用方式1:直接声明

names = ['张三'.'王五']

使用方式2:空表起始

names = []
names.append('张三') #插入一个'张三'到`names`表中
names.append(12)
names.append(12.001)
print(names) #遍历表
print(names[1]+2) #输出第二个元素+2

输出结果:

['张三', 12, 12.001]
14

从上述例子我们看出,表是没有数据类型的,里面可以存储任何类型的数据,甚至是日期

5.2数组

from array import array
即可使用数组类型,注意,使用数组类型需要指定数据类型

from array import array

scores = array('d')
scores.append(10)
scores.append(12)
print(scores)
print(scores[1])

输出结果

array('d', [10.0, 12.0])
12.0

常见数据类型:
常见数据类型

除此之外,还有一些数组/列表常用函数
1.求长度:len()
2.在指定位置插入:xxx.insert(0,'yyy')
3.按字母表顺序排序:xxx.sort()
4,获得从第a开始到b的项,不包括b:xxx[a:b]
例如:

names=['haha','xixi','dudu']
print(names[1:2])

输出结果:

['xixi']

这里从第1个(从0开始)数据开始,到第2个数据结束,不包括第二个

5.3字典

字典就是用键值代替索引号,与数据库类似,通过键值找数据
例如:

person={'1st':'minghui'}
person['3rd'] = 'jianghua'
print(person)
print(person['1st'])
person['2nd']='duxing'
print(person)

其输出为:

{'1st': 'minghui', '3rd': 'jianghua'}
minghui
{'1st': 'minghui', '3rd': 'jianghua', '2nd': 'duxing'}  

你甚至可以把字典也放进列表中

6.循环

6.1for循环

1 for循环用法——遍历表:

for name in ['lili','susu','sese']:
    print(name)

其结果为:

lili
susu
sese

2 for循环用法——指定项目:

names = ['lili','sese','tutu']
for name in names[0:2]:
    print(name)

其结果为:

lili
sese

3 for循环用法——指定次数

for index in range(0,3):
# range(a,b)表示生成从整数a开始到整数b(不包括)的数字表
    print('looping')

其结果为

looping
looping
looping

6.2while循环

基本结构:

i=0
while i<2:
    print(i)
    i=i+1

其结果为:

0
1

wow, seems you have read all the passage! good luck!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千代田桃momo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值