2017-11-07 14 views
0

私は2つの入力をとるプログラムを作成しています。最初の時間は12時30分または14時などの1日の時間(24時間制)で、2番目の入力は30または90などの経過時間(分)または15:30)2つの入力行と時間が経過すると、新しい時間が表示されます

私の主な問題は、if/elseステートメントがたくさんあることです。私はこれを非常に非効率的にやっているかもしれないと考えています。私は誰かが私が考慮する必要があるすべての特別なケースを把握するのを助けることを望んでいます。このプログラムは現在、時間の変更を2回行わない数値を与えると機能します。私はこれをより効率的にするための助けを実際に使うことができます。コードの行ごとに自分の意図を理解するのに役立つように、自分のコードでできる限りコメントしました。

コード:

# Taking User Input 
startTime = input() 
duration = int(input()) 

# Splitting up the hour and minutes by the colon 
rawTime = startTime.split(':') 

# Assigning the hour and the minute variables 
hourHand = int(rawTime[0]) 
minuteHand = int(rawTime[1]) 

# Giving the remainder when you add the minutes and the duration (so 
# if it goes over 60 you know by how much) 
newMinuteHand = (minuteHand+duration)%60 

# Checking to see if newMinuteHand is greater than 0, meaning it goes 
# into the next hour. 
# Also checking to make sure the hour is not 23:00 or close to 
# midnight because that carries over 
# to 0:00 
if newMinuteHand >= 0 and hourHand != 23: 
    newHourHand = hourHand + 1 
    # A couple statements needed here to correctly format the minute 
    # side. 
    if newMinuteHand >= 10: 
    newTime = str(newHourHand) + ':' + str(newMinuteHand) 
    print(newTime) 
    else: 
     newTime = str(newHourHand) + ':0' + str(newMinuteHand) 
     print(newTime) 

# Checking for the case that the hour is 23:00 
elif newMinuteHand >= 0 and hourHand == 23: 
    newHourHand = 0 

    if newMinuteHand >= 10: 
    newTime = str(newHourHand) + '0:' + str(newMinuteHand) 
    print(newTime) 
    else: 
     newTime = str(newHourHand) + '0:0' + str(newMinuteHand) 
     print(newTime) 
+0

'datetime'モジュール(これは標準ライブラリの一部です)を見てください。それはあなたのために数学のすべての時間を処理する 'time'と' timedelta'クラスを持っています。 –

+0

ブラッドは正しいです。日時はプロの設定では最高です。どのプログラマも、おそらく学習しているように:https://www.youtube.com/watch?v=-5wpm-gesOY – FredMan

答えて

1

あなたはこのような何かことができるようになります。あなたは私のために知っておくために、あなたの入力と出力が十分であるかを本当に指定していないが

hourHand = 23 
minuteHand = 00 
duration = 61 

total_minutes = minuteHand + duration 
additional_hours = int(total_minutes/60) 
final_minutes = total_minutes % 60 
final_hours = (hourHand + additional_hours) % 24 

final_time = "{0}:{1}".format(final_hours,str(final_minutes).rjust(2,"0")) 

print(final_time) 

確かに。

分針でrjust(2、 "0")を使用すると、blah < 10などのif文が使用できなくなります。

他のすべては、除算およびモジュラス演算子で処理する必要があります。

関連する問題