وبلاگ
چیت شیت خطاهای رایج در پایتون و راهحلها
فهرست مطالب
“تسلط به برنامهنویسی پایتون با هوش مصنوعی: آموزش کدنویسی هوشمند با ChatGPT”
0 تا 100 عطرسازی + (30 فرمولاسیون اختصاصی حامی صنعت)
Claude & GPT Credit – API | IDE | n8n
خرید کردیت API برای Claude و GPT با امکان استفاده در IDE و n8n. مناسب برنامهنویسی، تولید محتوا، تحلیل داده و ساخت اتوماسیون؛ راهنمای اتصال و پشتیبانی حامی صنعت همراه سفارش ارائه میشود. مدل و مقدار اعتبار را پیش از خرید بررسی کنید و برای دریافت کردیت API اقدام کنید.
اکانت Leonardo.ai با 8500 کردیت
خرید اکانت ChatGPT Plus یک ماهه با کردیت CODEX اختصاصی
خرید اکانت Gemini Pro و Gemini Advanced ۱۸ ماهه اختصاصی (تضمین فعالسازی)
خرید اکانت Gemini Pro و Gemini Advanced هجدهماهه با فعالسازی روی ایمیل شخصی و پشتیبانی حامی صنعت. مناسب تولید محتوا، برنامهنویسی، تحلیل فایل و استفاده از ابزارهای هوش مصنوعی گوگل. شرایط فعالسازی را مطالعه کنید و برای سفارش اقدام کنید.
دایرکت اتوماتیک اینستاگرام حامی | اشتراک ۳۰روزه یک پیج
اشتراک ۳۰روزه پنل دایرکت اتوماتیک اینستاگرام حامی برای یک پیج؛ پاسخ خودکار کامنت و دایرکت، کمپین کلمه کلیدی، قفل فالو، جذب لید، دکمه و لینک و گزارش تحلیل پیج. پاسخهای ثابت بدون نیاز به هوش مصنوعی کار میکنند و اتصال OpenAI Compatible اختیاری است. همین حالا اشتراک پنل اینستاگرام را تهیه کنید و راهاندازی را از داخل پنل فارسی شروع کنید.
دوره آموزش Flutter و برنامه نویسی Dart [پروژه محور]
دوره جامع آموزش برنامهنویسی پایتون + هک اخلاقی [با همکاری شاهک]
دوره جامع آموزش فرمولاسیون لوازم آرایشی
دوره جامع علم داده، یادگیری ماشین، یادگیری عمیق و NLP
چیت شیت خطاهای رایج در پایتون و راهحلها
پایتون، زبانی قدرتمند و محبوب، در عین سادگی، میتواند چالشهایی را برای برنامهنویسان، بهویژه تازهکاران، ایجاد کند. آشنایی با خطاهای رایج و نحوه رفع آنها، مهارتی ضروری برای توسعهدهندگان پایتون است. این چیت شیت به شما کمک میکند تا با رایجترین خطاها در پایتون آشنا شده و راهحلهای عملی برای رفع آنها را بیابید.
1. خطاهای نحوی (SyntaxError)
این نوع خطاها معمولاً به دلیل اشتباهات تایپی، ساختار نامناسب کد یا عدم رعایت قوانین نحوی پایتون رخ میدهند. کامپایلر پایتون قبل از اجرای کد، آن را بررسی میکند و در صورت وجود خطای نحوی، اجرای برنامه متوقف میشود.
مثال 1: از دست دادن کولون (:)
فراموش کردن کولون در انتهای دستوراتی مانند if، for، while و def یکی از رایجترین خطاهای نحوی است.
# اشتباه
if x > 5
print("x بزرگتر از 5 است")
# صحیح
if x > 5:
print("x بزرگتر از 5 است")
مثال 2: پرانتزهای نامتعادل
عدم تطابق تعداد پرانتزهای باز و بسته میتواند منجر به SyntaxError شود.
# اشتباه
result = (1 + 2 * 3
# صحیح
result = (1 + 2) * 3
راهحلها برای رفع SyntaxError
- دقت در نوشتن کد: با دقت کد خود را بررسی کنید و از صحت املای کلمات کلیدی و رعایت قوانین نحوی پایتون اطمینان حاصل کنید.
- استفاده از ویرایشگرهای کد با قابلیت تشخیص خطا: ویرایشگرهای کد مدرن معمولاً خطاهای نحوی را در لحظه شناسایی و برجسته میکنند.
- توجه به پیام خطا: پیام خطایی که پایتون نمایش میدهد، معمولاً محل و نوع خطا را مشخص میکند. به این پیامها توجه کنید.
- بررسی فرورفتگیها (Indentation): پایتون به فرورفتگیها حساس است. اطمینان حاصل کنید که بلوکهای کد به درستی فرورفتهاند.
2. خطاهای نام (NameError)
این خطا زمانی رخ میدهد که شما سعی میکنید از یک متغیر، تابع یا کلاس استفاده کنید که قبلاً تعریف نشده است.
مثال
# اشتباه
print(variable_not_defined)
# صحیح
variable_not_defined = 10
print(variable_not_defined)
راهحلها برای رفع NameError
- تعریف متغیر قبل از استفاده: قبل از استفاده از هر متغیر، مطمئن شوید که آن را تعریف کردهاید.
- بررسی املای نامها: املای نام متغیرها، توابع و کلاسها را به دقت بررسی کنید. حتی یک اشتباه تایپی کوچک میتواند منجر به
NameErrorشود. - توجه به حوزه دید (Scope): مطمئن شوید که متغیر مورد نظر در حوزه دید کد شما قرار دارد. متغیرهایی که در داخل یک تابع تعریف میشوند، فقط در همان تابع قابل دسترسی هستند.
3. خطاهای نوع (TypeError)
این خطا زمانی رخ میدهد که شما سعی میکنید یک عملیات را روی نوع دادهای نامناسب انجام دهید. به عنوان مثال، سعی کنید دو رشته را با استفاده از عملگر ضرب (*) ضرب کنید.
مثال
# اشتباه
result = "hello" * "world"
# صحیح
result = "hello" * 3 # تکرار رشته "hello" سه بار
راهحلها برای رفع TypeError
- بررسی نوع دادهها: قبل از انجام هر عملیاتی، نوع دادههای مورد استفاده را بررسی کنید. میتوانید از تابع
type()برای این منظور استفاده کنید. - تبدیل نوع دادهها: در صورت نیاز، نوع دادهها را به یکدیگر تبدیل کنید. به عنوان مثال، میتوانید از تابع
int()برای تبدیل یک رشته به عدد صحیح استفاده کنید. - استفاده از عملگرهای مناسب: از عملگرهای مناسب برای هر نوع داده استفاده کنید.
4. خطاهای اندیس (IndexError)
این خطا زمانی رخ میدهد که شما سعی میکنید به یک اندیس خارج از محدوده یک لیست، تاپل یا رشته دسترسی پیدا کنید.
مثال
my_list = [1, 2, 3]
# اشتباه
print(my_list[3]) # IndexError: list index out of range
# صحیح
print(my_list[2]) # چاپ عدد 3
راهحلها برای رفع IndexError
- بررسی طول لیست/تاپل/رشته: قبل از دسترسی به یک اندیس، طول لیست، تاپل یا رشته را بررسی کنید. میتوانید از تابع
len()برای این منظور استفاده کنید. - استفاده از اندیسهای معتبر: مطمئن شوید که اندیس مورد استفاده در محدوده مجاز قرار دارد.
- استفاده از حلقهها با دقت: هنگام استفاده از حلقهها برای پیمایش لیستها، به شرط توقف حلقه توجه کنید تا از دسترسی به اندیسهای خارج از محدوده جلوگیری شود.
5. خطاهای کلید (KeyError)
این خطا زمانی رخ میدهد که شما سعی میکنید به یک کلید غیر موجود در یک دیکشنری دسترسی پیدا کنید.
مثال
my_dict = {"name": "John", "age": 30}
# اشتباه
print(my_dict["city"]) # KeyError: 'city'
# صحیح
print(my_dict["name"]) # چاپ "John"
راهحلها برای رفع KeyError
- بررسی وجود کلید قبل از دسترسی: قبل از دسترسی به یک کلید، مطمئن شوید که آن کلید در دیکشنری وجود دارد. میتوانید از عملگر
inبرای این منظور استفاده کنید. - استفاده از متد
get(): از متدget()برای دسترسی به مقادیر دیکشنری استفاده کنید. این متد در صورت عدم وجود کلید، مقدار پیشفرضNoneرا برمیگرداند (یا میتوانید مقدار پیشفرض دلخواه خود را تعیین کنید). - بررسی املای کلیدها: املای کلیدها را به دقت بررسی کنید. حتی یک اشتباه تایپی کوچک میتواند منجر به
KeyErrorشود.
6. خطاهای فایل (FileNotFoundError)
این خطا زمانی رخ میدهد که شما سعی میکنید فایلی را باز کنید که وجود ندارد یا در مسیر مشخص شده یافت نمیشود.
مثال
# اشتباه
try:
with open("nonexistent_file.txt", "r") as f:
contents = f.read()
except FileNotFoundError:
print("فایل مورد نظر یافت نشد.")
راهحلها برای رفع FileNotFoundError
- بررسی وجود فایل: قبل از باز کردن فایل، مطمئن شوید که فایل در مسیر مشخص شده وجود دارد.
- بررسی مسیر فایل: مسیر فایل را به دقت بررسی کنید. اطمینان حاصل کنید که مسیر درست و کامل است.
- استفاده از مدیریت خطا (try-except): از بلوکهای
try-exceptبرای مدیریت این خطا استفاده کنید. در صورت بروز خطا، میتوانید یک پیام مناسب نمایش دهید یا اقدامات دیگری انجام دهید.
7. خطاهای وارد کردن ماژول (ImportError) و ModuleNotFoundError
این خطاها زمانی رخ میدهند که پایتون نتواند یک ماژول را وارد کند. ImportError یک خطای کلی است، در حالی که ModuleNotFoundError (معرفی شده در پایتون 3.6) خطای خاصتری است که به طور مشخص نشان میدهد ماژول مورد نظر یافت نشد.
علل بروز این خطاها
- عدم نصب ماژول: ماژول مورد نظر نصب نشده است.
- اشتباه در نام ماژول: نام ماژول به درستی نوشته نشده است.
- ماژول در مسیر جستجوی پایتون نیست: ماژول در مسیری قرار ندارد که پایتون بتواند آن را پیدا کند.
- تداخل نسخهها: ممکن است نسخه ماژول با نسخه پایتون سازگار نباشد.
مثال
# اشتباه
try:
import non_existent_module
except ModuleNotFoundError: #یا ImportError در نسخههای قدیمیتر
print("ماژول مورد نظر یافت نشد.")
راهحلها برای رفع ImportError و ModuleNotFoundError
- نصب ماژول: با استفاده از
pipماژول مورد نظر را نصب کنید.pip install module_name - بررسی املای نام ماژول: املای نام ماژول را به دقت بررسی کنید.
- اضافه کردن مسیر ماژول به
sys.path: اگر ماژول در یک مسیر غیر استاندارد قرار دارد، میتوانید مسیر آن را به لیستsys.pathاضافه کنید.import sys sys.path.append("/path/to/module") import module_name - بررسی تداخل نسخهها: از سازگاری نسخه ماژول با نسخه پایتون خود اطمینان حاصل کنید. در صورت نیاز، نسخه ماژول را بهروزرسانی یا دانگرید کنید.
- بررسی محیط مجازی (Virtual Environment): اگر از محیط مجازی استفاده میکنید، مطمئن شوید که ماژول در آن محیط نصب شده است.
8. خطاهای ویژگی (AttributeError)
این خطا زمانی رخ میدهد که شما سعی میکنید به یک ویژگی (attribute) یا متد غیر موجود در یک شیء (object) دسترسی پیدا کنید.
مثال
my_string = "hello"
# اشتباه
print(my_string.non_existent_attribute) # AttributeError: 'str' object has no attribute 'non_existent_attribute'
# صحیح
print(my_string.upper()) # چاپ "HELLO"
راهحلها برای رفع AttributeError
- بررسی مستندات کلاس/شیء: مستندات کلاس یا شیء مورد نظر را بررسی کنید تا ببینید چه ویژگیها و متدهایی در دسترس هستند.
- بررسی املای نام ویژگی/متد: املای نام ویژگی یا متد را به دقت بررسی کنید.
- توجه به نوع شیء: مطمئن شوید که شیء مورد نظر از نوع صحیح است.
- استفاده از ویژگیها/متدهای موجود: فقط از ویژگیها و متدهایی استفاده کنید که در کلاس یا شیء تعریف شدهاند.
9. خطاهای assertion (AssertionError)
این خطا زمانی رخ میدهد که یک دستور assert با یک عبارت نادرست مواجه شود. از دستور assert برای بررسی فرضیات در کد خود استفاده میشود.
مثال
x = 10
# اشتباه
assert x > 20, "x باید بزرگتر از 20 باشد." # AssertionError: x باید بزرگتر از 20 باشد.
# صحیح
assert x > 5, "x باید بزرگتر از 5 باشد."
راهحلها برای رفع AssertionError
- بررسی منطق کد: منطق کد خود را بررسی کنید تا ببینید چرا فرضیه مورد نظر نادرست است.
- اصلاح کد: کد خود را اصلاح کنید تا فرضیه مورد نظر درست شود.
- حذف دستور
assert(در صورت لزوم): اگر فرضیه مورد نظر دیگر معتبر نیست، میتوانید دستورassertرا حذف کنید. (البته این کار باید با احتیاط انجام شود و مطمئن شوید که حذفassertباعث بروز مشکلات دیگر نمیشود.) - توجه به پیام خطا: پیام خطای
AssertionErrorمعمولاً توضیح میدهد که چرا فرضیه مورد نظر نادرست است. به این پیام توجه کنید.
10. خطاهای ورودی/خروجی (IOError) و OSError
این خطاها مربوط به عملیات ورودی و خروجی، مانند خواندن و نوشتن فایلها، شبکهسازی و تعامل با سیستمعامل هستند. IOError یک خطای کلیتر است، در حالی که OSError خطاهای مربوط به سیستمعامل را پوشش میدهد.
علل بروز این خطاها
- عدم دسترسی به فایل/مسیر: برنامه دسترسی لازم برای خواندن/نوشتن فایل یا دسترسی به مسیر مورد نظر را ندارد.
- فایل/مسیر وجود ندارد: فایل یا مسیر مورد نظر وجود ندارد.
- مشکلات شبکهسازی: اتصال به شبکه قطع شده است یا سرور در دسترس نیست.
- فضای کافی وجود ندارد: فضای کافی برای نوشتن فایل وجود ندارد.
- خطاهای سختافزاری: ممکن است مشکلات سختافزاری باعث بروز این خطاها شوند.
مثال
# اشتباه
try:
with open("/path/to/file/without/permission.txt", "w") as f:
f.write("hello")
except PermissionError as e: # یا OSError در برخی موارد
print(f"خطا در نوشتن فایل: {e}")
راهحلها برای رفع IOError و OSError
- بررسی دسترسیها: اطمینان حاصل کنید که برنامه دسترسی لازم برای خواندن/نوشتن فایل یا دسترسی به مسیر مورد نظر را دارد.
- بررسی وجود فایل/مسیر: قبل از انجام عملیات ورودی/خروجی، مطمئن شوید که فایل یا مسیر مورد نظر وجود دارد.
- مدیریت خطا با
try-except: از بلوکهایtry-exceptبرای مدیریت این خطاها استفاده کنید. - بررسی فضای خالی: قبل از نوشتن فایل، مطمئن شوید که فضای کافی در دیسک وجود دارد.
- بررسی اتصالات شبکه: در صورت بروز مشکلات شبکهسازی، اتصال به شبکه را بررسی کنید و از در دسترس بودن سرور اطمینان حاصل کنید.
- بررسی سختافزار: در صورت مشکوک بودن به مشکلات سختافزاری، سختافزار را بررسی کنید.
نکات پایانی
این چیت شیت تنها به بررسی برخی از خطاهای رایج در پایتون پرداخت. برای یادگیری بیشتر، به مستندات رسمی پایتون و منابع آموزشی آنلاین مراجعه کنید. همچنین، استفاده از دیباگر (debugger) میتواند به شما در یافتن و رفع خطاها کمک زیادی کند. به یاد داشته باشید که صبر و پشتکار، کلید موفقیت در برنامهنویسی است.
کدنویسی سریع با هوش مصنوعی
برای یادگیری نحوه دیباگ و حل چالشهای پایتون با هوش مصنوعی، صفحه آموزش پایتون با ChatGPT را مشاهده کنید.