পাইথনে "সত্য" এর অর্থ কী?


91
def play_game(word_list):
    hand = deal_hand(HAND_SIZE) # random init
    while True:
        cmd = raw_input('Enter n to deal a new hand, r to replay the last hand, or e to end game: ')
        if cmd == 'n':
            hand = deal_hand(HAND_SIZE)
            play_hand(hand.copy(), word_list)
            print
        elif cmd == 'r':
            play_hand(hand.copy(), word_list)
            print
        elif cmd == 'e':
            break
        else:
            print "Invalid command."

সত্য কি?

আমি 'যখন সত্য' বলছি শর্টহ্যান্ড হিসাবে গণ্য, তবে কিসের জন্য? চলক 'হাত' একটি মান নির্ধারিত করা হচ্ছে? এবং যদি ভেরিয়েবল 'হাত' একটি মান নির্ধারিত না হয়?


4
সত্য, এটি একটি উপনামের 1 জন্য 1 ধরণের সম্পর্কিত প্রশ্ন জিজ্ঞাসা করা একটি ধরণের উত্তর এখানে পাওয়া যাবে stackoverflow.com/questions/885908/…
কোপাস

17
@ কোপাস, এর Trueকোনও নাম নয় 1। যদিও অনেক ভাষায় 1বুলিয়ান প্রসঙ্গে সত্যের মূল্যায়ন করে।
অ্যাডামসে

4
অ্যাডামস: পাইথনের কয়েকটি সংস্করণে Trueএকটি নাম ছিল 1, না? যদিও হ্যাঁ, পাইথনের সর্বশেষতম সংস্করণগুলিতে একটি আসল বুলিয়ান টাইপ রয়েছে।
কেন

4
@ অ্যাডামস, @ কেন: পাইথন ২.৩-এ নতুন কী থেকে উদ্ধৃতি দিয়েছিলেন - পিইপি ২৮৫ : " পাইথন ২.৩ এ একটি বুলিয়ান টাইপ যুক্ত করা হয়েছিল। __builtin__মডিউলে দুটি নতুন কনস্ট্যান্ট যুক্ত করা হয়েছিল , ট্রু ও ফ্যালস। -পাইথন ২.২.১-এ, তবে ২.২.১ সংস্করণগুলি কেবল 1 এবং 0 এর পূর্ণসংখ্যার মানগুলিতে সেট করা থাকে এবং এটি কোনও আলাদা ধরণের নয়।) "।
ক্রিশ্চিয়ান সিউপিতু

@ অ্যাডামসে অজগরটিতে এটি নয়, তবে এটি বেশ কয়েকটি ভাষায় রয়েছে। আমি এটিকে আরও সাধারণ প্রশ্ন হিসাবে বিবেচনা করেছি। একজন নবজাতকের সাথে কথা বলার সাথে সাথে বাবা বলেছিলেন যে সে "ট্রু ইজ সাজ্ট অফ অ্যালাম অফ 1" পুরোপুরি সঠিক। আমি পাইথন ট্রুতে একমত হয়েছি 1 এর জন্য একটি উপন্যাস নয় I আমি বলিনি এটি ছিল।
কোপাস

উত্তর:


108

while Trueমানে চিরকালের জন্য লুপ। whileবিবৃতি একটি অভিব্যক্তি নেয় এবং লুপ শরীর executes যখন (বুলিয়ান) "সত্য" এ অভিব্যক্তি মূল্যায়ন করে। Trueসর্বদা "সত্য" বুলিয়ান মূল্যায়ন করে এবং এভাবে লুপ বডি অনির্দিষ্টকালের জন্য কার্যকর করে। এটি একটি প্রতিমা যা আপনি অবশেষে অভ্যস্ত হয়ে যাবেন! আপনার মুখোমুখি হতে পারে বেশিরভাগ ভাষাগুলির সমতুল্য প্রবাদ রয়েছে।

নোট করুন যে বেশিরভাগ ভাষায় সাধারণত লুপটি ভেঙে ফেলার জন্য কিছু ব্যবস্থা থাকে। পাইথনের ক্ষেত্রে এটি আপনার প্রশ্নের নমুনার ক্ষেত্রে breakবিবৃতি cmd == 'e'


