Yabançı
کاربر نیمهحرفهای
- ارسالها
- 255
- امتیاز
- 388
- نام مرکز سمپاد
- طلایه داران
- شهر
- لاچین
- رشته دانشگاه
- JLE
پاسخ : کلاس برنامه نویسی Python
احتمالا چنین چیزی در ادامه دارین:
که باعث ارور میشه دلیلش این هست که شما میخواید نتیجه تابع the_flying_circus رو به عنوان آرگومان ورودی به تابع print بدید در حالی که تابع the_flying_circus هیچ مقداری رو برنمیگردونه.
برای اینکه متوجه بشید به این تابع دقت کنید:
میتونید به صورت زیر تابع رو فراخوانی کنید و نتیجه رو در صفحه چاپ کنید:
یا میتونید همان تابع رو با فرم شما بنویسیم:
و به اینصورت فراخوانی کنید:
در حالت دوم تابع نتیجه رو به برنمیگردونه(به عبارت تخصصیتر این تابع null برمیگردونه)) و نتیجه رو مستقیما روی صفحه چاپش میکنه برای همین نیاز نیست دوباره از تابع print استفاده کنیم اما در حالت اول تابع نتیجه رو برمیگردونه و اگر بخوایم میتونیم چاپش کنیم یا محاسبهی دیگهای رو نتیجه انجام بدیم، امیدوارم فرق بین دو حالت رو متوجه شده باشید.
معمولا در نوشتن تابع ها سعی میشه دادهها بازگردونده بشه تا اینکه مستقیما چاپ بشه استفاده از توابع فراخوان سیستمی مانند print رو باید در قسمت اصلی برنامه نگه داریم، دلیل اینکار اینه که برای تغییرهای کوچک در خروجی نیاز به تغییر تابع نداشته باشیم، فرض کنید در مثالی که زدم بخوام نصف جمع دو عدد رو چاپ کنم در حالت اول و هنگام استفاده از return کافی هست قسمت فراخوانی رو به صورت زیر تغییر بدم:
اما اگر به فرم شما تابع رو نوشته باشم باید برم و تابع رو تغییر بدم، در برنامههای عادی معمولا تعداد تابعها اینقدر زیاد هست که تغییر یک تابع وقت زیادی رو میبره و همچنین ممکنه اشتباها هنگام اصلاح تابع، مشکلاتی در تابع به وجود بیاریم، ضمنا ممکن هست در یک پروژهی گروهی تابع رو ما ننوشته باشیم و اصلاح تابع خودش سخت و زمانبر باشه. پس تا حد امکان نتیجه تابع باید return بشه.
چند نکته دربارهی برنامهای که نوشتید :
۱ - همونطور که احتمالا میدونید تابعی که نوشتید همیشه مقدار true رو برمیگردونه:
در شرطی که نوشتید دو بار از نقیض استفاده کردید که در برنامهنویسی استفاده نمیشه چون دقیقا معادل شرط زیر هست:
برای شرط «اگر مخالف است» نوشتن یک نقیض کافی هست :
یا :
۲ - سعی کنید وقتی سوالی در برنامهنویسی میپرسید متن کامل برنامه یا اسکرین شات صفحه + متن ارور رو بدین تا بشه جواب داد، در سوالی که پرسیدید قسمت کد تابعتون رو گذاشتید در حالی که این قسمت مشکلی نداره و احتمالا قسمت فرخوانیش مشکل داره.
خوب این تعریف تابعتون هست چطور اجراش میکنین؟به نقل از Beyond the Sky :این کجاش غلطه؟
کد:def the_flying_circus(): if not 7!=7: print True elif 7==8: print False else: print False
احتمالا چنین چیزی در ادامه دارین:
کد:
print(the_flying_circus)
برای اینکه متوجه بشید به این تابع دقت کنید:
کد:
def sum(a,b):
return a+b
کد:
print(sum(1,5))
کد:
def sum(a,b):
print(a+b)
کد:
sum(1,5)
معمولا در نوشتن تابع ها سعی میشه دادهها بازگردونده بشه تا اینکه مستقیما چاپ بشه استفاده از توابع فراخوان سیستمی مانند print رو باید در قسمت اصلی برنامه نگه داریم، دلیل اینکار اینه که برای تغییرهای کوچک در خروجی نیاز به تغییر تابع نداشته باشیم، فرض کنید در مثالی که زدم بخوام نصف جمع دو عدد رو چاپ کنم در حالت اول و هنگام استفاده از return کافی هست قسمت فراخوانی رو به صورت زیر تغییر بدم:
کد:
print(sum(1,5)/2)
چند نکته دربارهی برنامهای که نوشتید :
۱ - همونطور که احتمالا میدونید تابعی که نوشتید همیشه مقدار true رو برمیگردونه:
کد:
not 7!=7
کد:
7==7
کد:
7!=7
کد:
not 7==7
۲ - سعی کنید وقتی سوالی در برنامهنویسی میپرسید متن کامل برنامه یا اسکرین شات صفحه + متن ارور رو بدین تا بشه جواب داد، در سوالی که پرسیدید قسمت کد تابعتون رو گذاشتید در حالی که این قسمت مشکلی نداره و احتمالا قسمت فرخوانیش مشکل داره.