checkily 发表于 2018-1-31 10:35:19

原码我写得太烦锁,求简化。

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

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

while True:
    starttime=input("please input start time:").split(":")
    starthour,startminute,startsecond=int(starttime),int(starttime),int(starttime)
    if starthour>24 or startminute>60 or startsecond>60:
      print("input error")
      continue
    stoptime=input("please input stop time:").split(":")
    stophour,stopminute,stopsecond=int(stoptime),int(stoptime),int(stoptime)
    if stophour>24 or stopminute>60 or stopsecond>60:
      print("input error")
      continue
    if stophour<starthour:
      stophour+=24
      seconds=(stophour-starthour)*3600+(stopminute-startminute)*60+(stopsecond-startsecond)
      print("seconds:%d" % seconds)
      break
    else:
      seconds=(stophour-starthour)*3600+(stopminute-startminute)*60+(stopsecond-startsecond)
      print("seconds:%d" % seconds)
      break


要求加入:如果只是结束时间输入错误,不用重新输入开始时间。另外输入格式错误,要提示“输入格式错误,请以00:00:00的格式输入”

sky 发表于 2018-1-31 10:41:32

哦 {:10_330:} 这个你先把输入格式化成时间格式 然后操作
datetime模块有时间格式化的方法

checkily 发表于 2018-1-31 10:42:41

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

额。。。还没学,所以觉得写起来总觉得别扭。应该怎样写?

sky 发表于 2018-1-31 10:49:03

本帖最后由 sky 于 2018-1-31 10:50 编辑

checkily 发表于 2018-1-31 10:42
额。。。还没学,所以觉得写起来总觉得别扭。应该怎样写?

from datetime import datetime

t1 = "12:12:12"
t2 = "14:23:23"
a = datetime.strptime(t1, "%H:%M:%S")
b = datetime.strptime(t2, "%H:%M:%S")
c = b - a
print(c.seconds)


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


冬雪雪冬 发表于 2018-1-31 10:51:18

如果不用datetime模块可以这样考虑:
将两个时间都转为秒,并将两个秒数相减,如果小于0,则加上86400,或秒数相减对86400取模(%)

checkily 发表于 2018-1-31 11:23:14

sky 发表于 2018-1-31 10:49
基本的方法是这样的 剩下的逻辑 你试试 基本的模块使用方法要学会网上搜索 看文档

果然简化了许多{:10_275:}
页: [1]
查看完整版本: 原码我写得太烦锁,求简化。