คำถามติดแท็ก logical-operators

ตัวดำเนินการตรรกะเป็นสัญลักษณ์ที่ช่วยในการประเมินนิพจน์บูลีน สิ่งเหล่านี้พบได้ในทุกภาษาการเขียนโปรแกรมที่รองรับบูลีน ตัวอย่างทั่วไป ได้แก่ && (AND), || (หรือ), ! (NOT), == ([value] เท่ากับ), === ([value and type] เท่ากับ),> = (มากกว่าหรือเท่ากับ), <= (น้อยกว่าหรือเท่ากับ),> (มากกว่า กว่า) และ <(น้อยกว่า)

10
Python ที่เทียบเท่ากับ && (ตรรกะ - และ) ในคำสั่ง if
นี่คือรหัสของฉัน: def front_back(a, b): # +++your code here+++ if len(a) % 2 == 0 &amp;&amp; len(b) % 2 == 0: return a[:(len(a)/2)] + b[:(len(b)/2)] + a[(len(a)/2):] + b[(len(b)/2):] else: #todo! Not yet done. :P return ฉันได้รับข้อผิดพลาดในเงื่อนไขIF ผมทำอะไรผิดหรือเปล่า?

23
คุณจะรับตรรกะ xor ของสองตัวแปรใน Python ได้อย่างไร
คุณจะรับตรรกะ xorของตัวแปรสองตัวใน Python ได้อย่างไร ตัวอย่างเช่นฉันมีสองตัวแปรที่ฉันคาดว่าจะเป็นสตริง ฉันต้องการทดสอบว่ามีเพียงหนึ่งในนั้นที่มีค่า True (ไม่ใช่ None หรือสตริงว่าง): str1 = raw_input("Enter string one:") str2 = raw_input("Enter string two:") if logical_xor(str1, str2): print "ok" else: print "bad" ^ประกอบการน่าจะเป็นค่าที่เหมาะสมและไม่ได้กำหนดไว้ในวัตถุทั้งหมด: &gt;&gt;&gt; 1 ^ 1 0 &gt;&gt;&gt; 2 ^ 1 3 &gt;&gt;&gt; "abc" ^ "" Traceback (most recent call last): File "&lt;stdin&gt;", …

6
คือ || และ! ผู้ประกอบการเพียงพอที่จะทำให้ทุกการแสดงออกทางตรรกะที่เป็นไปได้?
ตัวอย่างการแสดงออกทางตรรกะ( a &amp;&amp; b ) (ทั้งaและbมีค่าบูลีน)สามารถเขียนได้!(!a || !b)เช่น นี่ไม่ได้หมายความว่า&amp;&amp;เป็นสิ่งที่ไม่จำเป็นหรือ? นี่หมายความว่านิพจน์เชิงตรรกะทั้งหมดสามารถทำได้โดยใช้||และ!?

11
ตัวดำเนินการ XOR แบบโลจิคัลใน C ++?
มีอะไรแบบนี้เหรอ? มันเป็นครั้งแรกที่ผมพบความจำเป็นในการปฏิบัติสำหรับมัน แต่ฉันไม่เห็นหนึ่งที่ระบุไว้ใน Stroustrup ฉันตั้งใจจะเขียน: // Detect when exactly one of A,B is equal to five. return (A==5) ^^ (B==5); แต่ไม่มี^^ผู้ประกอบการ ฉันสามารถใช้ bitwise ^ที่นี่และได้รับคำตอบที่ถูกต้อง (ไม่ว่าจะเป็นเครื่องจริงหรือเท็จ) ฉันไม่เคยผสม&amp;และ&amp;&amp;หรือ|และ||ดังนั้นฉันลังเลที่จะทำอย่างนั้นด้วยและ^^^ ฉันจะสะดวกสบายมากขึ้นการเขียนของตัวเองbool XOR(bool,bool)ฟังก์ชั่นแทน

5
ตัวดำเนินการเชิงตรรกะอย่างง่ายใน Bash
ฉันมีตัวแปรสองสามตัวและฉันต้องการตรวจสอบเงื่อนไขต่อไปนี้ (เขียนออกมาเป็นคำพูดจากนั้นฉันก็พยายามล้มเหลวในการทำสคริปต์ทุบตี): if varA EQUALS 1 AND ( varB EQUALS "t1" OR varB EQUALS "t2" ) then do something done. และในความพยายามที่ล้มเหลวของฉันฉันมาด้วย: if (($varA == 1)) &amp;&amp; ( (($varB == "t1")) || (($varC == "t2")) ); then scale=0.05 fi

3
โอเปอเรเตอร์บูลีน && และ ||
ตามคำนิยามภาษา R ความแตกต่างระหว่าง&amp;และ&amp;&amp;(ตามลําดับ|และ||) คือการที่อดีตถูก vectorized ในขณะที่หลังไม่ได้ ตามข้อความช่วยเหลือฉันอ่านความแตกต่างคล้ายกับความแตกต่างระหว่าง "และ" และ "AndAlso" (ตามลำดับ "หรือ" และ "OrElse") ... ความหมาย: นั่นไม่ใช่การประเมินทั้งหมดหากพวกเขาไม่จำเป็นต้องเป็น (เช่น A หรือ B หรือ C เป็นจริงเสมอถ้า A เป็นจริงดังนั้นหยุดประเมินถ้า A เป็นจริง) มีคนช่วยแสงที่นี่ได้ไหม นอกจากนี้ยังมี AndAlso และ OrElse ใน R หรือไม่