9
স্পষ্টতার স্বার্থে আমি বিশ্বাস করি আপনি বেশিরভাগ ভাষায় (সত্য == সত্য) করতে পারবেন। এটি কোনও নতুন প্রোগ্রামারকে এর পিছনে যুক্তিটি আরও ভালভাবে বুঝতে সাহায্য করতে পারে।
ক্রিস

9
ক্রিস, while True==Trueকুরুচিপূর্ণ। এটি while 'apples'!='oranges':) হিসাবে কুৎসিত :)
ধীরোসর

34
আমার একজন শিক্ষক যেমন উল্লেখ করেছেন: আপনি যদি true==trueউন্নতি বলে মনে করেন তবে আপনি কোথায় থামবেন? (true==true)==trueআরও ভাল হবে না ?
কেন

10
@ ক্রিস, অবশেষে একটি সচেতন হওয়া উচিত যে একটি যুক্তিযুক্ত অভিব্যক্তির পরিবর্তে একটি বুলিয়ান মান বা পরিবর্তনশীল ব্যবহার করা যেতে পারে এবং "শেষ পর্যন্ত" যত তাড়াতাড়ি সম্ভব হওয়া উচিত।
মার্ক মুক্তিদান

6
@ মার্ক অবশেষে একজনকে সচেতন হওয়া উচিত যে সময়ে সময়ে নতুন প্রোগ্রামারকে বুলিয়ান যুক্তি এবং এর মতো বোঝার জন্য কিছুটা অতিরিক্ত সহায়তা লাগে। আমি যা করার চেষ্টা করছিলাম তা তাকে বুঝতে এটি সহায়তা করেছিল।
ক্রিস

53

আমার প্রশ্ন: সত্য কি?

যখন Trueহয় True

শর্তসাপেক্ষ প্রকাশটি যতক্ষণ মূল্যায়ন করবে ততক্ষণ লুপটি চলবে True

যেহেতু Trueসর্বদা এটির মূল্যায়ন হয় True, লুপটি অনির্দিষ্টকালের জন্য চলবে, যতক্ষণ না লুপ returnএর মধ্যে কিছু থাকে না break


4
এটি অজগর। কোনও বন্ধনীযুক্ত এক্সপ্রেশন নেই; পি
মাইক অ্যাক্সিয়াক

ওহ, ভাল পয়েন্ট। পাইথনে ভাবতে অভ্যস্ত নই। যদিও আমি মনে করি আপনি চাইলে আপনি চারপাশে
পেরেন

10

আমার প্রশ্ন: সত্য কি?

যদিও বিবৃতিটির () এর ভিতরে থাকা সমস্ত কিছুই বুলিয়ান হিসাবে মূল্যায়ন করা হচ্ছে। মানে এটি সত্য বা মিথ্যাতে রূপান্তরিত হয়।

বিবৃতিতে বিবেচনা করুন while(6 > 5)

এটি প্রথমে 6 > 5যা প্রকাশ করে তা মূল্যায়ন করেtrue বলার মত একইwhile(true)

FALSE, 0, এম্প্রিট্রি স্ট্রিং "", নাল, বা অপরিজ্ঞাত নয় এমন যে কোনও কিছুই সত্য হিসাবে মূল্যায়ন করা হতে পারে।

আমি যখন প্রথম প্রোগ্রামিং শুরু করি তখন আমি যেমন কাজগুলি if(foo == true)করতাম, তখন বুঝতে পারিনি যে কার্যত একই জিনিস wasif(foo)

সুতরাং যখন আপনি বলেন while(true) এর মত বলছেwhile(true == true)

সুতরাং আপনার প্রশ্নের উত্তর দেওয়ার জন্য: সত্য সত্য হলেও।


10

যখন True সত্য - সর্বদা। এটি একটি অসীম লুপ

Trueএকটি বিশেষ ধরণের ধ্রুবক মান বোঝাতে ভাষার কোনও কীওয়ার্ড এবং 'গাণিতিক ধারণা' যা সত্য 'এর মধ্যে এখানে গুরুত্বপূর্ণ পার্থক্যটি নোট করুন ।


