input函数
从标准输入中读取字符串(带换行符),提示字符串将在读取输入之前打印到标准输出(不带换行符)
input标准格式
input(prompt=None, /) # prompt=None输入提示字符串
input函数返回的是一个字符串,即便用户输入一个数字,输出给变量的内容也会是一个字符串
举个栗子
a = input("请输入字符串:")
print(type(a))
b = input("请输入数字:")
print(type(b))
如果要输入并获取数字可以使用int()进行类型转换
a = input("请输入字符串:")
print(type(a))
b = int(input("请输入数字:"))
print(type(b))
print函数
print将值打印到流或者系统上,默认情况下为stdout
print标准格式
print(*objects, sep=' ', end='\n', file=sys.stdout)
# objects:表示输出的对象,输出多个对象时,需要用逗号进行分隔
# sep:用来间隔多个对象
# end:用来设定以什么结尾,默认值是换行符\n,我们可以换成其他字符
# file: 要写入的文件对象
print可以输出不同形式的变量,包括但不局限于:数值型、布尔型、列表变量、字典变量等
print直接输出
print("hello cage")
print变量输出
a = "hello cage"
print(a)
print组合输出
print("hello cage " + str(5))
print格式化输出
a = 5.3425
print("%.2f" % a)
进阶练习
1.使用两种方法实现数字内容输入
2.分别计算两者相加、相减、相乘和相除的结果
3.使用4种方法分别输出相加、相减、相乘和相除的结果(相除结果保留2位小数)
源码(见附件)
strptime/strftime
strptime函数根据指定的格式把一个时间字符串解析为时间元祖,解析的格式由format来决定
strptime的基本格式
import time
time.strptime(string[, format])
# string:时间字符串
# format:格式化字符串
在使用这个函数之前,先来熟悉一下格式化字符串的符号,也就是format里面的内容
日期格式化符号表
符号 | 功能 | 范围 |
---|---|---|
%y | 两位数的年份 | 0~99 |
%Y | 四位数的年份 | 000~9999 |
%m | 月份 | 01~12 |
%d | 月内中的一天 | 0~31 |
%H | 24小时制小时数 | 0~24 |
%I | 12小时制小时数 | 01~12 |
%M | 分钟数 | 00~59 |
%S | 秒数 | 0~59 |
%a | 本地简化星期名称 | |
%A | 本地完整星期名称 | |
%b | 本地简化的月份名称 | |
%B | 本地完整的月份名称 | |
%c | 本地相应的的日期和时间 | |
%j | 年内的一天 | 1~366 |
%p | 本地A.M.或P.M.的等价符 | |
%U | 一年中的星期数 | 0~53 |
%w | 星期(星期天为星期的开始) | 0~6 |
%W | 一年中的星期数 | 0~53 |
%x | 本地相应的日期 | |
%X | 本地相应的时间 | |
%z | 当前时区的名称 |
举个栗子
import time
str_time = input("请输入日期(XXXX-XX-XX):")
date = time.strptime(str_time, "%Y-%m-%d")
print(date)
而strftime函数则正好相反,函数接收时间元组,并返回以可读字符串表示的当前时间(格式由format决定)
strftime的基本格式
import time
time.strftime(format[, t])
# format:格式字符串
# t:可选的参数是一个struct_time
举个栗子
import time
str_time = input("请输入日期(XXXX-XX-XX):")
date = time.strptime(str_time, "%Y-%m-%d")
print(date)
time_str = time.strftime("%Y--%m--%d", date)
print(time_str)
datetime模块
datetime模块:提供了处理日期和时间的类,既有简单的方式,又有复杂的方式;支持日期和时间算法,但其实现的重点是为输出格式化和操作提供高效的属性提取功能。
datetime模块中的常用类:
类名称 | 描述 |
---|---|
datetime.date | 表示日期,常用的属性有:year,month和day |
datetime.time | 表示时间,常用属性有:hour,minute,second,microsecond |
datetime.datetime | 表示日期时间 |
datetime.timedelta | 表示两个date,time,datetime,分辨率可达到微秒 |
datetime.tzinfo | 时区相关信息对象的抽象基类,它们由datetime和time类使用,以提供自定义时间的而调整 |
datetime.timezone | 实现tzinfo抽象基类的类,表示与UTC的固定偏移量 |
这里主要介绍datetime.datetime,在后面的练习中会用到
datetime的基本用法
class datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None)
# year:年份(0~9999)
# month:月份(1~12)
# day:日期(1~31)
# hour:小时(0~23)
# minute:分钟(0~59)
# second:秒(0~59)
# microsecond:微秒(0~1000000)
# tzinfo:tzinfo的子类对象,如timezone类的实例
如果一个参数超出了这些范围,会引起ValueError异常(在后面练习中很有用)
举个栗子
import time
import datetime
time_str = input("请输入结束日期(格式:XXXX-XX-XX XX:XX:XX):")
date = time.strptime(time_str, "%Y-%m-%d %H:%M:%S")
print(date)
date = datetime.datetime(date[0], date[1], date[2], date[3], date[4], date[5])
print(date)
try/expect
try/expect是用来进行异常处理的,后面会专门用一节用来讲解异常处理的,这里只需要简单的知道如何使用就可以
基本格式
try:
# 判断是否有异常的句子
expect:
print("抛出异常提示")
举个栗子
import time
import datetime
while True:
time_str = input("请输入开始日期(格式:XXXX-XX-XX):")
try:
time.strptime(time_str, "%Y-%m-%d")
break
except:
print("请输入正确的日期!请重新输入!")
print("日期输入正确")
进阶练习
使用date和datetime模块实现时间差的计算
要求:
1.输入两组年月日计算出两者之间的时间差
2.输出时间差的天数
但是现在的程序还有一点小问题,比如输入的内容不在正确的日期范围内,那么程序就会报错而无法正确的执行;这个时候try/expect就派上用场了
输入内容有误时会要求重新输入,直到输入的内容正确后再进入下一步操作
源码(见附件)
现在可以实现日期的时间差处理,后面还可以实现包括时间的处理
要求:
1.输入两组年月日时分秒计算出两者之间的时间差
2.输出时间差
3.能够判断输入日期是否合理
源码(见附件)
简介
先来了解一下罗马数字的组成原理
罗马数字包括以下七种字符:
字符 | 数值 |
---|---|
I | 1 |
V | 5 |
X | 10 |
L | 50 |
C | 100 |
D | 500 |
M | 1000 |
例如:III 表示 3, XV 表示15;当然也有一些特殊情况,比如 IV 表示 4 ,小的符号在大的符号前面就是 V - I ,也就是5-1 = 4,这种情况一共有6种:
I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9
X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90
C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900
那么现在就分析罗马数字与十进制整数之间的关系,将输入的罗马数字转换为十进制整数
进阶练习
主要实现思路:
1.首先映射罗马数字的符号和值
2.然后遍历罗马数字字符串(从左到右)
3.如果左边的罗马符号比右边的大或相等,那么就加上这个值
4.如果左边的罗马符号比右边的小,那么就减去这个小的值
5.最后计算的结果就是罗马数字转换后的结果
源码(见附件)