2014-01-20 2 views
0

이 프로그램은 그대로 작동하지만 각 if 문에서 time = "% s : % s"% (시, 분)를 반복해야합니다. 다른 모든 범위와 장소에 배치했지만 if 문 또는 그 밖의 다른 위치를 벗어나 한 번 선언하기보다는 반복해야하는 이유를 파악할 수 없습니다. 당신은 단지 그것의 사용 위의 entry의 관점에서 정의 될 때까지 hour 때문에불필요한 선언 반복

def minutesToHours(): 
    hour = 0 
    entry = input("How many minutes? I will convert it to hours...") 

    if 0 <= entry < 60: 
     minute = entry 
     time = "%s:%s" % (hour, minute) 
     print time 
    elif entry >= 60: 
     hour = entry/60 
     minute = entry % 60 
     time = "%s:%s" % (hour, minute) 
     print time 
    else: 
     print "Please enter a number greater than zero next time." 

minutesToHours() 

input() 
+0

당신은 예를 들어 코드의 상단에있는 '시간'을 할당 할 수 없습니다 때문에 '분' 아직 정의되지 않았습니다. – Totem

+0

파이썬에는 선언이 없습니다. 그것은 단지 간단한 과제 일뿐입니다. – chepner

+0

내 코드의 이전 반복에서 '분'과 '시간'을 각각 맨 위에 0으로 지정했습니다. 나는 지금까지 내가 무엇을 시도했는지 구체적으로 언급하지 않았다 ... – pleaseDontPanic

답변

3

를 사용할 수

time = "%s:%s" % divmod(int(entry), 60) 

을 여기에 divmod 문서입니다

+0

그레이트! 아직 divmod() 함수를 발견하지 못했습니다. 도와 주셔서 감사합니다! – pleaseDontPanic

0

가 존재하지 않습니다. 심지어

hour, minute = divmod(int(entry), 60) 
time = "%s:%s" % (hour, minute) 

또는 :

0

당신은 당신이 처음에 if 문을 필요가 없습니다 람다

def minutesToHours(): 

    time = lambda hour, minute: '%s: %s' % (hour, minute) 
    hour = 0 
    entry = input("How many minutes? I will convert it to hours...") 

    if 0 <= entry < 60: 
     minute = entry 
    elif entry >= 60: 
     hour = entry/60 
     minute = entry % 60 
    else: 
     print "Please enter a number greater than zero next time." 
     return 

    print time(hour, minute) 
1

일부 코드를 리팩터링 할 수 있습니다.

  1. entry이 숫자가 아닌 동안 사용자에게 숫자를 입력하도록 요청할 수 있습니다.
  2. if 구문을 필요로하지 않습니다. 모듈러스를 계산할 때 entry이 60보다 크거나 같아야하기 때문입니다. divmod을 사용하여 나누기 및 모듈로 할 수 있습니다.
  3. 은 그래서 표시는 모든 제안으로

을 통합 할 수 있습니다,

def minutesToHours(): 
    entry = "" 
    while not entry.isdigit(): 
     if entry != "": 
      print "Please enter a number greater than zero next time." 
     entry = input("How many minutes? I will convert it to hours...") 

    hour, minutes = divmod(int(entry), 60) 
    time = "%s:%s" % (hour, minutes) 
    print time 

minutesToHours() 

input() 
0
def minutesToHours(): 
    entry = input("How many minutes? I will convert it to hours...") 
    if entry < 0: 
     print "Please enter a number greater than zero next time." 
    else: 
     print "%02d:%02d" % divmod(entry,60)   

minutesToHours() 

input()