4
ความสำคัญของผู้ประกอบการลอจิก SQL: และและหรือ
ทั้งสองงบด้านล่างเทียบเท่ากันหรือไม่ SELECT [...] FROM [...] WHERE some_col in (1,2,3,4,5) AND some_other_expr และ SELECT [...] FROM [...] WHERE some_col in (1,2,3) or some_col in (4,5) AND some_other_expr มีตารางความจริงบางอย่างที่ฉันสามารถใช้ตรวจสอบสิ่งนี้ได้ไหม

13
เป็นการดีที่จะใช้ตัวดำเนินการ xor สำหรับการตรวจสอบบูลีนหรือไม่? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน10 เดือนที่ผ่านมา ปรับปรุงคำถามนี้ ผมเองชอบแต่เพียงผู้เดียวหรือ , ^ผู้ประกอบการเมื่อมันทำให้ความรู้สึกในบริบทของการตรวจสอบแบบบูลเพราะความกระชับของตน ฉันชอบเขียนมาก if (boolean1 ^ boolean2) { //do it } กว่า if((boolean1 &amp;&amp; !boolean2) || (boolean2 &amp;&amp; !boolean1)) { //do it } แต่บ่อยครั้งที่ฉันรู้สึกสับสนจากนักพัฒนา Java คนอื่น (ไม่ใช่เฉพาะมือใหม่) และบางครั้งก็แสดงความคิดเห็นว่าควรใช้สำหรับการทำงานระดับบิตได้อย่างไร ฉันอยากรู้วิธีปฏิบัติที่ดีที่สุดเกี่ยวกับการใช้งานของ^ผู้ให้บริการ

7
ตัวดำเนินการเชิงตรรกะที่ลัดวงจรได้รับคำสั่งหรือไม่? และลำดับการประเมินผล?
มาตรฐาน ANSI กำหนดให้ตัวดำเนินการเชิงตรรกะต้องทำการลัดวงจรใน C หรือ C ++ หรือไม่? ฉันสับสนเพราะฉันจำได้ว่าหนังสือ K&amp;R บอกว่ารหัสของคุณไม่ควรขึ้นอยู่กับการดำเนินการเหล่านี้เพราะไฟฟ้าลัดวงจรเพราะอาจไม่ได้ ใครช่วยกรุณาชี้ให้เห็นว่าในมาตรฐานมันกล่าวว่าตรรกะ ops จะลัดวงจรเสมอ? ฉันสนใจ C ++ เป็นส่วนใหญ่คำตอบสำหรับ C ก็ยอดเยี่ยมเช่นกัน ฉันยังจำการอ่าน (จำไม่ได้ว่าอยู่ที่ไหน) ลำดับการประเมินนั้นไม่ได้ถูกกำหนดอย่างเข้มงวดดังนั้นโค้ดของคุณไม่ควรขึ้นอยู่กับหรือฟังก์ชั่นภายในนิพจน์จะถูกดำเนินการตามลำดับเฉพาะ: ในตอนท้ายของคำสั่ง จะได้รับการเรียก แต่คอมไพเลอร์มีอิสระในการเลือกคำสั่งที่มีประสิทธิภาพที่สุด มาตรฐานระบุลำดับการประเมินผลของนิพจน์นี้หรือไม่ if( functionA() &amp;&amp; functionB() &amp;&amp; functionC() ) cout&lt;&lt;"Hello world";

9
มีเหตุผลจริงหรือไม่ที่ทำให้เกิดการ && และ || มากเกินไป อย่าลัดวงจร?
พฤติกรรมการลัดวงจรของผู้ปฏิบัติงาน&amp;&amp;และ||เป็นเครื่องมือที่ยอดเยี่ยมสำหรับโปรแกรมเมอร์ แต่ทำไมพวกเขาถึงสูญเสียพฤติกรรมนี้เมื่อทำงานหนักเกินไป? ฉันเข้าใจว่าตัวดำเนินการเป็นเพียงน้ำตาลเชิงซ้อนสำหรับฟังก์ชั่น แต่ผู้ปฏิบัติงานboolมีพฤติกรรมนี้ทำไมจึงต้อง จำกัด ประเภทเดียวนี้ มีเหตุผลทางเทคนิคที่อยู่เบื้องหลังสิ่งนี้หรือไม่?


8
ตัวดำเนินการเชิงตรรกะ, || หรือหรือ?
ฉันจำได้ว่าอ่านย้อนหลังเกี่ยวกับตัวดำเนินการเชิงตรรกะในกรณีของการORใช้งาน||นั้นดีกว่าor(หรือในทางกลับกัน) ฉันต้องใช้สิ่งนี้ในโปรเจ็กต์ของฉันเมื่อมันกลับมาหาฉัน แต่ฉันจำไม่ได้ว่ามีการแนะนำตัวดำเนินการใดหรือเป็นจริง ไหนดีกว่ากันและทำไม?

8
“ และ” และ“ หรือ” ทำงานกับค่าที่ไม่ใช่บูลีนอย่างไร
ฉันกำลังพยายามเรียนรู้ python และเจอโค้ดที่ดีและสั้น แต่ไม่สมเหตุสมผลเลย บริบทคือ: def fn(*args): return len(args) and max(args)-min(args) ฉันเข้าใจว่ามันทำอะไร แต่ทำไม python ถึงทำเช่นนี้ - คือส่งคืนค่าแทนที่จะเป็น True / False 10 and 7-2 ผลตอบแทน 5. ในทำนองเดียวกันการเปลี่ยนและเป็นหรือจะส่งผลให้ฟังก์ชันการทำงานเปลี่ยนไป ดังนั้น 10 or 7 - 2 จะกลับมา 10. นี่เป็นสไตล์ที่ถูกต้อง / เชื่อถือได้หรือมี gotchas เกี่ยวกับเรื่องนี้หรือไม่?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.