সত্যবাদী এবং মিথ্যা কী? এটি সত্য ও মিথ্যা থেকে আলাদা কীভাবে?


118

আমি কেবল জানতে পেরেছিলাম অজগরে সত্যবাদী এবং মিথ্যা মান রয়েছে যা সাধারণ থেকে পৃথক Trueএবং False?

সত্য এবং মিথ্যা মানগুলি কি গভীরভাবে কেউ ব্যাখ্যা করতে পারেন?

আমি তাদের কোথায় ব্যবহার করব?

সত্যবাদী এবং Trueমূল্যবোধ এবং মিথ্যাFalseমূল্যবোধের মধ্যে পার্থক্য কী ?


20
তাহলে bool(value)ফলাফল True, তারপর valueহয় truthy
wnnmaw

4
এই শব্দগুলি আপনি নিজে আবিষ্কার করেছেন, তাই না? যাইহোক, দেখুন __nonzero__এবং__bool__
zvone

6
সত্যবাদী / মিথ্যা মানগুলি এমন পরিস্থিতিতে কেবল সুবিধার জন্য যেখানে আপনার কোনও ধরণের বাইনারি পরীক্ষা প্রয়োজন test এটি সহজ কোডের জন্য মঞ্জুরি দেয়, এবং বাগের জন্য কম সুযোগের সাথে সহজ কোডটি প্রায়শই পড়া সহজ হয়।
মার্ক

4
প্রোগ্রামিং ভাষাগুলির বুলিয়ান মান না থাকলে @ জোভোন ট্রুটি এবং ফালসি সাধারণত কোড গল্ফে ব্যবহৃত হয়।
মিল্কিওয়ে 90

6
@ জোভোন: প্রোগ্রামিং ভাষার সাথে তুলনা করার সময় 'ট্রুথি' এবং 'মিথ্যাবাদী' ব্যাপকভাবে ব্যবহৃত হয়, যেমন পিএইচপি বনাম পিইআরএল বনাম পাইথন বনাম জেএস। (পুরোপুরি কেবল কোড গল্ফ নয়)।
স্মি

উত্তর:


77

মন্তব্যগুলি বর্ণিত হিসাবে, এটি কেবলমাত্র সেই মানগুলিকে বোঝায় যা সত্য বা মিথ্যা হিসাবে মূল্যায়ন করা হয়।

উদাহরণস্বরূপ, কোনও তালিকা খালি নয় কিনা তা দেখার জন্য, এটির মতো পরীক্ষণের পরিবর্তে:

if len(my_list) != 0:
   print("Not empty!")

আপনি কেবল এটি করতে পারেন:

if my_list:
   print("Not empty!")

এটি কারণ বুলিয়ান মানের জন্য মূল্যায়ন করার সময় কিছু মান, যেমন খালি তালিকাগুলি ভুয়া হিসাবে বিবেচিত হয়। খালি খালি তালিকা সত্য।

একইভাবে পূর্ণসংখ্য 0 এর জন্য খালি স্ট্রিং "" এবং আরও, মিথ্যা, এবং শূন্য-শূন্য পূর্ণসংখ্যার জন্য, খালি খালি স্ট্রিং এবং ঠিক তেমন কিছু।

"সত্যবাদী" এবং "মিথ্যাবাদী" এর মতো পদগুলির ধারণাটি কেবলমাত্র সেই মানগুলিকে বোঝায় যা উপরোক্ত বর্ণিত ক্ষেত্রে যেমন সত্য হিসাবে বিবেচিত হয় এবং যেগুলি মিথ্যা বলে বিবেচিত হয়।

উদাহরণস্বরূপ, একটি খালি তালিকা ( []) কে "মিথ্যা" হিসাবে বিবেচনা করা হয়, এবং একটি খালি খালি তালিকা (উদাহরণস্বরূপ [1]) "সত্যবাদী" হিসাবে বিবেচিত হয়।

ডকুমেন্টেশনের এই বিভাগটিও দেখুন ।


বা এর অর্থ যদি আমার_লিস্টটি সত্য হয়?

আমি পাইথন শেল থেকে এই জিনিসগুলি চেষ্টা করে দেখতে এবং নিজের জন্য দেখার পরামর্শ দিই। ;) এর if my_listঅর্থ "যদি আমার_লিস্টটি খালি না থাকে", এবং এর if not my_listঅর্থ "যদি আমার_লিস্টটি খালি না থাকে"।
বি। একলস

