def main():
import math
print('Period of a pendulum')
Earth_gravity = 9.8
Mars_gravity = 3.7263
Jupiter_gravity = 23.12
print(' ')
pen = float(input('How long is the pendulum (m)? '))
if pen < 0:
print('illegal length, length set to 1')
pen = 1
period1 = (2 * 3.14159265359) * math.sqrt(pen / Earth_gravity)
period2 = (2 * 3.14159265359) * math.sqrt(pen / Mars_gravity)
period3 = (2 * 3.14159265359) * math.sqrt(pen / Jupiter_gravity)
print(' ')
print('The period is', round(period1,3))
minutes1 = period1 / 60
minutes2 = period1 / 60
minutes3 = period1 / 60
seconds1 = minutes1 % 60
seconds2 = minutes2 % 60
print('or', round(minutes1,1), 'minutes and', seconds, 'seconds on
Earth')
print(' ')
print('The period is', round(period2,3))
print('or', round(minutes2,1), 'minutes and', seconds, 'seconds on
Mars')
print(' ')
print('The period is', round(period3,3))
print('or', round(minutes3,1), 'minutes and', seconds, 'seconds on
Jupiter')
else:
period1 = (2 * 3.14159265359) * math.sqrt(pen / Earth_gravity)
period2 = (2 * 3.14159265359) * math.sqrt(pen / Mars_gravity)
period3 = (2 * 3.14159265359) * math.sqrt(pen / Jupiter_gravity)
print(' ')
print('The period is', round(period1,3))
minutes1 = period1 // 60
minutes2 = period2 // 60
minutes3 = period3 // 60
seconds1 = minutes1 % 60
seconds2 = minutes2 % 60
seconds3 = minutes3 % 60
print('or', round(minutes1,1), 'minutes and', seconds1, 'seconds on
Earth')
print(' ')
print('The period is', round(period2,3))
print('or', round(minutes2,1), 'minutes and', seconds2, 'seconds on
Mars')
print(' ')
print('The period is', round(period3,3))
print('or', round(minutes3,1), 'minutes and', seconds3, 'seconds on Jupiter')
main()
好的,我需要将秒转换为秒和分钟。我不确定如何使用%来获得输出中的秒和分钟。我需要在这里使用//和%。我是新来的,所以如果它是草率或矫枉过正,我道歉。搞砸的区域是包含%的线条。谢谢!
答案 0 :(得分:3)
你可以简单地使用divmod
返回整数除数和模数,非常适合你的情况:
>>> seconds = 1000
>>> minutes, seconds = divmod(seconds, 60)
>>> hours, minutes = divmod(minutes, 60)
>>> days, hours = divmod(hours, 24)
>>> days, hours, minutes, seconds
(0, 0, 16, 40)
您似乎只需要第一行minutes, seconds = divmod(seconds, 60)
,但我想展示如果有更多转化也可以使用它。 :)
答案 1 :(得分:1)
整数将向下舍入到最接近的整数。 %或modulo运算符仅报告除法运算的剩余部分。
因此135%60返回15.这是因为60进入135两次,但剩下的15次少于60. 60进入135的两次没有返回,所以你需要找到使用标准除法运算符的值。
你可以除以60得到分钟,然后使用模运算符返回剩余的秒数。
time = 135
minutes = time / 60
seconds = time % 60
print minutes
print seconds
返回
2
15