প্রযুক্তিগতভাবে বলতে গেলে, আপনি ভুল বলছেন। কনস্ট্রাক্টটির অর্থ "সত্য সত্য মিথ্যা নয়"। আপনি while(5)সিটিতে লিখলে পার্থক্যটি দেখতে পাবেন , যেখানে কোনও যথাযথ বুলিয়ান নেই। এর অর্থ নয় while(5==1), এর অর্থ while(5!=0)
অন্ধ

4
আমি মনে করি 'অনির্দিষ্টকালের লুপ' বলা আরও উপযুক্ত; অনুমানটি অবশ্যই হওয়া উচিত যে লুপটি বিরতিতে বাধা পেতে পারে বা কোনও সময়ে ফিরে আসবে। সত্যই 'অসীম' লুপগুলি প্রোগ্রামার ত্রুটি; 'অনির্দিষ্ট সময়গুলি' ডিজাইন দ্বারা তৈরি করা হয়।
Dagg Nabbit

4
@ ব্লিন্ডি: স্বয়ংক্রিয় কাস্টিংয়ের সাথে দুর্বল-টাইপযুক্ত ভাষায়, আপনি বলতে পারেন x 'y' এর সাথে মূল্যায়ন করে ... এটি 5 এর সাথে কঠোরভাবে 0 এর সমান হয় না, এটি 5 টি সত্যের সাথে আলগাভাবে সমান হয়।
Dagg Nabbit

@ ব্লিন্ডি, while(5)সি এর অর্থ 5হ'ল সত্য, যখন এটির trueবা 0এটি সম্পূর্ণ ভিন্ন কিছু। 5সর্বদা সত্য। সাধারণভাবে, যখন ভাষাগুলির কোনও কীওয়ার্ড থাকে true, তবে এটি একটি ধ্রুবক যা সত্য, তবে একমাত্র ধ্রুবক এটি সত্য নয়। একইভাবে falseঅগত্যা একমাত্র মানটিই মিথ্যা is
ক্রিস ডড

4

এই প্রসঙ্গে, আমি মনে করি এটি হিসাবে ব্যাখ্যা করা যেতে পারে

do
...
while cmd  != 'e' 

3

Trueসর্বদা হয় True, তাই while Trueচিরকালের জন্য লুপ হবে।

whileশব্দ একটি অভিব্যক্তি লাগে, এবং loops যখন অভিব্যক্তি সত্য।Trueসর্বদা সত্য যে একটি অভিব্যক্তি।

সম্ভবত একটি স্পষ্ট করার উদাহরণ হিসাবে, নিম্নলিখিত বিবেচনা করুন:

a = 1
result = a == 1

এখানে, a == 1ফিরে আসবে True, এবং তাই রাখা Trueহবে result। অতএব,

a = 1
while a == 1:
  ...

সমান:

while True:
  ...

আপনি যদি লুপের aভিতরে মান পরিবর্তন না করেন তবেwhile


4
Trueসর্বদা হয় না True, যেমন True = False। ;-)
jathanism

4
@ জ্যাথানিজম- গণনা শেষের দিকে সত্য truth
ধীরোসর

3

আনুষ্ঠানিকভাবে, Trueএকটি পাইথন বিল্ট-ইন ধ্রুবক এর bool, প্রকার।

আপনি বুলিয়ান অপারেশনগুলি বুল টাইপগুলিতে ব্যবহার করতে পারেন (উদাহরণস্বরূপ ইন্টারেক্টিভ পাইথন প্রম্পটে) এবং সংখ্যাগুলিকে বুলের ধরণে রূপান্তর করতে পারেন :

>>> print not True
False
>>> print not False
True
>>> print True or False
True
>>> print True and False
False
>>> a=bool(9)
>>> print a
True
>>> b=bool(0)
>>> print b
False
>>> b=bool(0.000000000000000000000000000000000001)
>>> print b
True

আপনি যা দেখেন এবং পাইথন সংকলকটি যা দেখায় তার সাথে সেখানে "গ্যাচা" রয়েছে:

>>> n=0
>>> print bool(n)
False
>>> n='0'
>>> print bool(n)
True
>>> n=0.0
>>> print bool(n)
False
>>> n="0.0"
>>> print bool(n)
True

