鱼C论坛

 找回密码
 立即注册
查看: 2966|回复: 5

[已解决]原码我写得太烦锁,求简化。

[复制链接]
发表于 2018-1-31 10:35:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 checkily 于 2018-1-31 10:37 编辑

题目要求:
输入一个开始时间,一个结束时间,计算两者的时间差。如果结束时间小于开始时间,则结束时间为下一天。
例如:
开始时间:12:12:12
结束时间:14:23:23
时间差为:7871

  1. while True:
  2.     starttime=input("please input start time:").split(":")
  3.     starthour,startminute,startsecond=int(starttime[0]),int(starttime[1]),int(starttime[2])
  4.     if starthour>24 or startminute>60 or startsecond>60:
  5.         print("input error")
  6.         continue
  7.     stoptime=input("please input stop time:").split(":")
  8.     stophour,stopminute,stopsecond=int(stoptime[0]),int(stoptime[1]),int(stoptime[2])
  9.     if stophour>24 or stopminute>60 or stopsecond>60:
  10.         print("input error")
  11.         continue
  12.     if stophour<starthour:
  13.         stophour+=24
  14.         seconds=(stophour-starthour)*3600+(stopminute-startminute)*60+(stopsecond-startsecond)
  15.         print("seconds:%d" % seconds)
  16.         break
  17.     else:
  18.         seconds=(stophour-starthour)*3600+(stopminute-startminute)*60+(stopsecond-startsecond)
  19.         print("seconds:%d" % seconds)
  20.         break
复制代码



要求加入:如果只是结束时间输入错误,不用重新输入开始时间。另外输入格式错误,要提示“输入格式错误,请以00:00:00的格式输入”
最佳答案
2018-1-31 10:49:03
本帖最后由 sky 于 2018-1-31 10:50 编辑
checkily 发表于 2018-1-31 10:42
额。。。还没学,所以觉得写起来总觉得别扭。应该怎样写?

  1. from datetime import datetime

  2. t1 = "12:12:12"
  3. t2 = "14:23:23"
  4. a = datetime.strptime(t1, "%H:%M:%S")
  5. b = datetime.strptime(t2, "%H:%M:%S")
  6. c = b - a
  7. print(c.seconds)
复制代码


基本的方法是这样的 剩下的逻辑 你试试 基本的模块使用方法要学会网上搜索 看文档


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-31 10:41:32 | 显示全部楼层
这个你先把输入格式化成时间格式 然后操作
datetime模块有时间格式化的方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-31 10:42:41 | 显示全部楼层
sky 发表于 2018-1-31 10:41
哦  这个你先把输入格式化成时间格式 然后操作
datetime模块有时间格式化的方法


额。。。还没学,所以觉得写起来总觉得别扭。应该怎样写?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-31 10:49:03 | 显示全部楼层    本楼为最佳答案   
本帖最后由 sky 于 2018-1-31 10:50 编辑
checkily 发表于 2018-1-31 10:42
额。。。还没学,所以觉得写起来总觉得别扭。应该怎样写?

  1. from datetime import datetime

  2. t1 = "12:12:12"
  3. t2 = "14:23:23"
  4. a = datetime.strptime(t1, "%H:%M:%S")
  5. b = datetime.strptime(t2, "%H:%M:%S")
  6. c = b - a
  7. print(c.seconds)
复制代码


基本的方法是这样的 剩下的逻辑 你试试 基本的模块使用方法要学会网上搜索 看文档


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-31 10:51:18 | 显示全部楼层
如果不用datetime模块可以这样考虑:
将两个时间都转为秒,并将两个秒数相减,如果小于0,则加上86400,或秒数相减对86400取模(%)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-31 11:23:14 | 显示全部楼层
sky 发表于 2018-1-31 10:49
基本的方法是这样的 剩下的逻辑 你试试 基本的模块使用方法要学会网上搜索 看文档

果然简化了许多
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-28 19:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表