जवाबों:
% (Modulo) ऑपरेटर दूसरे तर्क द्वारा पहले तर्क के विभाजन से शेषफल प्राप्त करता है। संख्यात्मक तर्कों को पहले एक सामान्य प्रकार में परिवर्तित किया जाता है। एक शून्य सही तर्क ZeroDivisionError अपवाद को जन्म देता है। तर्क फ़्लोटिंग पॉइंट संख्या हो सकते हैं, उदाहरण के लिए, 3.14% 0.7 बराबर 0.34 (क्योंकि 3.14 बराबर 4 * + + 0.34।) मॉडुलो ऑपरेटर हमेशा अपने दूसरे ऑपरेंड (या शून्य) के समान चिह्न के साथ परिणाम देता है; परिणाम का निरपेक्ष मूल्य दूसरे ऑपरेंड [2] के निरपेक्ष मूल्य से कड़ाई से छोटा है।
Http://docs.python.org/reference/expressions.html से लिया गया
उदाहरण 1:
6%2
मूल्यांकन करता है 0
क्योंकि 6 से 2 (3 बार) विभाजित होने पर कोई शेष नहीं रहता है।
उदाहरण 2 : 7%2
मूल्यांकन करता है 1
क्योंकि 1
7 के 2 (3 बार) से विभाजित होने पर शेष है ।
तो यह संक्षेप करने के लिए कि, यह एक विभाजन ऑपरेशन के शेष, या 0
यदि कोई शेष नहीं है, तो वापस कर देता है । तो 6%2
इसका मतलब है 6 के शेष को 2 से विभाजित करें।
-11%5 = 4
??
कुछ हद तक विषय है, %
यह स्ट्रिंग स्वरूपण जैसे %=
स्ट्रिंग में स्थानापन्न संचालन के लिए भी उपयोग किया जाता है :
>>> x = 'abc_%(key)s_'
>>> x %= {'key':'value'}
>>> x
'abc_value_'
फिर से, विषय से दूर, लेकिन यह एक छोटी सी प्रलेखित विशेषता प्रतीत होती है जिसने मुझे ट्रैक करने में थोड़ी देर लगाई, और मुझे लगा कि यह पायथन मॉडुलो गणना से संबंधित है जिसके लिए यह एसओ पृष्ठ अत्यधिक रैंक करता है।
%=
उस पृष्ठ पर नहीं दिखाई देता है
%
ऑपरेटर को चुना गया क्योंकि यह स्ट्रिंग के भीतर उपयोग किए जाने वाले प्रतिशत-विनिर्देशक को प्रतिबिंबित करता है।
एक अभिव्यक्ति जैसे x % y
शेष के लिए मूल्यांकन करता है x ÷ y
- ठीक है, तकनीकी रूप से यह "अनुस्मारक" के बजाय "मापांक" है, इसलिए परिणाम भिन्न हो सकते हैं यदि आप अन्य भाषाओं के साथ तुलना कर रहे हैं जहां %
शेष ऑपरेटर है। कुछ सूक्ष्म अंतर हैं (यदि आप व्यावहारिक परिणामों में रुचि रखते हैं, तो यह भी देखें कि "पायथन के इंटीजर डिवीजन फ़्लोर" बेली क्यों हैं)।
प्रीपरेंस ऑपरेटरों /
(डिवीजन) और *
(गुणा) के समान है।
>>> 9 / 2
4
>>> 9 % 2
1
पायथन गेटचा : आपके द्वारा उपयोग किए जा रहे पायथन संस्करण पर निर्भर करता है, %
यह (पदावनत) स्ट्रिंग प्रक्षेप ऑपरेटर भी है, इसलिए यह देखें कि क्या आप स्वचालित प्रकार की कास्टिंग (जैसे PHP या JS) के साथ एक भाषा से आ रहे हैं जहां एक अभिव्यक्ति '12' % 2 + 3
कानूनी है: अजगर यह परिणाम है TypeError: not all arguments converted during string formatting
जिसमें शायद आप के लिए बहुत भ्रमित हो जाएगा।
[पायथन 3 के लिए अपडेट करें]
उपयोगकर्ता n00p टिप्पणियाँ:
9/2 अजगर में 4.5 है। आपको पूर्णांक विभाजन करना है जैसे: 9 // 2 यदि आप चाहते हैं कि अजगर आपको बताए कि विभाजन के बाद कितनी पूरी वस्तुएं बची हैं (4)।
सटीक होने के लिए, पूर्णांक विभाजन का उपयोग पायथन 2 में डिफ़ॉल्ट रूप से किया जाता था (आप पर ध्यान दें, यह उत्तर मेरे लड़के की तुलना में पुराना है जो पहले से ही स्कूल में है और उस समय 2.x मुख्यधारा में थे):
$ python2.7
Python 2.7.10 (default, Oct 6 2017, 22:29:07)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.31)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 9 / 2
4
>>> 9 // 2
4
>>> 9 % 2
1
वास्तव में आधुनिक पायथन 9 / 2
परिणाम 4.5
में:
$ python3.6
Python 3.6.1 (default, Apr 27 2017, 00:15:59)
[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.42)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 9 / 2
4.5
>>> 9 // 2
4
>>> 9 % 2
1
[अपडेट करें]
उपयोगकर्ता dahiya_boy ने टिप्पणी सत्र में पूछा:
Q. क्या आप समझा सकते हैं कि क्यों
-11 % 5 = 4
- दहिया_बॉय
यह अजीब है, है ना? यदि आप इसे जावास्क्रिप्ट में आज़माते हैं:
> -11 % 5
-1
इसका कारण यह है कि जावास्क्रिप्ट %
में "शेष" ऑपरेटर है जबकि पायथन में यह "मापांक" (क्लॉक गणित) ऑपरेटर है।
आप सीधे जीवीआर से स्पष्टीकरण प्राप्त कर सकते हैं :
संपादित करें - dahiya_boy
जावा और आईओएस में -11 % 5 = -1
जबकि अजगर और माणिक में -11 % 5 = 4
।
अच्छी तरह से आधा कारण पाउलो स्कर्डाइन द्वारा समझाया गया है , और बाकी स्पष्टीकरण यहां नीचे है
जावा और iOS में, %
कि साधन आप को विभाजित करता है, तो शेष देता है 11% 5 देता है Quotient = 2 and remainder = 1
और -11% 5 देता है Quotient = -2 and remainder = -1
।
स्विफ्ट आईओएस में नमूना कोड।
लेकिन जब हम अजगर के बारे में बात करते हैं तो यह घड़ी का मापांक देता है। और नीचे सूत्र के साथ इसका काम
mod(a,n) = a - {n * Floor(a/n)}
इसका मतलब है,
mod(11,5) = 11 - {5 * Floor(11/5)} => 11 - {5 * 2}
इसलिए, mod(11,5) = 1
तथा
mod(-11,5) = -11 - 5 * Floor(11/5) => -11 - {5 * (-3)}
इसलिए, mod(-11,5) = 4
पायथन 3.0 में नमूना कोड।
क्यों पायथन का इंटेगर डिवीजन फ्लोर
मुझे आज (फिर से) यह बताने के लिए कहा गया था कि पायथन में पूर्णांक विभाजन शून्य सी के बजाय ट्रंकिंग के बजाय परिणाम का फर्श क्यों लौटाता है।
सकारात्मक संख्याओं के लिए, कोई आश्चर्य की बात नहीं है:
>>> 5//2
2
लेकिन अगर किसी एक ऑपरेंड नकारात्मक होता है, तो परिणाम शून्य हो जाता है, अर्थात शून्य से दूर (नकारात्मक अनंत की ओर)
>>> -5//2
-3
>>> 5//-2
-3
यह कुछ लोगों को परेशान करता है, लेकिन एक अच्छा गणितीय कारण है। पूर्णांक विभाजन ऑपरेशन (//) और इसकी सिबलिंग, मोडुलो ऑपरेशन (%), एक साथ चलते हैं और एक अच्छे गणितीय संबंध को संतुष्ट करते हैं (सभी चर पूर्णांक हैं):
a/b = q with remainder r
ऐसा है कि
b*q + r = a and 0 <= r < b
(ए और बी मान रहे हैं = = 0)।
यदि आप चाहते हैं कि संबंध ऋणात्मक a (b को धनात्मक रखते हुए) का विस्तार करें, तो आपके पास दो विकल्प हैं: यदि आप q को शून्य की ओर काटते हैं, तो r ऋणात्मक हो जाएगा, जिससे कि अक्रियाशील 0 में बदल जाता है </ abs (r) <अन्यथा, आप ऋणात्मक अनंतता की ओर q मंजिल कर सकते हैं, और अपरिवर्तनीय रहता है 0 <= r <b। [अद्यतन: इस पैरा तय]
गणितीय संख्या सिद्धांत में, गणितज्ञ हमेशा बाद की पसंद को देखते हैं (उदाहरण के लिए विकिपीडिया )। पायथन के लिए, मैंने एक ही विकल्प बनाया क्योंकि मॉडुलो ऑपरेशन के कुछ दिलचस्प अनुप्रयोग हैं जहां एक का संकेत निर्बाध है। POSIX टाइमस्टैम्प (1970 की शुरुआत के बाद से सेकंड) लेने और दिन के समय में बदलने पर विचार करें। चूँकि एक दिन में 24 * 3600 = 86400 सेकंड होते हैं, यह गणना केवल% 86400 है। लेकिन अगर हम 1970 से पहले के समय को नकारात्मक संख्याओं का उपयोग करते हुए व्यक्त करते हैं, तो "शून्य की ओर छंटनी" नियम एक व्यर्थ परिणाम देगा! फर्श नियम का उपयोग करना यह सब ठीक काम करता है।
अन्य अनुप्रयोगों के बारे में मैंने सोचा है कि कंप्यूटर ग्राफिक्स में पिक्सेल पदों की गणना है। मुझे पूरा भरोसा है कि वहां और अधिक चीजे हैं।
नकारात्मक बी के लिए, वैसे, सब कुछ बस फ़्लिप हो जाता है, और आक्रमणकारी बन जाता है:
0 >= r > b.
तो सी इस तरह से क्यों नहीं करता है? संभवतः C ने जिस समय डिज़ाइन किया था उस समय हार्डवेयर ने ऐसा नहीं किया था। और हार्डवेयर ने शायद इसे इस तरह से नहीं किया क्योंकि सबसे पुराने हार्डवेयर में, इन दिनों उपयोग किए गए दो पूरक प्रतिनिधित्व (कम से कम पूर्णांकों के लिए) के बजाय नकारात्मक संख्या को "साइन + परिमाण" के रूप में दर्शाया गया था। मेरा पहला कंप्यूटर एक कंट्रोल डाटा मेनफ्रेम था और इसने पूर्णांक के साथ-साथ फ्लोट के लिए भी पूरक का उपयोग किया। 60 लोगों के एक पैटर्न का मतलब नकारात्मक शून्य था!
टिम पीटर्स, जो जानते हैं कि सभी पायथन फ्लोटिंग पॉइंट कंकाल कहाँ दफ़न हैं, ने इन नियमों को फ़्लोटिंग पॉइंट मोडुलो तक विस्तारित करने की मेरी इच्छा के बारे में कुछ चिंता व्यक्त की है। वह शायद सही है; truncate- की ओर ऋणात्मक-अनन्तता नियम x% 1.0 के लिए सटीक नुकसान का कारण बन सकता है जब x एक बहुत छोटी ऋणात्मक संख्या है। लेकिन यह पूर्णांक मोड्यूलो को तोड़ने के लिए मेरे लिए पर्याप्त नहीं है, और // इसे कसकर युग्मित किया गया है।
पुनश्च। ध्यान दें कि मैं / के बजाय // का उपयोग कर रहा हूं - यह पायथन 3 सिंटैक्स है, और यह भी कि आप पूर्णांक विभाजन का आह्वान कर रहे हैं, इस पर जोर देने के लिए पायथन 2 में अनुमति दी गई है। पायथन 2 में / ऑपरेटर अस्पष्ट है, क्योंकि यह इंट और फ्लोट या दो फ्लोट की तुलना में दो पूर्णांक ऑपरेंड के लिए एक अलग परिणाम देता है। लेकिन यह बिलकुल अलग कहानी है; PEP 238 देखें।
Guido van Rossum द्वारा सुबह 9:49 बजे पोस्ट किया गया
help(divmod)
दस्तावेज में अपरिवर्तनीय q, r = divmod(x y) <==> q*y + r == x
।
मापांक एक गणितीय ऑपरेशन है, जिसे कभी-कभी "घड़ी अंकगणित" के रूप में वर्णित किया जाता है। मुझे लगता है कि इसे केवल एक शेष के रूप में वर्णन करना भ्रामक और भ्रमित करने वाला है क्योंकि यह वास्तविक कारण है कि यह कंप्यूटर विज्ञान में बहुत अधिक उपयोग किया जाता है। यह वास्तव में चक्र के चारों ओर लपेटने के लिए उपयोग किया जाता है।
एक घड़ी के बारे में सोचो: मान लीजिए कि आप "सैन्य" समय में एक घड़ी को देखते हैं, जहां समय की सीमा 0:00 - 23.59 से जाती है। अब अगर आप हर दिन आधी रात को कुछ करना चाहते हैं, तो आप चाहते हैं कि मौजूदा समय मॉड 24 शून्य हो:
यदि (घंटा% 24 == 0):
आप इतिहास के सभी घंटों के बारे में 24 घंटे और अधिक से अधिक चक्र के चारों ओर लपेटने के बारे में सोच सकते हैं और दिन का वर्तमान समय है कि असीम रूप से लंबी संख्या मॉड 24। यह सिर्फ एक शेष की तुलना में बहुत अधिक गहरा अवधारणा है, यह एक गणितीय तरीका है साइकिल से निपटने के लिए और यह कंप्यूटर विज्ञान में बहुत महत्वपूर्ण है। इसका उपयोग सरणियों के चारों ओर लपेटने के लिए भी किया जाता है, जिससे आप सूचकांक को बढ़ा सकते हैं और सरणी के अंत तक पहुंचने के बाद मापांक का उपयोग करके शुरुआत में वापस लपेट सकते हैं।
a % b = a - b * floor(a/b)
अजगर - मूल संचालक
http://www.tutorialspoint.com/python/python_basic_operators.htm
मापांक - बाएं हाथ के ऑपरेंड को दाहिने हाथ के ऑपरेंड द्वारा छोड़ दिया जाता है और शेष बचता है
a = 10 और b = 20
b% ए = ०
अधिकांश भाषाओं में% का उपयोग मापांक के लिए किया जाता है । अजगर कोई अपवाद नहीं है।
% Modulo ऑपरेटर का उपयोग स्ट्रिंग्स को प्रिंट करने के लिए भी किया जा सकता है (जैसे C में) Google https://developers.google.com/edu/python/strings पर परिभाषित किया गया है ।
# % operator
text = "%d little pigs come out or I'll %s and %s and %s" % (3, 'huff', 'puff', 'blow down')
यह विषय से हटकर लगता है लेकिन यह निश्चित रूप से किसी की मदद करेगा।
x % y
भाग के शेष भाग की गणना करता x
है y
जहाँ भागफल एक पूर्णांक होता है । शेष पर हस्ताक्षर है y
।
पायथन 3 पर गणना की पैदावार 6.75
; इसका कारण यह है कि /
एक सच्चा विभाजन करता है, अजगर पर पूर्णांक विभाजन नहीं (जैसे डिफ़ॉल्ट रूप से) 2. पायथन 2 पर 1 / 4
0 देता है, क्योंकि परिणाम गोल है।
पूर्णांक 3 को //
संचालक के साथ भी किया जा सकता है , इस प्रकार संचालक के रूप में 7 प्राप्त करने के लिए, आप निष्पादित कर सकते हैं:
3 + 2 + 1 - 5 + 4 % 2 - 1 // 4 + 6
इसके अलावा, आप केवल पंक्ति जोड़कर, पायथन 2 पर पायथन शैली विभाजन प्राप्त कर सकते हैं
from __future__ import division
प्रत्येक स्रोत फ़ाइल में पहली स्रोत कोड लाइन के रूप में।
#
टिप्पणियों के लिए हैं और //
एक ऑपरेटर हैं।
मॉड्यूलस ऑपरेटर, इसका उपयोग पूर्णांक पर शेष विभाजन के लिए किया जाता है, आमतौर पर, लेकिन पायथन में फ्लोटिंग पॉइंट संख्याओं के लिए उपयोग किया जा सकता है।
http://docs.python.org/reference/expressions.html
% (Modulo) ऑपरेटर दूसरे तर्क द्वारा पहले तर्क के विभाजन से शेषफल प्राप्त करता है। संख्यात्मक तर्कों को पहले एक सामान्य प्रकार में परिवर्तित किया जाता है। एक शून्य सही तर्क ZeroDivisionError अपवाद को जन्म देता है। तर्क फ़्लोटिंग पॉइंट संख्या हो सकते हैं, उदाहरण के लिए, 3.14% 0.7 बराबर 0.34 (क्योंकि 3.14 बराबर 4 * + + 0.34।) मॉडुलो ऑपरेटर हमेशा अपने दूसरे ऑपरेंड (या शून्य) के समान चिह्न के साथ परिणाम देता है; परिणाम का निरपेक्ष मूल्य दूसरे ऑपरेंड [2] के निरपेक्ष मूल्य से कड़ाई से छोटा है।
विदित हो कि
(3 +2 + 1 - 5) + (4 % 2) - (1/4) + 6
भले ही पायथन 3.4 में गणना की गई हो, 7 के बजाय 6.75 में कोष्ठक परिणाम।
और '/' ऑपरेटर को समझना आसान नहीं है, भी (python2.7): कोशिश करो ...
- 1/4
1 - 1/4
यह यहाँ थोड़ा सा विषय है, लेकिन उपरोक्त अभिव्यक्ति का मूल्यांकन करते समय विचार किया जाना चाहिए :)
(1)+(0)-(0.25)+(6)
।
% ऑनलाइन के उपयोग के लिए विशिष्ट उपयोग के मामलों को आसानी से खोजना मेरे लिए कठिन था, जैसे कि आंशिक मापांक विभाजन या नकारात्मक मापांक विभाजन क्यों करता है इसका उत्तर उस परिणाम में मिलता है। आशा है कि यह इस तरह से सवालों को स्पष्ट करने में मदद करता है:
मापांक विभाग सामान्य में:
मापांक विभाग एक गणितीय विभाजन ऑपरेशन के शेष को लौटाता है। यह इस प्रकार है:
मान लें कि हमारे पास 5 का लाभांश है और 2 का विभाजक है, निम्न विभाजन ऑपरेशन होगा (x के बराबर):
dividend = 5
divisor = 2
x = 5/2
मापांक गणना का पहला चरण पूर्णांक विभाजन का संचालन करना है:
x_int = 5 // 2 (अजगर में पूर्णांक विभाजन दोहरे स्लैश का उपयोग करता है)
x_int = 2
अगला, x_int का आउटपुट भाजक द्वारा गुणा किया जाता है:
x_mult = x_int * भाजक x_mult = 4
अंत में, लाभांश x_mult से घटाया जाता है
लाभांश - x_mult = 1
इसलिए, मापांक ऑपरेशन 1 लौटाता है:
5% 2 = 1
एक अंश में मापांक लागू करने के लिए आवेदन
Example: 2 % 5
एक अंश पर लागू होने पर मापांक की गणना ऊपर के समान होती है; हालाँकि, यह नोट करना महत्वपूर्ण है कि पूर्णांक विभाजन शून्य के मान में होगा जब विभाजक लाभांश से बड़ा होगा:
dividend = 2
divisor = 5
पूर्णांक विभाजन परिणाम 0 में जबकि; इसलिए, जब चरण 3 ऊपर किया जाता है, तो लाभांश का मान शून्य से घटाया जाता है:
dividend - 0 = 2 —> 2 % 5 = 2
एक नकारात्मक करने के लिए मापांक लागू करने के लिए आवेदन
फ्लोर डिवीजन होता है जिसमें पूर्णांक डिवीजन का मान सबसे कम पूर्णांक मान तक होता है:
import math
x = -1.1
math.floor(-1.1) = -2
y = 1.1
math.floor = 1
इसलिए, जब आप पूर्णांक विभाजन करते हैं, तो आप अपनी अपेक्षा से भिन्न परिणाम प्राप्त कर सकते हैं!
निम्नलिखित लाभांश और भाजक पर उपरोक्त चरणों को लागू करना मापांक अवधारणा को दर्शाता है:
dividend: -5
divisor: 2
चरण 1: पूर्णांक विभाजन लागू करें
x_int = -5 // 2 = -3
चरण 2: भाजक द्वारा पूर्णांक विभाजन का परिणाम गुणा करें
x_mult = x_int * 2 = -6
चरण 3: गुणा चर से लाभांश घटाएं, दोहरे नकारात्मक को नोटिस करें।
dividend - x_mult = -5 -(-6) = 1
इसलिए:
-5 % 2 = 1
% (Modulo) ऑपरेटर दूसरे तर्क द्वारा पहले तर्क के विभाजन से शेषफल प्राप्त करता है। संख्यात्मक तर्कों को पहले एक सामान्य प्रकार में परिवर्तित किया जाता है।
3 + 2 + 1 - 5 + 4% 2 - 1/4 + 6 = 7
यह ऑपरेटर पूर्वता पर आधारित है।
यह एक मॉडुलो ऑपरेशन है http://en.wikipedia.org/wiki/Modulo_operation
http://docs.python.org/reference/expressions.html
तो संचालन के आदेश के साथ, यह काम करता है
(३ + २ + १-५) + (४% २) - (१/४) + ६
(१) + (०) - (०) + ६
7
1/4 = 0 क्योंकि हम यहाँ पूर्णांक गणित कर रहे हैं।
यह कई सी-लाइक भाषाओं की तरह है, शेष या मोडुलो ऑपरेशन। सांख्यिक प्रकारों के दस्तावेज़ देखें - int, float, long, complex ।
मापांक - दाएं हाथ से बाएं हाथ के ऑपरेंड को बांटा जाता है और शेष बचता है।
यदि यह मदद करता है:
1:0> 2%6
=> 2
2:0> 8%6
=> 2
3:0> 2%6 == 8%6
=> true
... और इसी तरह।
मैंने पाया है कि मापांक ऑपरेटर (%) को समझने का सबसे आसान तरीका लंबे विभाजन के माध्यम से है। यह शेष है और एक संख्या निर्धारित करने में उपयोगी हो सकता है या विषम भी हो सकता है:
4%2 = 0
2
2|4
-4
0
11%3 = 2
3
3|11
-9
2