Python基础 P1变量进阶练习

Python基础 P1变量进阶练习

1.变量帮手(input和print)

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位小数)

实现效果
在这里插入图片描述

源码(见附件

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
%H24小时制小时数0~24
%I12小时制小时数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就派上用场了

先来看看之前的程序效果:
在这里插入图片描述
源码(见附件

通过try来进行异常判断后的效果:
在这里插入图片描述

输入内容有误时会要求重新输入,直到输入的内容正确后再进入下一步操作

源码(见附件


现在可以实现日期的时间差处理,后面还可以实现包括时间的处理

要求:
1.输入两组年月日时分秒计算出两者之间的时间差
2.输出时间差
3.能够判断输入日期是否合理

实现效果:
在这里插入图片描述

源码(见附件

3.罗马数字转整数

简介
先来了解一下罗马数字的组成原理

罗马数字包括以下七种字符:

字符数值
I1
V5
X10
L50
C100
D500
M1000

例如: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.最后计算的结果就是罗马数字转换后的结果

实现效果:
在这里插入图片描述

源码(见附件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

CagePan

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

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

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

打赏作者

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

抵扣说明:

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

余额充值