یک برنامه پایتون بنویسید که یک عبارت ریاضی (مثلاً "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 می‌باشد.

توسط پژوهشگر در 221 روز قبل ساعت 01:34
دسته بندی ها: Python Python for beginner
arman در 221 روز قبل ساعت 12:45

استفاده از eval با فضای نام امن ضروری است تا کاربر نتواند کد مخرب اجرا کند. با تعیین globals={"__builtins__": None} و locals=allowed_names می‌توانید به توابع ریاضی مثل sin، cos و مقدار pi دسترسی امن بدهید. استفاده از try/except برای catching SyntaxError یا NameError کمک می‌کند تا ورودی‌های نامعتبر به خوبی مدیریت شوند. در نهایت، اگر امنیت و کنترل دقیق‌تری می‌خواهید، بررسی‌های اضافی یا رویکردهای جایگزین مانند تحلیل و اجرای محدود توابع را مد نظر قرار دهید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری