کد پایتون که روز هفته و عدد میگیرد و نتیجه را میدهد

سلام
من میخوام یه کد بنویسم با پایتون که کاربر روزهای هفته رو وارد کنه و همینطور یک عدد بین 0 تا 500. بعد نرم افزار اون روز هفته رو با عدد کاربر جمع بزنه و روز هفته نهایی رو بفرسته. مثلاً اگه کاربر میزنه Monday و عدد 3، نرم افزار Thursday رو نشون بده.

درود. خوب مشکل شما کجاست دوست من؟!
قطعه کد خودتون رو اشتراک بزارید پایتان کار می یاد بتونه کمکتون کنه !! و به نظرم اگر انتظار کد آماده رو دارید این خیلی جالب نیست برای یادگیری!

تست نکردم ولی احتمالا این جواب بده:
روزهای هفته رو توی یه لیست بذارید.
وقتی کاربر یه روز رو وارد میکنه، با mylist.index("string") پیدا کنید که چندمین المنت هست توی اون لیست.
بعد این عدد رو به عددی که کاربر میگه اضافه کنید.
نتیجش هرچی شد، به 7 تقسیم کنید و باقیماندش رو به دست بیارید. یعنی نتیجه‌ی number % 7
به یه عدد بین ۰ تا ۶ میرسید. اون ایندکس رو از لیستتون بخونید. یعنی مثلا mylist[result]

یه همچین چیزی مثلا؟

mylist = ["sat", "sun", "mon", "tue", "wed", "thu", "fri"]

def get_day(day, num):
  day_num = mylist.index(day)
  sum = day_num + num
  index = sum % 7
  return mylist[index]

get_day("sat", 2)

ادیت:
اینقدر پایتون کد نزدم، یادم نمیومد برای تعریف فانکشن باید از fn استفاده کنم یا defn. سرچ کردم دیدم باید از def استفاده کنم :joy:

3 پسندیده

این رو نوشتم اما خطا میده.

def solution(s: str, k: int) -> str:
    days = [
        'Mon',
        'Tue',
        'Wed',
        'Thu',
        'Fri',
        'Sat',
        'Sun',
    ]
    index = 0
    for i in range(len(days)):
        if days[i] == day:
            index = i
    return days[(index + k) % 7]
def solution(day: str, k: int if __name__ == '__main__':
    s = input()
    k = int(input()) in range (0,500)
    res = solution(s, k)
    print(res)) 

ممنون بابت edit. حالا نظری ندارید چرا خطا میده؟
انگار تو اون قسمتی که main هست خطا میده.

خب اون خط مشکل سینتکس داره.
شما یه solution اون بالا تعریف کردید و یه‌دونه این پایین بعد خطش نصفه‌نیمست و یهو تبدلی شده به if name == main

از اون خط به بعد رو تبدیل به این کنید درست میشه:

if __name__ == '__main__':
   s = input()
   k = int(input()) in range (0,500)
   res = solution(s, k)
   print(res)
3 پسندیده

آهان یعنی solution دوم رو اصلا نباید میذاشتم؟

خیر.

شما یه تابع solution اون بالا تعریف میکنید که وقتی برنامه اجرا میشه، اون تابع اجرا نمیشه چون چیزی صداش نمیزنه.
بعد یه جای دیگه‌ی برنامه، پایین همون فایل یا توی یه فایل دیگه (یه جایی که پایتون، اونجا رو به عنوان Entry Point برنامه میخواد چک کنه) یه کدی مینویسید که اون تابع رو صدا بزنه. حالا این کد، میتونه همینطوری نوشته بشه:

print(solution("Mon", 12))

یا میتونه توی if name == main باشه که در این صورت، وقتی برنامه رو از داخل ترمینال اجرا میکنید، اون کد هم اجرا میشه چون در این صورت، name ما برابر با main هست (چون توی entry point هستیم) ولی اگه اون فایل رو بخواید توی یه فایل دیگه import کنید، دیگه این کد اجرا نمیشه چون name این فایل وقتی که یه جایی import شده باشه و به صورت مستقل صدا زده نشده باشه، دیگه main نیست و شرط if، برابر با true نمیشه که بخواد کد داخلش رو اجرا کنه.

2 پسندیده

چقدر سخته همه اینا رو چطوری یاد میگیرین؟ :smiling_face_with_tear:

تو یادگیری من یک چیزی که خیلی بهم ثابت شده رو با مثال بگم

من از ریاضی خیلی خوشم نمی یومد در دوره دبیرستان و همینطور دانشگاه ولی از روزی که فهمیدم مثلا n وزیر کجا به کار می ره خیلی برام جذاب شد. یا روزی که از یک معلم ریاضی یک مدل آماری برای یکی از پروژه هام در آوردم تا گراف درست کنم خیلی قشنگ متوجه شدم چیزی که چندین سال مشکل داشتم
در کل اگر این مورد رو نزدیک کنی به کارت و علاقت خیلی یادگیری راحتر می شه

بقیه همش تجربه و تمرین کردن هست

1 پسندیده

دقیقا به روش شما.
یه چیزی توی داکیومنت ها و کتابها میخونم و یاد میگیرم. بعد میرم یه برنامه‌ای مینویسم و به مشکل میخورم بعد سرچ میکنم یا میپرسم و به جواب میرسم، بعد دیگه یادم نمیره چون یه تایمی درگیرش بودم.
حتی اگه جزئیات رو فراموش کنم، اصولا یادم میمونه که یه بار یه همچین مشکلی داشتم و احتمالا فلان کلمه‌ها رو سرچ کرده بودم که به جواب رسیدم. میرم دوباره سرچ میکنم و پیداش میکنم.
مهم حفظ کردن راه‌حل نیست. مهم اینه که یادمون بمونه این مشکل رو دفعه‌ی قبل چطوری حل کردیم. خیلیوقتا میرم از پروژه‌ای که قبلا مشابه این کار رو توش انجام دادم، یه تیکه کد کپی میکنم و استفاده میکنم.

1 پسندیده