2017-12-16 13 views
-2

私はこのプログラムに出くわしましたが、その一部をここで修正しましたが、別の問題が発生しました。月が印刷されるとき、日が正しい位置にない、それは空白がありません。私は一桁の数字で日付を取得して、その週の最後の文字の下に置く必要があります。たとえば、 "F"文字の代わりに "r"文字の下の1番です。ご協力ありがとうございました。Pythonカレンダーの日付に空白がありません

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

関連する問題