পাইথন কীভাবে অভ্যন্তরীণভাবে বুলের ধরণগুলি সংরক্ষণ করে তার ইঙ্গিত হিসাবে, আপনি বুলের ধরণগুলি পূর্ণসংখ্যায় ফেলে দিতে পারেন এবং ট্রুটি 1 এবং ভুয়া 0 হিসাবে প্রকাশিত হবে:

>>> print True+0
1
>>> print True+1
2
>>> print False+0
0
>>> print False+1
1

আসলে পাইথন boolটাইপ পাইথনের ধরণের একটি উপশ্রেণী int:

>>> type(True)
<type 'bool'>
>>> isinstance(True, int)
True

আপনার প্রশ্নের আরও গুরুত্বপূর্ণ অংশটি হ'ল "কী while True ?" 'সত্য কী', এবং একটি গুরুত্বপূর্ণ তাত্পর্য: মিথ্যা কী?

প্রথমত, যে ভাষাটি আপনি শিখছেন তার জন্য ভাষা কী 'সত্যবাদী' এবং 'মিথ্যা' বলে বিবেচনা করে তা শিখুন। পাইথন সত্যকে পার্ল সত্যের চেয়ে কিছুটা আলাদা বিবেচনা করে । অন্যান্য ভাষায় সত্য / মিথ্যা সম্পর্কে কিছুটা আলাদা ধারণা রয়েছে। আপনার ভাষা বিভিন্ন অপারেশনের জন্য সত্য এবং মিথ্যা বলে বিবেচনা করে এবং পরে অনেক মাথাব্যথা এড়ানোর জন্য জেনে রাখুন!

অনেকগুলি অ্যালগরিদম রয়েছে যেখানে আপনি যা সন্ধান করছেন তা না পাওয়া পর্যন্ত আপনি কিছু প্রক্রিয়া করতে চান। অতএব অসীম লুপ বা অনির্দিষ্ট লুপ। এই ভাষার জন্য প্রতিটি ভাষার নিজস্ব প্রতিমা রয়েছে। এখানে সাধারণ সি অসীম লুপ রয়েছে যা পার্লের জন্যও কাজ করে:

for(;;) { /* loop until break */ }

/* or */

while (1) {
   return if (function(arg) > 3);
}

while True:ফর্ম গোষ্ঠীর বাইরে ভঙ্গ কিছু পথ সঙ্গে অনির্দিষ্ট loops জন্য পাইথন খুবই সাধারণ বিষয়। কীভাবে আপনি লুপগুলি ভাঙেন তা বোঝার জন্য পাইথন ফ্লো কন্ট্রোল শিখুন while True। বেশিরভাগ ভাষার মতো নয়, উদাহরণস্বরূপ, পাইথনের elseলুপে একটি ধারা থাকতে পারে । শেষ লিঙ্কে একটি উদাহরণ আছে।


1

একটি whileলুপ একটি শর্তযুক্ত যুক্তি গ্রহণ করে (যার অর্থ সাধারণত যা সত্য বা মিথ্যা, বা এরূপ ব্যাখ্যা করা যায়) এবং শর্তটি ফলনের সময় কেবল কার্যকর হয় True

হিসাবে হিসাবে while True? ঠিক আছে, সহজতম শর্তসাপেক্ষটি Trueনিজেই! সুতরাং এটি একটি অসীম লুপ, সাধারণত একটি গেমের জন্য বেশ লুপিংয়ের প্রয়োজন। (আমার দৃষ্টিকোণ থেকে আরও সাধারণ, যদিও, কিছু ধরণের "সম্পন্ন" ভেরিয়েবলকে মিথ্যা হিসাবে সেট করা এবং তারপরে গেমটি শেষ করার জন্য এটি সত্য করে তুলেছে এবং লুপটি দেখতে আরও কিছুটা while not done:বা অন্যরকম দেখাবে ))




0

whileশর্তটি মিথ্যা না হওয়া পর্যন্ত লুপগুলি অবিরত থাকে। উদাহরণস্বরূপ (সিউডোকোড):

i = 0
while i < 10
  i++

লুপের প্রতিটি পুনরাবৃত্তির সাথে i, এটি 10 ​​না হওয়া পর্যন্ত 1 দ্বারা বাড়ানো হবে that বিন্দুতে শর্তটিi < 10 আর সত্য নয় এবং লুপটি সম্পূর্ণ হবে।

