ฉันจะแสดงจำนวนอนันต์ในไพ ธ อนได้อย่างไร ไม่ว่าคุณจะป้อนหมายเลขใดในโปรแกรมไม่ควรมีจำนวนมากกว่าการแสดงอินฟินิตี้นี้
ฉันจะแสดงจำนวนอนันต์ในไพ ธ อนได้อย่างไร ไม่ว่าคุณจะป้อนหมายเลขใดในโปรแกรมไม่ควรมีจำนวนมากกว่าการแสดงอินฟินิตี้นี้
คำตอบ:
ใน Python คุณสามารถ:
test = float("inf")
ใน Python 3.5 คุณสามารถทำสิ่งต่อไปนี้
import math
test = math.inf
แล้ว:
test > 1
test > 10000
test > x
จะเป็นจริงเสมอ นอกจากแน่นอนตามที่ระบุไว้ x ยังเป็นอนันต์หรือ "น่าน" ("ไม่ใช่ตัวเลข")
นอกจากนี้ (หลาม 2.x เท่านั้น) ในการเปรียบเทียบกับEllipsis, float(inf)เป็นเลสเบี้ยนเช่น:
float('inf') < Ellipsis
จะกลับมาจริง
Ellipsisซึ่งเปรียบเทียบได้มากกว่าทุกสิ่งรวมถึงอินฟินิตี้ float("inf") < Ellipsisส่งคืน True
math.inf < ...หรือfloat('inf') > Ellipsisพ่นTypeError: unorderable types: float() < ellipsis()อย่างน้อยสำหรับฉัน
ตั้งแต่ Python 3.5 คุณสามารถใช้math.inf:
>>> import math
>>> math.inf
inf
ดูเหมือนว่าไม่มีใครพูดถึงเรื่องลบอนันต์อย่างชัดเจนดังนั้นฉันคิดว่าฉันควรจะเพิ่ม
เพื่อบวกอนันต์ (เพียงเพื่อความสมบูรณ์):
math.inf
สำหรับอินฟินิตี้ลบ:
-math.inf
ฉันไม่รู้ว่าคุณกำลังทำอะไร แต่float("inf")ให้อินฟินิตี้ลอยซึ่งให้คุณมากกว่าจำนวนอื่น ๆ
มีอินฟินิตี้ในห้องสมุด NumPy from numpy import infคือ: -infอินฟินิตี้ที่จะได้รับในเชิงลบหนึ่งก็สามารถเขียน
อีกวิธีที่สะดวกกว่าคือการใช้Decimalคลาส:
from decimal import Decimal
pos_inf = Decimal('Infinity')
neg_inf = Decimal('-Infinity')
Decimal('Infinity') == float('inf')ผลตอบแทนTrueมันเหมือนกันมาก
float('inf') is float('inf')กลับมาFalseเหมือนกัน
float('inf') is float('inf')-> Falseเพียงแค่ถือได้ว่าพวกเขาเป็นวัตถุที่แตกต่างกับกรณีที่แตกต่างกัน แต่ไม่ว่าเนื้อหาภายในที่แตกต่างกัน - เป็นจริง @nemesisdesign แหลมถือหุ้นเพื่อfloat('int') == float('int') Trueนี่เป็นปัญหาเดียวกันกับการเปรียบเทียบวัตถุที่ไม่แน่นอนเช่น [1,2,3] คือ [1,2,3] และ [1,2,3] == [1,2,3] ซึ่งเรียงลำดับเท็จ and True .. ข้อมูลเพิ่มเติมดูได้ที่: stackoverflow.com/questions/2988017/…
ใน python2.x มีแฮ็คสกปรกที่ให้บริการตามวัตถุประสงค์นี้ (ไม่เคยใช้เว้นแต่จำเป็นจริงๆ):
None < any integer < any string
ดังนั้นการตรวจสอบi < ''ถือสำหรับจำนวนเต็มใดTrue ๆi
มันถูกคัดค้านอย่างสมเหตุสมผลใน python3 ตอนนี้การเปรียบเทียบดังกล่าวจบลงด้วย
TypeError: unorderable types: str() < int()
MIN_INFINITY = None; INFINITY = "inf"; MIN_INFINITY < x < INFINITY
นอกจากนี้ถ้าคุณใช้ SymPy คุณสามารถใช้ sympy.oo
>>> from sympy import oo
>>> oo + 1
oo
>>> oo - oo
nan
เป็นต้น
math.infมีประโยชน์ในฐานะที่เป็นค่าเริ่มต้นในปัญหาการปรับให้เหมาะสมเพราะมันทำงานได้อย่างถูกต้องกับขั้นต่ำเช่นmin(5, math.inf) == 5. ยกตัวอย่างเช่นในขั้นตอนวิธีการเส้นทางที่สั้นที่สุดคุณสามารถตั้งค่าระยะทางที่ไม่เป็นที่รู้จักmath.infโดยไม่จำเป็นต้องกรณีพิเศษหรือถือว่าขอบเขตบนNone9999999ในทำนองเดียวกันคุณสามารถใช้-math.infเป็นค่าเริ่มต้นสำหรับปัญหาการขยายใหญ่สุด