1
ঠিক আছে আমার শেষ সামান্য বিভ্রান্তি আছে, আমি অনেক জায়গা দেখেছি যেমন if a:এই ধরণের শর্তগুলির অর্থ কী? এর অর্থ কি যদি সত্য হয় বা মানে যদি মিথ্যা হয়? বা এর অর্থ যদি সত্যবাদী হয় বা একটি মিথ্যাবাদী হয় তবে?

1
এর অর্থ "যদি সত্য হয়"। আমি আমার উত্তরে যেমন বর্ণনা করেছি এবং অন্যরা যেমন মন্তব্য এবং অন্যান্য উত্তরে বর্ণিত হয়েছে, বিভিন্ন জিনিস সত্য বা মিথ্যা বিবেচনা করা হয় তবে বাস্তবে তা হয় না। একটি খালি তালিকা, উদাহরণস্বরূপ, মিথ্যা হিসাবে বিবেচিত হয়। এজন্য if []:কখনই মৃত্যুদণ্ড কার্যকর করা হত না।
বি। একলস

এর অর্থ যদি ক: এর অর্থ যদি সত্য হয় (যখন একটি পূর্ণসংখ্যা বা স্ট্রিং হয়) এবং যদি এর: এর অর্থ মিথ্যা যদি খালি তালিকা হয় বা খালি ডিক বা মিথ্যা মান হয়!

199

নিম্নলিখিতগুলি বাদ দিয়ে সমস্ত মানকে "সত্যবাদী" হিসাবে বিবেচনা করা হয়, যা "মিথ্যা"

  • None
  • False
  • 0
  • 0.0
  • 0j
  • Decimal(0)
  • Fraction(0, 1)
  • [] - খালি list
  • {} - খালি dict
  • () - খালি tuple
  • '' - খালি str
  • b'' - খালি bytes
  • set() - খালি set
  • একটি খালি range, মতrange(0)
  • যার জন্য বস্তু
    • obj.__bool__() আয় False
    • obj.__len__() আয় 0

একটি "সত্যবাদী" মান ifবা whileবিবৃতি দ্বারা সম্পাদিত চেকটি পূরণ করবে । আমরা থেকে আলাদা করতে "truthy" এবং "falsy" ব্যবহার boolমান Trueএবং False

সত্য মান পরীক্ষা


5
দুর্দান্ত তালিকা, ধন্যবাদ। সম্পূর্ণ একাডেমিক প্রশ্ন, তবে আপনি কি জানেন যে ফাঁসির আদেশটি কী? ভেবেছিল যে আপনি এমন একটি বস্তু তৈরি করতে পারবেন যেখানে বুল সত্য এবং লেন ফিরে আসে 0 (বা বিপরীতে)।
হেডেন ক্রকার

16
@ হাইডেনক্রকার এটি __bool__প্রথমে খুঁজছে , তারপরে __len__। যদি উভয়ই সংজ্ঞায়িত না হয় তবে সমস্ত দৃষ্টান্তটিকে "সত্য" হিসাবে বিবেচনা করা হয়। object.__bool__পদ্ধতিটির জন্য
ডক্সে

3
পাইথনের সংস্করণে ৩.৫ এর আগে, মধ্যরাত ইউটিসির প্রতিনিধিত্বকারী সময়ের বিষয়গুলি মিথ্যা হিসাবে বিবেচিত হত। এই নিবন্ধটি সমস্যার একটি বাগ রিপোর্ট এবং চূড়ান্ত সমাধানের একটি ওভারভিউ দেয়।
জেসন ভি।

1
ডেটটাইম প্যাকেজের জন্য আকর্ষণীয়ভাবে, ডেটটাইম.মিন সত্যবাদী এবং টাইমডেল্টা (0) মিথ্যা।
ডেভিড কিংহর্ন

1
পছন্দ করুন সর্বনিম্ন তারিখের মানটি অন্য যে কোনও তারিখের মতো, এটি কোনওভাবেই শূন্যের মতো নয়। বিপরীতে, timedelta(0)শূন্য মত হয়। এটি যখন প্রকাশিত হয়েছিল যে মধ্যরাতের প্রতিনিধিত্বকারী সময়ের মানগুলি মিথ্যা ছিল, যা শেষ পর্যন্ত স্থির করা হয়েছিল: lwn.net/Articles/590299
প্যাট্রিক

5

সত্যবাদী মানগুলি বুলিয়ান প্রসঙ্গে ব্যবহৃত বস্তুগুলিকে বোঝায় এবং এতটা বুলিয়ান মান দেয় না যা সত্য বা মিথ্যা দেয়। এটিকে উদাহরণ হিসাবে গ্রহণ করুন:

>>> bool([])
False
>>> bool([1])
True
>>> bool('')
False
>>> bool('hello')
True

4

পাইথন bool()প্রকারটি প্রয়োগ করে সত্যতা নির্ধারণ করে , কোনটি ফিরে আসে Trueবা Falseযা ifবা এর মতো প্রকাশে ব্যবহৃত হয় while

এখানে একটি কাস্টম শ্রেণীর উদাহরণ রয়েছে Vector2dএবং এটি উদাহরণস্বরূপ ফিরে আসবে Falseযখন অন্যথায় দৈর্ঘ্য (কোনও ভেক্টরের দৈর্ঘ্য) 0 হয় True

import math
class Vector2d(object):
    def __init__(self, x, y):
        self.x = float(x)
        self.y = float(y)

    def __abs__(self):
        return math.hypot(self.x, self.y)

    def __bool__(self):
        return bool(abs(self))

a = Vector2d(0,0)
print(bool(a))        #False
b = Vector2d(10,0)    
print(bool(b))        #True

দ্রষ্টব্য: আমরা যদি সংজ্ঞা না দিয়ে থাকি তবে __bool__এটি সর্বদা সত্যই ফিরে আসত কারণ কোনও ব্যবহারকারী-সংজ্ঞায়িত শ্রেণীর উদাহরণগুলি ডিফল্টরূপে সত্য বলে বিবেচিত হয়।

বইটির উদাহরণ: "পাইথনে সাবলীল, স্পষ্ট, সংক্ষিপ্ত এবং কার্যকর প্রোগ্রামিং"


2

আপনার সত্য বা মিথ্যা মানগুলি কোথায় ব্যবহার করা উচিত? এগুলি সিনট্যাকটিক চিনি , যাতে আপনি সর্বদা এড়াতে পারেন তবে এগুলি ব্যবহার করা আপনার কোডটি আরও পঠনযোগ্য এবং আপনাকে আরও দক্ষ করে তুলতে পারে। তদতিরিক্ত, আপনি এগুলি বহু কোড উদাহরণে দেখতে পাবেন, অজগর হোক বা না হোক, কারণ এটি ভাল অনুশীলন হিসাবে বিবেচিত হয়।

অন্যান্য উত্তরে উল্লিখিত হিসাবে, আপনি পরীক্ষাগুলি এবং যখন লুপগুলি এগুলিতে ব্যবহার করতে পারেন। এখানে সঙ্গে মিলিত ডিফল্ট মান সঙ্গে পাইথন 3 অপর দুই উদাহরণ আছে or, sএকটি স্ট্রিং পরিবর্তনশীল হচ্ছে। আপনি একই ধরণের পরিস্থিতিতেও প্রসারিত করবেন।

সত্যবাদী ছাড়া

if len(s) > 0:
    print(s)
else:
    print('Default value')

সত্য সহ এটি আরও সংক্ষিপ্ত:

print(s or 'Default value')

পাইথন ৩.৮-তে আমরা অ্যাসাইনমেন্ট এক্সপ্রেশনটির সুবিধা নিতে পারি :=

সত্য ছাড়া

if len(s) == 0:
    s = 'Default value'
do_something(s)

সত্য সঙ্গে এটি খুব খাটো

s or (s := 'Default value')
do_something(s)

বা আরও ছোট,

do_something(s or (s := 'Default value'))

অ্যাসাইনমেন্ট এক্সপ্রেশন ছাড়া, কেউ করতে পারেন

s = s or 'Default value'
do_something(s)

তবে সংক্ষিপ্ত নয় কিছু লোক s =...লাইনটিকে অসন্তুষ্ট বলে মনে হয় কারণ এটি এর সাথে মিলে যায়

if len(s)>0:
    s = s # HERE is an extra useless assignment
else:
    s = "Default value"

তবুও আপনি যদি এটিকে স্বাচ্ছন্দ্য বোধ করেন তবে আপনি এই কোডিং স্টাইলটি মেনে চলতে পারেন।


-1
while 0:
    print("Inside the loop.", counter)
    counter -= 1
print("Outside the loop.", counter)

আপনি যদি এই লুপটি চালাতেন তবে দেখবেন যে 0: = ভুয়া থাকাকালীন:

0 টি মিথ্যা হিসাবে বিবেচিত হয়


-2

ফালসির অর্থ ফাঁকা তালিকা, টিপল জাতীয় কিছু খালি মূল্য বা কোনও কিছুই নেই as সত্যবাদী অর্থ: সত্যবাদী ব্যতীত

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.