تقویم شمسی بدون استفاده از ماژول calendar در پایتون
کد بر اساس ماژول calendar :
# sourcea.ir
import calendar
# display the calendar
print(calendar.month(2023, 4))
تصویر خروجی کد بر اساس ماژول calendar :
شما میتواند بدون مشکل از این ماژول برای چاپ تقویم میلادی استفاده نمایید ، برای تقویم شمسی نیز ماژول های دیگری (JDATE) برای زبان پایتون تعریف شده اند.
پیاده سازی تقویم شمسی بدون استفاده از ماژول در پایتون:
day = eval(input("Please Enter Number Of First Day In Year (Sat:1 .... Fri:7):"))
for i in range(6):
print("")
if (i+1)==1:
print(" "," "," \t\t","فروردین"," "," "," ")
elif (i+1)==2:
print(" "," "," \t\t","اردیبهشت"," "," "," ")
elif (i+1)==3:
print(" "," "," \t\t","خرداد"," "," "," ")
elif (i+1)==4:
print(" "," "," \t\t","تیر"," "," "," ")
elif (i+1)==5:
print(" "," "," \t\t","مرداد"," "," "," ")
elif (i+1)==6:
print(" "," "," \t\t","شهریور"," "," "," ")
print("شنبه|","یک شنبه|","دوشنبه|","سه شنبه|","چهارشنبه|","پنج شنبه|","جمعه|")
#sourcea.ir
print("---------------------------------------------------------")
s = 0
for x in range(31+(day-1)):
if((x+1)>day-1):
print(" "+str(s+1).zfill(2)+"\t|" , end="")
s+=1
else:
print(" \t|" , end="")
if ((x+1)%7)==0:
print(" ")
day = (((day)+31)%7)
for i in range(5):
print("")
if (i+1)==1:
print(" "," "," \t\t","مهر"," "," "," ")
elif (i+1)==2:
print(" "," "," \t\t","آبان"," "," "," ")
elif (i+1)==3:
print(" "," "," \t\t","آذر"," "," "," ")
elif (i+1)==4:
print(" "," "," \t\t","دی"," "," "," ")
elif (i+1)==5:
print(" "," "," \t\t","بهمن"," "," "," ")
print("شنبه|","یک شنبه|","دوشنبه|","سه شنبه|","چهارشنبه|","پنج شنبه|","جمعه|")
print("---------------------------------------------------------")
s = 0
for x in range(30+(day-1)):
if((x+1)>day-1):
print(" "+str(s+1).zfill(2)+"\t|" , end="")
s+=1
else:
print(" \t|" , end="")
if ((x+1)%7)==0:
print(" ")
day = (((day)+30)%7)
print("")
print(" "," "," \t\t","اسفند"," "," "," ")
print("شنبه|","یک شنبه|","دوشنبه|","سه شنبه|","چهارشنبه|","پنج شنبه|","جمعه|")
print("---------------------------------------------------------")
s = 0
for x in range(30+(day-1)):
if((x+1)>day-1):
print(" "+str(s+1).zfill(2)+"\t|" , end="")
s+=1
else:
print(" \t|" , end="")
if ((x+1)%7)==0:
print(" ")
برای پیاده سازی این کد در یک حلقه نیز میتوان از روش زیر عمل کرد:
day = eval(input("Please Enter Number Of First Day In Year (Sat:1 .... Fri:7):"))
for i in range(12):
print("")
if (i+1)==1:
print(" "," "," \t\t","فروردین"," "," "," ")
elif (i+1)==2:
print(" "," "," \t\t","اردیبهشت"," "," "," ")
elif (i+1)==3:
print(" "," "," \t\t","خرداد"," "," "," ")
elif (i+1)==4:
print(" "," "," \t\t","تیر"," "," "," ")
elif (i+1)==5:
print(" "," "," \t\t","مرداد"," "," "," ")
elif (i+1)==6:
print(" "," "," \t\t","شهریور"," "," "," ")
elif (i+1)==7:
print(" "," "," \t\t","مهر"," "," "," ")
elif (i+1)==8:
print(" "," "," \t\t","آبان"," "," "," ")
elif (i+1)==9:
print(" "," "," \t\t","آذر"," "," "," ")
elif (i+1)==10:
print(" "," "," \t\t","دی"," "," "," ")
elif (i+1)==11:
print(" "," "," \t\t","بهمن"," "," "," ")
elif (i+1)==12:
print(" "," "," \t\t","اسفند"," "," "," ")
if i+1 <= 6:
month = 31
elif i+1 >6 and i+1 <12:
month = 30
else:
month = 29
print("شنبه|","یک شنبه|","دوشنبه|","سه شنبه|","چهارشنبه|","پنج شنبه|","جمعه|")
#sourcea.ir
print("---------------------------------------------------------")
s = 0
for x in range(month+(day-1)):
if((x+1)>day-1):
print(" "+str(s+1).zfill(2)+"\t|" , end="")
s+=1
else:
print(" \t|" , end="")
if ((x+1)%7)==0:
print(" ")
day = (((day)+month)%7)
تصویر خروجی کد تقویم شمسی بدون استفاده از ماژول :
توضیحات:
صورت سوال:
برنامه ای بنویسید که روز اول سال را بگیرد و تقویم کل سال را با در نظر گرفتن روز پایانی و شروع ماه های سال چاپ کند
برنامه پیاده سازی تقویم شمسی پایتون بدون استفاده از ماژول
توضیحات پروژه ابتدایی:
این برنامه روز ابتدایی سال را در ابتدا از کاربر دریافت و در متغیری با نام day ذخیره میکند ، در واقع ما در برنامه day-1 فاصله قبل از شروع یکم ماه قرار میدهیم
در حلقه ابتدایی که مربوط به 6 ماهه ابتدایی سال است i+1 را به منظور پیدا کردن نام ماه در شرط قرار داده و نام ماه را چاپ میکنیم
سپس متنی پیشفرض که مربوط به روز هخای هفته است را برای هر ماه چاپ و یک جداکننده خطی در ادامه آن چاپ میکنیم
در حلقه تو درتو که به تعداد روز های ماه های شش ماهه اول (31 روز) + تعداد فاصله (day-1) (به دلیل اینکه در صورت در نظر گرفتن تعداد بخش های خالی حلقه ما 31 – تعداد فاصله بار تکرار و در تقویم هیچگاه به عدد
31 نمیرسیم ، البته در صورتی که فاصله خالی صفر باشد تقویم درست چاپ خواهد شد.) چک میکنیم اگر عدد فعلی حلقه بزرگتر از تعداد فاصله بود عدد S (شمارنده اضافی در حلقه) چاپ شود در غیر اینصورت بخشی خالی که مربوط به فواصل هست چاپ شود.
در انتها نیز فاصله آخرین روز ماه با جمع بر 31 و باقیمانده گرفتن بر ۷ به دست میآید و ماه بعدی به تعداد همان خانه فاصله خواهد داشت.
حلقه های بعدی نیز به همین صورت عمل میکنند.
توضیحات پروژه پیاده سازی شده با یک حلقه:
این پروژه نیز مشابه پرژه قبلی است اما برای تعیین روز ماه از شرط و month مقدار دهی میشود که در هر بخشی روز ماه نیاز باشد به جای عدد تعداد روز ماه از month استفاده میشود.
شما میتوانید سوالات خود را از طریق ایمیل پشتیبانی – تماس با ما – یا در قسمت نظرات سوال خود را بپرسید.
موفق باشید
A.J