संख्या के शेष भाग को ज्ञात कीजिए


155

मैं पायथन में संख्या के शेष भाग को खोजने के बारे में कैसे जा सकता हूं?

उदाहरण के लिए:
यदि संख्या 26 है और विभाजित संख्या 7 है, तो शेष भाग 5. है
(चूंकि 7 + 7 + 7 = 21 और 26-21 = 5।)


8
ऐसा लगता है कि वह पहले से ही :)
क्रिस डिक्सन

मैं modulo ऑपरेटर
yurib

11
मैं यह नहीं देखता कि उसने होमवर्क के बारे में कुछ भी उल्लेख किया है
p1l0t

जवाबों:


205

आप modulo ऑपरेटर की तलाश कर रहे हैं:

a % b

उदाहरण के लिए:

26 % 7

बेशक, शायद वे चाहते थे कि आप इसे खुद लागू करें, जो बहुत मुश्किल भी नहीं होगा।


13
ध्यान दें कि मोडुलो ऑपरेटर हमेशा एक सकारात्मक संख्या देता है, इसलिए नकारात्मक संख्याओं के लिए यह नहीं हो सकता है जब आप शेष के बारे में बात कर रहे हों -10 % 3 == 2:। हालांकि, a/b*b + a%b == aअभी भी सही है, क्योंकि अजगर हमेशा कुछ अन्य भाषाओं के विपरीत -इनफिनिटी की ओर गोल होता है, जो 0 की ओर गोल होता है, लेकिन -1 पर वापस आ जाता है।
12

6
ऐसा इसलिए है क्योंकि पायथन %एक सच्चा मापांक करता है, जो मानों को श्रेणी में [0, divisor)रखता है और फ्लोर्ड डिवीजन (नकारात्मक अनंतता की ओर) के साथ अच्छी तरह से जुड़ता है। सी भाषाएं %शेष संचालन के लिए ऑपरेटर का उपयोग करती हैं जो रेंज (-divisor, divisor)और वैल्यू पर मानक डिवीजन (शून्य की ओर) के साथ मान लौटाता है ।
एरोन फ्रेंके

196

ऑपरेटर का उपयोग करके विभाजन के शेष भाग की खोज की जा सकती है %:

>>> 26%7
5

मामले में आप दोनों भागफल और modulo की जरूरत है, वहाँ अंतर्निहित divmodकार्य है:

>>> seconds= 137
>>> minutes, seconds= divmod(seconds, 60)

47

26% 7 (आपको शेष मिलेगा)

26/7 (आपको डिविज़र मिलेगा फ्लोट वैल्यू हो सकता है)

26 // 7 (आपको केवल पूर्णांक मान होगा)


18

यदि आप कोड की एक पंक्ति (अधिक सामान्य usecase) में भागफल और शेष प्राप्त करना चाहते हैं, तो उपयोग करें:

quotient, remainder = divmod(dividend, divisor)
#or
divmod(26, 7)

17

यदि आप मोडुलो से बचना चाहते हैं, तो आप चार बुनियादी ऑपरेशनों के संयोजन का भी उपयोग कर सकते हैं :)

