मूल रूप से, मुझे प्रोग्राम के लिए जो कुछ चाहिए, वह सरल अंश कैलकुलेटर (अतिरिक्त, घटाव, गुणा और विभाजन) के लिए कार्य करना है। इनपुट के एकल लाइन, उदाहरण के लिए:
-Input: 1/7 + 3/5
आउटपुट: 26/35
एक अंश कैलक्यूलेटर कोड बनाने के लिए टिप्स अधिक अनुकूलित (तेज और कम मेमोरी का उपयोग करके)
मेरे प्रारंभिक कोड:
import sys
def euclid(numA, numB):
while numB != 0:
numRem = numA % numB
numA = numB
numB = numRem
return numA
for wejscie in sys.stdin:
wyjscie = wejscie.split(' ')
a, b = [int(x) for x in wyjscie[0].split("/")]
c, d = [int(x) for x in wyjscie[2].split("/")]
if wyjscie[1] == '+':
licz = a * d + b * c
mian= b * d
nwd = euclid(licz, mian)
konA = licz/nwd
konB = mian/nwd
wynik = str(konA) + '/' + str(konB)
print(wynik)
elif wyjscie[1] == '-':
licz= a * d - b * c
mian= b * d
nwd = euclid(licz, mian)
konA = licz/nwd
konB = mian/nwd
wynik = str(konA) + '/' + str(konB)
print(wynik)
elif wyjscie[1] == '*':
licz= a * c
mian= b * d
nwd = euclid(licz, mian)
konA = licz/nwd
konB = mian/nwd
wynik = str(konA) + '/' + str(konB)
print(wynik)
else:
licz= a * d
mian= b * c
nwd = euclid(licz, mian)
konA = licz/nwd
konB = mian/nwd
wynik = str(konA) + '/' + str(konB)
print(wynik)
कौन सा मैं करने के लिए कम:
import sys
def euclid(numA, numB):
while numB != 0:
numRem = numA % numB
numA = numB
numB = numRem
return numA
for wejscie in sys.stdin:
wyjscie = wejscie.split(' ')
a, b = [int(x) for x in wyjscie[0].split("/")]
c, d = [int(x) for x in wyjscie[2].split("/")]
if wyjscie[1] == '+':
print("/".join([str((a * d + b * c)/euclid(a * d + b * c, b * d)),str((b * d)/euclid(a * d + b * c, b * d))]))
elif wyjscie[1] == '-':
print("/".join([str((a * d - b * c)/euclid(a * d - b * c, b * d)),str((b * d)/euclid(a * d - b * c, b * d))]))
elif wyjscie[1] == '*':
print("/".join([str((a * c)/euclid(a * c, b * d)),str((b * d)/euclid(a * c, b * d))]))
else:
print("/".join([str((a * d)/euclid(a * d, b * c)),str((b * c)/euclid(a * d, b * c))]))
इस भविष्य में सुधार करने के तरीके पर कोई सलाह स्वागत है।
संपादित करें: एक और चीज जिसे मैं उल्लेख करना भूल गया - कोड sys के अलावा किसी भी पुस्तकालय का उपयोग नहीं कर सकता है।
क्या यह होमवर्क है? –
हां, यह है। कृपया ध्यान दें कि मुझे एक पूर्ण समाधान की आवश्यकता नहीं है। जो मैं खोज रहा हूं वह सामान्य युक्तियां हैं जिन्हें इस मामले में लागू किया जा सकता है। –
'euclid (a * d, b * c)' कॉल करके कई बार आपने इसे संस्करण से धीमा कर दिया है जो परिणाम को एक चर –