راه
۶ کیو· متوسطمتوسطPYTHON۴ ثانیه · ۲۵۶ مگابایت

چی‌سون؟

⏱️ محدودیت زمان

۱ ثانیه

💾 محدودیت حافظه

۲۵۶ مگابایت

در این تمرین، شما باید دو دستور ساده از یک زبان برنامه‌نویسی فرضی را که از ورودی خوانده می‌شوند، شبیه‌سازی کنید.

برنامه‌ی شما خط‌به‌خط، دستورات را از ورودی می‌خواند و آن‌ها را اجرا می‌کند. دو نوع دستور وجود دارد:


bash
۱. دستور انتساب (:=)این دستور برای تخصیص یک مقدار به یک متغیر استفاده می‌شود. قالب کلی آن به‌صورت زیر است:variable_name := valueنام متغیر: یک رشته شامل حروف کوچک انگلیسی با حداکثر ۲۰ حرف.مقدار: مقدار می‌تواند یکی از دو حالت زیر باشد که به‌صورت رشته‌ای در ورودی نمایش داده می‌شود.لیست اعداد صحیح نامنفی: یک رشته که نمایش استاندارد یک لیست پایتون از اعداد صحیح نامنفی است. این لیست شامل حداکثر ۲۰ عضو است و هر عدد حداکثر ۱۰۰۰ است. بین هر کاما (,) و عدد بعدی دقیقاً یک فاصله قرار گرفته‌است.دیکشنری‌ای از رشته به عدد: یک رشته که نمایش استاندارد یک دیکشنری پایتون است که کلیدهای آن از نوع رشته و مقادیر آن از نوع عدد صحیح نامنفی (حداکثر ۱۰۰) هستند. این دیکشنری شامل حداکثر ۲۰ جفت کلید-مقدار منحصربه‌فرد است. فاصله، دونقطه (:) و کاما (, :, ,) دقیقاً مطابق با نمایش دیکشنری در پایتون/JSON خواهد بود.

bash
۲. دستور چاپ (print)این دستور برای چاپ مقدار یک عضو خاص از یک متغیر استفاده می‌شود. قالب کلی آن به‌صورت زیر است:print variable_name[id]نام متغیر: نام متغیری است که قبلاً با دستور انتساب مقداردهی شده‌است. تضمین می‌شود که متغیر موردنظر قبل از فراخوانی با print تعریف شده‌است.شناسه: اگر متغیر یک لیست باشد، id یک اندیس عددی صحیح (نامنفی) است که به‌صورت عدد در رشته‌ی ورودی ظاهر می‌شود. اگر متغیر یک دیکشنری باشد، id یک کلید از نوع رشته است که به‌صورت رشته‌ی نقل‌قول‌دار در رشته‌ی ورودی ظاهر می‌شود.بین کلمه‌ی print و نام متغیر دقیقاً یک فاصله وجود دارد.

💡 راهنمایی

برای تبدیل رشته‌ها به اشیاء پایتونی می‌توانید از تابع loads کتابخانه‌ی json استفاده کنید.

یک متغیر می‌تواند پس از تعریف اولیه، مجدداً با یک مقدار جدید (حتی از نوع متفاوت) مقداردهی شود. برنامه‌ی شما باید این قابلیت را پشتیبانی کند و در صورت چاپ یک متغیر پیش و پس از تغییر، مقادیر درستی را نمایش دهد.

برای ذخیره‌سازی مقادیر متغیرهای تعریف‌شده، می‌توانید از یک دیکشنری پایتون استفاده کنید که کلید آن نام متغیر (رشته) و مقدار آن، مقدار تخصیص‌یافته (لیست یا دیکشنری پایتون) باشد.


📥 ورودی و 📤 خروجی

ورودی برنامه از ورودی استاندارد خوانده می‌شود و شامل n خط است که دستورات را مشخص می‌کند.

  • در خط اول ورودی، عدد صحیح n آمده‌است که تعداد خطوط دستورات بعدی را مشخص می‌کند (1 ≤ n ≤ 200).
  • در هریک از n خط بعدی، یک دستور به فرمت‌های بالا می‌آید.

برای هر دستور print که اجرا می‌شود، مقدار خواسته‌شده را در یک خط جداگانه چاپ کنید.


🎯 نمونه

ورودی ۱

text
4
a := [1, 2, 3]
b := {"2": 1, "1": 4, "4": 5}
print a[1]
print b["1"]

خروجی ۱

text
2
4

ورودی ۲

text
4
my_list := [10, 20, 30]
user_data := {"id": 101, "name": "Alice"}
print my_list[0]
print user_data["name"]

خروجی ۲

text
10
Alice

💡 راهنمایی نهایی

ساختار کلی کد به این شکل است:

python
import json

n = int(input())
variables = {}

for _ in range(n):
    line = input()

    if ":=" in line:
        # دستور انتساب
        var_name, value_str = line.split(" := ")
        variables[var_name] = json.loads(value_str)

    else:
        # دستور print
        # مثال: print a[1]
        parts = line.split(" ")  # ["print", "a[1]"]
        var_name = parts[1].split("[")[0]
        id_str = parts[1].split("[")[1].rstrip("]")

        if type(variables[var_name]) == list:
            index = int(id_str)
            print(variables[var_name][index])
        else:
            key = json.loads(id_str)
            print(variables[var_name][key])
  • json.loads() ← برای تبدیل رشته‌های لیست یا دیکشنری به اشیاء پایتونی
  • split(" := ") ← جدا کردن نام متغیر و مقدار در دستور انتساب
  • split(" ") ← جدا کردن print از بقیه‌ی دستور
  • تشخیص نوع متغیر با type() برای مشخص کردن لیست یا دیکشنری
  • برای دیکشنری، کلید را با json.loads() تبدیل کنید (رشته‌ای با نقل‌قول)

✅ این تمرین را در ویرایشگر خود پیاده‌سازی کنید. به یاد داشته باشید که برای تبدیل رشته‌های لیست و دیکشنری از json.loads() استفاده کنید.

نمونه‌ها

ورودی نمونه ۱
4
a := [1, 2, 3]
b := {"2": 1, "1": 4, "4": 5}
print a[1]
print b["1"]
خروجی نمونه ۱
2
4
ورودی نمونه ۲
4
my_list := [10, 20, 30]
user_data := {"id": 101, "name": "Alice"}
print my_list[0]
print user_data["name"]
خروجی نمونه ۲
10
Alice

برای نوشتن پاسخ و دریافت امتیاز، ابتدا وارد حساب شوید.

ورود