26 - (26 // 7 * 7) = 5

15

पायथन 3.7 से, एक नया math.remainder()कार्य है:

from math import remainder
print(remainder(26,7))

आउटपुट:

-2.0  # not 5

ध्यान दें, जैसा कि ऊपर, यह नहीं ही है के रूप में %

दस्तावेज का उद्धरण :

गणित। शेष (x, y)

IEEE 754-शैली शेष x को y के संबंध में लौटाएं। परिमित x और परिमित नॉनजरो y के लिए, यह अंतर x - n * y है, जहाँ n भागफल x / y के सटीक मान का निकटतम पूर्णांक है। यदि x / y दो लगातार पूर्णांकों के बीच बिल्कुल आधा है, तो निकटतम सम पूर्णांक का उपयोग n के लिए किया जाता है। शेष आर = शेष (एक्स, वाई) इस प्रकार हमेशा एब्स (आर) <= 0.5 * एब्स (वाई) को संतुष्ट करता है।

विशेष मामले IEEE 754 का पालन करते हैं: विशेष रूप से, शेष (x, math.inf) किसी भी परिमित x के लिए x है, और शेष (x, 0) और शेष (math.inf, x) किसी भी गैर- NaN x के लिए ValueError बढ़ाते हैं। यदि शेष ऑपरेशन का परिणाम शून्य है, तो उस शून्य का x के समान संकेत होगा।

आईईईई 754 बाइनरी फ्लोटिंग-पॉइंट का उपयोग करने वाले प्लेटफार्मों पर, इस ऑपरेशन का परिणाम हमेशा बिल्कुल प्रतिनिधित्व करने योग्य होता है: कोई गोल त्रुटि नहीं पेश की जाती है।

समस्या 29962 नया फ़ंक्शन बनाने के लिए तर्क का वर्णन करता है।


math.remainder जिस तरह से आप अजगर के लिए उदाहरण की उम्मीद नहीं कर सकते हैं काम करता है 3.7 >>> math.remainder (-2.99,2) -0.9900000000000002 >>> math.remainder (-3,2) 1.0
डोमिनिक

4

/ जब आप विभाजित करते हैं तो% के बजाय का उपयोग करें। यह आपके लिए शेष राशि लौटा देगा। तो आपके मामले में

26 % 7 = 5

4

मोडुलो सही उत्तर होगा, लेकिन यदि आप इसे मैन्युअल रूप से कर रहे हैं तो यह काम करना चाहिए।

num = input("Enter a number: ")
div = input("Enter a divisor: ")

while num >= div:
    num -= div
print num

5
केवल तभी काम करता है जब संख्या> = 0 और अंतर> 0 हो।
12431234123412341234123

4

हम मापांक ऑपरेटर (%) का उपयोग करके इसे हल कर सकते हैं

26% 7 = 5;

लेकिन 26/7 = 3 क्योंकि यह भागफल देगा लेकिन% ऑपरेटर शेष देगा।


3
यदि आप पायथन 2, 26/7 = 3 का उपयोग करते हैं, तो पायथन 3, 26/7 के बारे में 3.7142857142857144 है
एंटी ए


0

यदि आप अपनी शेष समस्या चाहते हैं, तो बस गणित की तरह वास्तविक शेष नियमों का उपयोग करें। दी गई यह आपको एक दशमलव आउटपुट नहीं देगा।

valone = 8
valtwo = 3
x = valone / valtwo
r = valone - (valtwo * x)
print "Answer: %s with a remainder of %s" % (x, r)

यदि आप इसे एक कैलकुलेटर प्रारूप में बनाना चाहते हैं, तो बस विकल्प के valone = 8 साथ valone = int(input("Value One"))। साथ ही करें valtwo = 3, लेकिन स्पष्ट रूप से अलग vairables।


आपको valone/valtwoइंट में डालना है। अन्यथा यह एक फ्लोट संख्या में परिणाम देगा।
अली यलमाज़

-1

आप किसी फ़ंक्शन को परिभाषित कर सकते हैं और शेष को 2 मानों जैसे रेम (नंबर 1, नंबर 2) के साथ कॉल कर सकते हैं जो नंबर 1% नंबर 2 लौटाता है, फिर थोड़ी देर बनाएँ और इसे सही पर सेट करें और फिर अपने फ़ंक्शन के लिए दो इनपुट्स प्रिंट करें नंबर 1 और 2 प्रिंट करें (प्रिंट करें) (संख्या 1, संख्या 2)


1
कृपया एक कार्य उदाहरण जोड़ें। कुछ सैद्धांतिक कोड की व्याख्या करना कठिन हो सकता है।
mischva11
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.