যেহেতু শর্তটি while Trueস্পষ্টভাবে এবং সর্বদা হ'ল true, লুপটি কখনই শেষ হবে না (যতক্ষণ না এটি অন্য কোনও উপায়ে ভেঙে না ফেলা হয়, সাধারণত breakলুপের দেহের অভ্যন্তরের মতো কোনও কাঠামো দ্বারা)।


0

এর Trueচেয়ে দ্রুত কোনও মূল্যায়ন হয় না True। সুতরাং, যদি আপনি ইত্যাদির while Trueপরিবর্তে ব্যবহার করেন তবে এটি ভাল iswhile 1==1


0
while True:
    ...

মানে অসীম লুপ।

যদিও বিবৃতিটি প্রায়শই সীমাবদ্ধ লুপ ব্যবহার করা হয়। তবে ধ্রুবক 'ট্রু' ব্যবহার করে লুপটি নিয়ন্ত্রণের প্রয়োজন ছাড়াই কিছুক্ষণের বিবৃতিটির পুনরাবৃত্তি নিশ্চিত করা হয় (উদাহরণস্বরূপ পুনরাবৃত্তির ভিতরে বুলিয়ান মান নির্ধারণ করা), যদি না আপনি এটি ভাঙতে চান।

আসলে

True == (1 == 1)

0

সত্যিকার অর্থে অসীম লুপটি থাকলে এটি সাধারণত দীর্ঘ প্রক্রিয়া দ্বারা ব্যবহৃত হয়। তুমি বদলাতে পারো

while True:

সঙ্গে

while 1:

0

যদিও এই উত্তরগুলির বেশিরভাগই ভিন্ন ভিন্ন ডিগ্রিতে সঠিক, তবে এর মধ্যে কোনওটিই আমি চাই না তেমন সুসংহত।

সহজ কথায় while True:বলতে গেলে, লুপ চালানোর একমাত্র উপায় যা আপনি স্পষ্টভাবে breakবা এটির ব্যবহার না করে অবধি চলতে থাকবে return। যেহেতু সত্য সর্বদা সত্যের কাছে মূল্যায়ন করবে, আপনি যখন এটি চান তখন আপনাকে লুপটি শেষ করতে বাধ্য করতে হবে।

while True:
    # do stuff

    if some_condition:
        break

    # do more stuff - code here WILL NOT execute when `if some_condition:` evaluates to True

সাধারণত শর্তটি মিথ্যা না হওয়া পর্যন্ত একটি লুপ চলার জন্য সেট করা থাকে বা এটি পূর্বনির্ধারিত শেষের বিন্দুতে পৌঁছায়:

do_next = True

while do_next:

    # do stuff

    if some_condition:
        do_next = False

    # do more stuff - code here WILL execute even when `if some_condition:` evaluates to True

এই দুটি কোড খণ্ড কার্যকরভাবে একই কাজ করে

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

while Trueবিন্যাস আরো pythonic যেহেতু আপনি জানেন যে breakযে সঠিক সময়ে লুপ ভঙ্গ হয়, যেহেতু do_next = Falseপরবর্তী মূল্যায়ন সামনে আরো স্টাফ কাজ করতে পারে do_next


-4

বিপরীত উপস্থাপন না করা পর্যন্ত যেকোনো কিছুই সত্য হিসাবে নেওয়া যেতে পারে। দ্বৈততা এইভাবে কাজ করে। এটি এমন একটি উপায়ে যা বিরোধীদের তুলনা করা হয়। কালোটি সাদা হওয়া পর্যন্ত সত্য হতে পারে যেদিকে এটি মিথ্যা। এটি সাদা হওয়া অবধি সাদা হওয়া পর্যন্ত কালোও মিথ্যা হতে পারে। এটি একটি রাষ্ট্র নয় বরং বিপরীত রাষ্ট্রগুলির তুলনা। উভয়ই যদি সত্য হয় তবে অন্যটিও ভুল। সত্য মানে এই নয় যে এটি সঠিক বা স্বীকৃত। এটি এমন একটি রাষ্ট্র যেখানে সর্বদা বিপরীত থাকে। এটা দ্বৈততা।

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