یک برنامه پایتون بنویسید که یک عبارت ریاضی (مثلاً "2*sin(pi/2)+4") را از ورودی بخواند، آن را با استفاده از eval و توابع/ثوابت ماژول math محاسبه کند و نتیجه را نشان دهد.
1.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:34 0.0
برای حل، ماژول math را وارد کنید و یک دیکشنری از نامهای مجاز (مثل sin، cos، pi و غیره) بسازید تا به عنوان فضای نام به eval داده شود؛ بهعنوان مثال globals={"__builtins__":None} و locals=allowed_names. ورودی کاربر را با eval در همین محیط امن اجرا کنید و با استفاده از try/except خطاهای SyntaxError یا NameError را مدیریت کنید و نتیجه را نمایش دهید. این روش هم مناسب برای محاسبات عددی ساده است و هم نمونهای از اسکریپت اتوماسیون کوچک با استفاده از eval میباشد.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
استفاده از eval با فضای نام امن ضروری است تا کاربر نتواند کد مخرب اجرا کند. با تعیین globals={"__builtins__": None} و locals=allowed_names میتوانید به توابع ریاضی مثل sin، cos و مقدار pi دسترسی امن بدهید. استفاده از try/except برای catching SyntaxError یا NameError کمک میکند تا ورودیهای نامعتبر به خوبی مدیریت شوند. در نهایت، اگر امنیت و کنترل دقیقتری میخواهید، بررسیهای اضافی یا رویکردهای جایگزین مانند تحلیل و اجرای محدود توابع را مد نظر قرار دهید.
گزارش