निम्नलिखित स्वयं टिप्पणी कोड पर विचार करें। मैं सरल
>>> from fractions import Fraction
>>> def Arch2Float(num):
#First Partition from Right so that the Feet and Unit always
#Remains aligned even if one of them is absent
ft,x,inch=num.rpartition("\'")
#Convert the inch to a real and frac part after stripping the
#inch (") identifier. Note it is assumed that the real and frac
#parts are delimited by '-'
real,x,frac=inch.strip("\"").rpartition("-")
#Now Convert every thing in terms of feet which can then be converted
#to float. Note to trap Error's like missing or invalid items, its better
#to convert each items seperately
result=0
try:
result = int(ft.strip("\'"))
except ValueError:
None
#Convert the real inch part as a fraction of feet
try:
result += Fraction(int(real),12)
except ValueError:
None
#Now finally convert the Fractional part using the fractions module and convert to feet
try:
result+=Fraction(frac)/12
except ValueError:
None
return float(result)
एसिड टेस्ट
>>> print Arch2Float('15-3/4"') # 15-3/4" (without ft)
1.3125
>>> print Arch2Float('12\' 6-3/4"') #12' 6-3/4"
12.5625
>>> print Arch2Float('12\'6-3/4"') #12'6-3/4" (without space)
12.5625
>>> print Arch2Float('3/4"') #3/4" (just the inch)
0.0625
>>> print Arch2Float('15\'') #15' (just ft)
15.0
>>> print Arch2Float('15') #15 (without any ascent considered as inch)
1.25
वास्तुकला के लिए फ्लोट से परिवर्तित में रखने के लिए आसान होगा के रूप में आप को पार्स
>>> def Float2Arch(num):
num=Fraction(num)
ft,inch=Fraction(num.numerator/num.denominator),Fraction(num.numerator%num.denominator)/num.denominator*12
real,frac=inch.numerator/inch.denominator,Fraction(inch.numerator%inch.denominator,inch.denominator)
return '{0}\' {1}-{2}"'.format(ft,real,frac)
एसिड के लिए दर्द लेने के लिए की जरूरत नहीं है की कोशिश की टेस्ट
>>> print Float2Arch(Arch2Float('12\' 6-3/4"'))
12' 6-3/4"
>>> print Float2Arch(Arch2Float('15-3/4"'))
1' 3-3/4"
>>> print Float2Arch(Arch2Float('12\'6-3/4"'))
12' 6-3/4"
>>> print Float2Arch(Arch2Float('3/4"'))
0' 0-3/4"
>>> print Float2Arch(Arch2Float('15\''))
15' 0-0"
>>> print Float2Arch(Arch2Float('15'))
1' 3-0"
>>>
नोट *** सबसे कम denominator (इंच) या उच्चतम प्रतिनिधित्व denominator (पैर) में फ्लोट प्रतिनिधित्व रखने के लिए यह महत्वपूर्ण है। मैंने इस मामले के चरणों में उच्चतम का चयन किया। आप इसे कम करने के लिए wan't यदि आप (यदि इस खूबसूरत है, लेकिन करता है नौकरी सुनिश्चित नहीं हैं) गोलाई अनुरोध पूरा करने से 12.
अपडेट यह गुणा कर सकते हैं
def Float2Arch(num):
num=Fraction(num)
ft,inch=Fraction(num.numerator/num.denominator),Fraction(num.numerator%num.denominator)/num.denominator*12
real,frac=inch.numerator/inch.denominator,Fraction(inch.numerator%inch.denominator,inch.denominator)
for i in xrange(1,17):
if Fraction(frac) < Fraction(1.0/16*i): break
frac=Fraction(1.0/16*i)
if frac>= 1:
real+=1
frac=0
return '{0}\' {1}-{2}"'.format(ft,real,frac)
बेशक एक तरह से होती है। लेकिन वे इकाइयों के साथ मूल्य हैं, इसलिए सीधे फ़्लोटिंग पॉइंट में कनवर्ट करने के लिए अंतर्निहित इकाई को परिभाषित करने की भी आवश्यकता होगी। आप परिशुद्धता भी खो सकते हैं। – Keith
इसके अलावा, Django सिर्फ एक वेब ढांचा है, इसलिए वास्तव में इसका कोई संबंध नहीं है। अब आप एक ऑब्जेक्ट बना सकते हैं, जब स्ट्रिंगिफाइड उस प्रारूप को उत्पन्न करता है। फिर आप किसी भी टेम्पलेट का उपयोग कर सकते हैं। – Keith
धन्यवाद कीथ ... मैंने Django भाग हटा दिया। – Clayton