2017-12-16 17 views
-2

이 프로그램을 보았습니다.이 프로그램의 일부가 여기에 고정되었지만 다른 문제가 발생했습니다. 달이 인쇄되면 날짜가 올바른 위치에 있지 않고 공백이 누락됩니다. 나는 그 주 마지막 편지 밑에있는 한자리 숫자로 날짜를 알아야합니다. 예를 들어, "F"문자 대신 "r"문자 아래의 숫자 1. 도와 줘서 고마워.파이썬 달력 날짜에 공백이 없습니다.

calendar1 = [('January', range(1, 31 + 1)), 
      ('Feburary', range(1, 28 + 1)), 
      ('March', range(1, 31 + 1)), 
      ('April', range(1, 30 + 1)), 
      ('May', range(1, 31 + 1)), 
      ('June', range(1, 30 + 1)), 
      ('July', range(1, 31 + 1)), 
      ('August', range(1, 31 + 1)), 
      ('September', range(1, 30 + 1)), 
      ('October', range(1, 31 + 1)), 
      ('November', range(1, 30 + 1)), 
      ('December', range(1, 31 + 1))] 

week = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'] 

def make_calendar(year, start_day): 

    # Determine current starting position on calendar 
    start_pos = week.index(start_day) 

    for month, days in calendar1: 
     # Print month title 
     print('{0} {1}'.format(month, year).center(20, ' ')) 
     # Print Day headings 
     print(' '.join(['{0:<2}'.format(w) for w in week])) 
     # Add spacing for non-zero starting position 
     print('{0:<3}'.format('')*start_pos, end='') 

     for day in days: 
      # Print day 
      print('{0:<3}'.format(day), end='') 
      start_pos += 1 
      if start_pos == 7: 
       # If start_pos == 7 (Sunday) start new line 
       print() 
       start_pos = 0 # Reset counter 
     print('\n') 

yr=int(input('Enter Year')) 
strtday=input('Enter start day of the year Mo,Tu,We,Th,Fr,Sa,Su') 
make_calendar(yr,strtday) 

답변

1

변경이이에

print('{0:<3}'.format(day), end='') 

: 형식 문자열의 닫는 중괄호 뒤에 공백이 있음을

print('{0:>2} '.format(day), end='') 

참고.

원래 코드는 "day을 3 문자 필드에서 왼쪽으로 인쇄"라고 말합니다. 새 코드는 "day을 2 문자 필드에서 오른쪽 정렬 한 다음 공백을 인쇄하십시오"라고 말합니다.

+0

내가 변경 한 후에 캘린더가 완전히 엉망이되었습니다. ( – Jaakkath

+0

그런 다음 올바르게 변경하지 않았습니다. 이제 프로그램의 일부는 어떻게 생겼습니까? – ottomeister