একটি সংখ্যার বিভাগের বাকী অংশটি সন্ধান করুন


155

পাইথনের একটি সংখ্যার বিভাগের বাকী অংশটি কীভাবে সন্ধান করতে পারি?

উদাহরণস্বরূপ:
যদি সংখ্যাটি 26 হয় এবং বিভক্ত সংখ্যা 7 হয় তবে বিভাগের বাকী 5 হয়
(7 + 7 + 7 = 21 এবং 26-21 = 5 থেকে))


8
দেখে মনে হচ্ছে তিনি ইতিমধ্যে করেছেন :)
ক্রিস ডিকসন

আমি মডুলো অপারেটরটি সন্ধান করার পরামর্শ দেব
ইউরিব

11
হোমওয়ার্ক সম্পর্কে তিনি কোথায় কিছু উল্লেখ করেছেন তা আমি দেখতে পাই না
p1l0t

উত্তর:


205

আপনি মডুলো অপারেটরটির সন্ধান করছেন:

a % b

উদাহরণ স্বরূপ:

26 % 7

অবশ্যই, তারা চেয়েছিল যে আপনি নিজে এটি প্রয়োগ করতে পারেন, এটি খুব বেশি কঠিনও হবে না।


13
লক্ষ্য করুন ফরম অপারেটরের সবসময় একটি ধনাত্মক সংখ্যা ফেরৎ, তাই নেতিবাচক সংখ্যার জন্য এটা কি আপনি বাকি বিষয়ে কথা আশা নাও হতে পারে: -10 % 3 == 2। তবে এটি a/b*b + a%b == aএখনও সত্য, যেহেতু অজগর সর্বদা অন্য-কিছু ভাষার মতো -ইনফিনিটির দিকে ঘুরতে থাকে, যা 0 এর দিকে থাকে তবে ফিরে আসে -1।
মার্সেলজ

6
কারণ পাইথনের %একটি সত্যিকারের মডুলাস সম্পাদন করে, যা [0, divisor)মেঝে বিভাগের সাথে পরিসীমা এবং জোড়গুলির মানগুলি ভালভাবে দেয় (নেতিবাচক অনন্ততার দিকে)। সি ভাষাগুলি %অপারেটরটিকে বাকী ক্রিয়াকলাপের জন্য ব্যবহার করে যা (-divisor, divisor)মান বিভাগের সাথে শূন্যের এবং জোড়গুলির মান ভাল করে দেয় (শূন্যের দিকে)।
অ্যারন ফ্রেঙ্ক

196

অপারেটরটি ব্যবহার করে একটি বিভাগের বাকী অংশগুলি আবিষ্কার করা যায় %:

>>> 26%7
5

আপনার যদি ভাগফল এবং মডুলো উভয়ের প্রয়োজন হয় তবে সেখানে বিল্টিন divmodফাংশন রয়েছে:

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

47

26% 7 (আপনি বাকীটি পাবেন)

২ / / 7 (আপনি বিভাজন পাবেন ভাসমান মান হতে পারে)

26 // 7 (আপনি কেবলমাত্র পূর্ণ সংখ্যার বিভাজন পাবেন))


18

আপনি যদি এক লাইনের কোডের (আরও সাধারণ ব্যবহারের ক্ষেত্রে) ভাগ করে নেওয়া এবং বাকী পেতে চান তবে ব্যবহার করুন:

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

17

আপনি যদি মডুলো এড়াতে চান তবে আপনি চারটি বেসিক অপারেশনের সংমিশ্রণটিও ব্যবহার করতে পারেন :)

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

15

পাইথন ৩.7 থেকে একটি নতুন math.remainder()ফাংশন রয়েছে:

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

আউটপুট:

-2.0  # not 5

নোট, যেমন উপরে তা না একই হিসাবে %

ডকুমেন্টেশন উদ্ধৃত :

গণিত। বাকি (x, y)

আই এর জন্য ই আই ই ই 754-শৈলীর এক্স এর বাকী অংশটি ফিরিয়ে দিন। সীমাবদ্ধ এক্স এবং সসীম ননজারো ওয়াইয়ের জন্য, এই পার্থক্যটি হল x - n * y, যেখানে n ভাগফল x / y এর সঠিক মানের নিকটতম পূর্ণসংখ্যা। যদি এক্স / ওয়াইটি পরপর দুটি পূর্ণসংখ্যার মাঝামাঝি অর্ধেক পথ হয় তবে নিকটতম এমনকি পূর্ণসংখ্যা n এর জন্য ব্যবহৃত হয়। অবশিষ্ট r = অবশিষ্ট (x, y) এভাবে সর্বদা ABS (r) <= 0.5 * অ্যাবস (y) কে সন্তুষ্ট করে।

বিশেষ ক্ষেত্রে আইইইই 754 অনুসরণ করে: বিশেষত, বাকী (x, math.inf) যে কোনও সীমাবদ্ধ এক্সের জন্য এক্স, এবং অবশিষ্ট (x, 0) এবং অবশিষ্ট (math.inf, x) কোনও নন-এনএন এক্স এর জন্য ভ্যালুয়েরর বাড়ায়। যদি বাকী অপারেশনের ফলাফল শূন্য হয় তবে সেই শূন্যের এক্স এর সমান চিহ্ন থাকবে।

আইইইই 754 বাইনারি ফ্লোটিং পয়েন্ট ব্যবহার করে প্ল্যাটফর্মে, এই ক্রিয়াকলাপের ফলাফল সর্বদা হুবহু উপস্থাপনযোগ্য: কোনও গোলাকার ত্রুটি প্রবর্তিত হয় না।

ইস্যু 29962 নতুন ফাংশন তৈরির যুক্তি বর্ণনা করে।


ম্যাথ.রেইমেন্ডার অজগর ৩.7 এর জন্য যেমনটি আশা করেন তেমনভাবে কাজ করতে পারে না >>> math.remainder (-2.99,2) -0.9900000000000002 >>> গণিত.আরমাইন্ডার (-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স্পষ্টতই পৃথক বৈকল্পিকগুলির সাথে এটি করুন ।


আপনাকে অন্তর্নির্মিত valone/valtwoকরতে হবে অন্যথায় এটি ভাসমান সংখ্যার ফলাফল করবে।
আলী ইলমাজ

-1

আপনি কোনও ফাংশনটি সংজ্ঞায়িত করতে পারেন এবং এটিকে রিম (সংখ্যা 1, সংখ্যা 2) এর মতো 2 টি মান সহ বাকী হিসাবে কল করতে পারেন যা নম্বর 1% সংখ্যা 2 প্রদান করে তারপরে একটি সময় তৈরি করে সত্যে সেট করে তারপর আপনার ফাংশন 1 এবং 2 এর জন্য দুটি ইনপুট মুদ্রণ করে মুদ্রণ করবে (রিম (সংখ্যা 1, number_2)


1
একটি কাজের উদাহরণ যুক্ত করুন। কিছু তাত্ত্বিক কোড ব্যাখ্যা করা হয়তো বোঝা শক্ত।
mischva11
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.