题目分析

这一天,小鱼给自己的游泳时间做了精确的计时,它发现自己从a时b分一直游泳到当天的c时d分,请你帮小鱼计算一下,它这天一共游了多少时间呢?

问题的重点在于统一单位。

统一单位为分钟:a小时b分钟就是a * 60 + b分钟。c小时d分钟就是c * 60 + d分钟。时间差即为两个分钟的差。再转化出是几小时,几分钟即可。

常规做法

第一步:输入时间

使用input指令输入输入时间,分开输入小时和分钟。

1
2
3
4
a = input('请输入开始的小时(24小时制):')
b = input('请输入开始的分钟(24小时制):')
c = input('请输入结束的小时(24小时制):')
d = input('请输入结束的分钟(24小时制):')

第二步:时间转换

把小时转换成分钟要乘以六十,再加上输入的分钟。

1
2
e = int(a) * 60 + int(b)
f = int(c) * 60 + int(d)

第三步:时间计算

结束的时间(分钟)减去开始的时间(分钟),算出总用时长。

1
g = f - e

第四步:转化为小时制

把总共的分钟市场除六十,提取整数,余数为剩余的分钟时间。

1
2
h = g // 60
i = g % 60

第五步:输出

记得转化字符串。

1
print('一共游泳' + str(h) + '小时' + str(i) + '分钟')

代码示例

1
2
3
4
5
6
7
8
9
10
a = input('请输入开始的小时(24小时制):')   #等待输入
b = input('请输入开始的分钟(24小时制):') #等待输入
c = input('请输入结束的小时(24小时制):') #等待输入
d = input('请输入结束的分钟(24小时制):') #等待输入
e = int(a) * 60 + int(b) #把开始小时转换为分钟,并加上开始的分钟
f = int(c) * 60 + int(d) #把结束小时转换为分钟,并加上结束的分钟
g = f - e #总分钟相见算出游泳的时间
h = g // 60 #整除算出小时
i = g % 60 #余数算出分钟
print('一共游泳' + str(h) + '小时' + str(i) + '分钟') #字符串输出

部分代码解释

【//】为整除,【%】为余数

整除就是进行除法计算,结果只保留整数,余数是小学学的↓

avatar

借位做法(不推荐)

例如:开始的时间是6:30,结束的时间是7:20,正常我们人口算得出的时间是50分钟,在计算机里需要把小时和分钟拆开计算,即“结束小时-开始小时”“结束分钟-开始分钟”,这里还涉及到一个判定的条件,就我给的这个示例一样,结束的分钟数比开始的分钟数要小,所以减出来的就会有负数,这时候我们需要在小时上借1然后再进行运算。

第一步:输入时间

使用input指令输入输入时间,分开输入小时和分钟。

1
2
3
4
a = input('请输入开始的小时(24小时制):')
b = input('请输入开始的分钟(24小时制):')
c = input('请输入结束的小时(24小时制):')
d = input('请输入结束的分钟(24小时制):')

第二步:分钟大小判定

如果结束分钟大于开始分钟,就不用借位,反之则需要借位,先用if进行判定,如果d小于b即结束分钟小于开始分钟,则……

代码在下一步。

第三步:借位运算

在小时上,结束时间减去开始时间还要再减1,在分钟上,因为已经借1了,所以在结束的分钟上加60(一小时为60分钟),再减去结束的分钟就不会有负数了。

记得输出。

img

1
2
3
4
if d<b:
e = int(c) - int(a) - 1
f = (60 + int(b)) - int(d)
print('一共游泳' + str(e) + '时' +str(f) + '分')

第四步:不借位运算

如果d大于b,即结束分钟大于开始分钟,那么直接减法即可,这里需要使用else,即否则……

同时需要输出:

1
2
3
4
else:
g = int(c) - int(a)
f = int(d) - int(b)
print('一共游泳' + str(g) + '时' +str(f) + '分')

代码示例

1
2
3
4
5
6
7
8
9
10
11
12
a = input('请输入开始的小时(24小时制):')   #等待输入
b = input('请输入开始的分钟(24小时制):') #等待输入
c = input('请输入结束的小时(24小时制):') #等待输入
d = input('请输入结束的分钟(24小时制):') #等待输入
if d<b: #if做状态判断,如果
e = int(c) - int(a) - 1 #运算过程,将输入值转化为整数
f = (60 + int(b)) - int(d) #运算过程,将输入值转化为整数
print('一共游泳' + str(e) + '时' +str(f) + '分') #输出结果,将数字转换为字符串
else: #包含在if判断里,否则
g = int(c) - int(a) #运算过程,将输入值转化为整数
f = int(d) - int(b) #运算过程,将输入值转化为整数
print('一共游泳' + str(g) + '时' +str(f) + '分') #输出结果,将数字转换为字符串

部分代码解释

if语句没有学到,以后会学,大概的用法就是这样的,详细请见注释。