কম্পিউটার

পাইথনে বিভাগ অপারেটর?


সাধারণত, একটি অভিব্যক্তির ডেটা প্রকার আর্গুমেন্টের প্রকারের উপর নির্ভর করে। এই নিয়মটি বেশিরভাগ অপারেটরে প্রয়োগ করা হয়:যেমন আমরা যখন দুটি পূর্ণসংখ্যা যোগ করি, ফলাফলটি একটি পূর্ণসংখ্যা হওয়া উচিত। যাইহোক, বিভাগের ক্ষেত্রে এটি ভালভাবে কাজ করে না কারণ দুটি ভিন্ন প্রত্যাশা রয়েছে। কখনও কখনও আমরা আশা করি যে বিভাজন সুনির্দিষ্ট ফ্লোটিং পয়েন্ট নম্বর তৈরি করবে এবং অন্য সময় আমরা একটি বৃত্তাকার-ডাউন পূর্ণসংখ্যা ফলাফল চাই৷

সাধারণভাবে, বিভাগ(/) এর পাইথন সংজ্ঞা শুধুমাত্র আর্গুমেন্টের উপর নির্ভর করে। উদাহরণস্বরূপ পাইথন 2.7-এ, 20/7 ভাগ করা 2 ছিল কারণ উভয় আর্গুমেন্ট যেখানে পূর্ণসংখ্যা। যাইহোক, 20./7 আউটপুট হিসাবে 2.857142857142857 তৈরি করবে কারণ আর্গুমেন্টগুলি ফ্লোটিং পয়েন্ট নম্বর ছিল।

'/'-এর উপরের সংজ্ঞাটি প্রায়শই অ্যাপ্লিকেশনগুলির জন্য সমস্যা সৃষ্টি করে যেখানে ডেটা প্রকারগুলি ব্যবহার করা হয়েছিল যা লেখক আশা করেননি৷

তাপমাত্রা সেলসিয়াস থেকে ফারেনহাইট রূপান্তর করার একটি সাধারণ প্রোগ্রাম বিবেচনা করুন ইনপুটের উপর নির্ভর করে দুটি ভিন্ন ফলাফল তৈরি করবে। যদি একজন ব্যবহারকারী পূর্ণসংখ্যা আর্গুমেন্ট (18) এবং অন্য একটি ফ্লোটিং পয়েন্ট আর্গুমেন্ট (18.0) প্রদান করে, তাহলে উত্তরগুলি সম্পূর্ণ ভিন্ন ছিল, যদিও সমস্ত ইনপুটগুলির সমান সংখ্যাসূচক মান ছিল৷

#Conversion of celcius to Fahrendheit in python 2.6
>>> print 18*9/5 + 32
64
>>> print 18.0*9/5 + 32
64.4
>>> 18 == 18.0
True

উপরে থেকে আমরা দেখতে পাচ্ছি, যখন আমরা 18.0 পাস করি, তখন আমরা সঠিক আউটপুট পাচ্ছি এবং যখন আমরা 18 পাস করি তখন আমরা ভুল আউটপুট পাচ্ছি। এই আচরণটি কারণ python 2.x-এ, "/" অপারেটর একটি ফ্লোর ডিভিশন হিসাবে কাজ করে যদি সমস্ত আর্গুমেন্ট পূর্ণসংখ্যা হয়। যাইহোক, যদি আর্গুমেন্টের একটি ফ্লোট মান হয় তাহলে “/” অপারেটর একটি ফ্লোট মান প্রদান করে।

একটি স্পষ্ট রূপান্তর ফাংশন (যেমন float(x)) এটি প্রতিরোধ করতে সাহায্য করতে পারে। তবে ধারণাটি হল, অপ্রত্যাশিত ডেটা টাইপের বিরল ক্ষেত্রে কভার করার জন্য রূপান্তরের ঘন বিশৃঙ্খলতা ছাড়াই পাইথন সহজ এবং বিক্ষিপ্ত ভাষা হতে পারে। পাইথন 2.2 সংস্করণ দিয়ে শুরু করে, কী প্রত্যাশিত ছিল তা স্পষ্ট করার জন্য একটি নতুন বিভাগ অপারেটর যুক্ত করা হয়েছিল। সাধারণ/অপারেটর ভবিষ্যতে, ফ্লোটিং-পয়েন্ট ফলাফল প্রদান করবে। একটি বিশেষ বিভাগ অপারেটর, //, রাউন্ড-ডাউন ফলাফল ফিরিয়ে দেবে।

>>> # Python 2.7 program to demonstrate the use of "//" for both integers and floating point number
>>> print 9//2
4
>>> print -9//2
-5
>>> print 9.0//2
4.0
>>> print -9.0//2
-5.0

পাইথন 3.x এ ডিভিশন অপারেশন

python 3.x-এ, উপরে উল্লিখিত ত্রুটিগুলি সরানো হয়েছে এবং '/' অপারেটর পূর্ণসংখ্যা এবং ফ্লোটিং পয়েন্ট আর্গুমেন্ট উভয়ের জন্য ফ্লোটিং পয়েন্ট বিভাজন করে৷

>>> #Conversion of celcius to Fahrendheit in python 3.x
>>> #Passing 18 (integer)
>>> print (18*9/5 + 32)
64.4
>>> #Passing 18.0(float)
>>> print(18.0*9/5 + 32)
64.4

এছাড়াও কোন পার্থক্য নেই যখন আমরা +ve বা –ve আর্গুমেন্ট পাস করি।

>>> print(9/2)
4.5
>>> print(-9/2)
-4.5
>>> print(9.0/2)
4.5
>>> print(-9.0/2)
-4.5

  1. পাইথনে টিপল তুলনা করুন

  2. পাইথনে Tuple গুন

  3. পাইথনে Tuple বিভাগ

  4. পাইথনে প্যাটার্ন কিভাবে প্রিন্ট করবেন?