0
おそらく簡単な修正が、私は仕事に出て、私は関数内に関数を持っていますが、それらを一度にどのように分割するのですか?
基本的にこれは私が10進形式で日中働いてきた時間を計算するために作られた小さなプログラムがあるだけでカント、(私はそのようにそれをしなければならないbecasuse仕事用のタイムシート用)は完璧に機能しますが、いつでも再起動してプログラムを再起動する機能を追加することにしました。
Time within Timeを呼び出してみましたが、再起動してからやり直してから元に戻ります。私はまた、Timeを呼び出してRestartを呼び出すRestart関数を作成しようとしましたが、それも動作しませんでした。
私は彼らの両方から脱出してプログラムをもう一度呼びたいと思っていましたが、これは可能ですか?
def Time():
clear()
def is_valid_hours():
while True:
h=input("Hour: ")
if h=="restart": return "yes" #this line doesnt work (tried break)
try:
h=int(h)
return h
except:
print("Please enter numbers!")
def is_valid_Minutes():
while True:
h=input("Minute: ")
if h=="restart": return "yes" # this is the other line (break tried)
try:
h=int(h)
return h
except:
print("Please enter numbers!")
print("Please use time in a 24hour clock format when using this calculator")
print("Please enter arrival time:")
arrivalTimeHours=is_valid_hours()
arrivalTimeMinutes=is_valid_Minutes()
print("Please enter length of lunch break: ")
lunchBreakHours=is_valid_hours()
lunchBreakMinutes=is_valid_Minutes()
print("Please enter desired leave time: ")
leaveTimeHours=is_valid_hours()
leaveTimeMinutes=is_valid_Minutes()
if arrivalTimeHours>0:
arrivalTimeHours=arrivalTimeHours*60
arrivalTime=arrivalTimeHours+arrivalTimeMinutes
if lunchBreakHours>0:
lunchBreakHours=lunchBreakHours*60
lunchBreak=lunchBreakHours+lunchBreakMinutes
if leaveTimeHours>0:
leaveTimeHours=leaveTimeHours*60
leaveTime=leaveTimeHours+leaveTimeMinutes
totalTimeMinutes=leaveTime-(arrivalTime+lunchBreak)
decimalTime=totalTimeMinutes/60
print("Your decimal time is "str(decimalTime))
newTime=input("Would you like to do a new time?: ")
return newTime.lower()
newTime=Time()
while newTime=="yes" or newTime=="ye" or newTime=="y" or newTime=="yah" or newTime=="yeah" or newTime=="yh":
newTime=Time()
input("Press enter to close")
EDIT: 私はこのaswellをやってみました、それはどちらか動作しませんでした。
def Time():
clear()
notQuitting=True
while notQuitting==True:
def is_valid_hours():
while True:
h=input("Hour: ")
if h=="restart":
notQuitting=False
return "yes"
try:
h=int(h)
return h
except:
print("Please enter numbers!")
def is_valid_Minutes():
while True:
m=input("Minute: ")
if m=="restart":
notQuitting=False
return "yes"
try:
m=int(m)
return m
except:
print("Please enter numbers!")
#rest of code
'h.strip()== '再起動' の場合:MyException'を上げますか? – jbndlr
これは、必要以上に複雑になっています。これにネストされた関数定義は必要ありません。 [有効な応答が得られるまで入力を求める](http://stackoverflow.com/questions/23294658/asking-the-user-for-input-until-they-give-a-valid-response)を参照してください。 –