📌 عنوان برنامه: تابعی به نام is_national_code_valid بنویسید که یک ورودی به نام value از جنس رشته (String)، دریافت نموده و در صورتی که مقدار value، یک کد ملی معتبر بود، مقدار True و در غیر این صورت، مقدار False را برگرداند؟
✅ تذکر: با توجه به الگوریتم ذیل، سعی کنید که تابع مذکور را پیادهسازی و تست نمایید. انشاءالله تا ۲۴ ساعت آینده، به دو روش ساده و حرفهای، سورسکد مربوطه، منتشر خواهد شد، و شما میتوانید، کد خود را با این دو کد منتشر شده، مقایسه نمایید.
✅ تذکر: در صورتی که شخصی از کد ملی جعلی یا Fake استفاده نماید، مجازات آن، بر طبق قانون، از ۶ ماه تا ۳ سال زندان بوده و یا به صورت جریمه نقدی، محکوم به پرداخت از ۳ الی ۱۸ میلیون ریال برای فرد خاطی در نظر گرفته میشود!
✅ نکتهای، صرفا در جهت اطلاعات عمومی: سه رقم اول، مربوط به کد شهر میباشد!
- در صورتی که value، هیچ مقداری نداشته باشه (None)، کد ملی معتبر نمیباشد.
- تمام Space های مقدار value را از بین میبریم.
- در صورتی که طول رشته value، بزرگتر از ۱۰ کاراکتر و یا کمتر از ۸ کاراکتر باشد، کد ملی معتبر نمیباشد.
- در صورتی که طول رشته value، برابر ۸ کاراکتر باشد، از سمت چپ، دو صفر به آن اضافه میکنیم، تا طول رشته ۱۰ کاراکتر شود.
- در صورتی که طول رشته value، برابر ۹ کاراکتر باشد، از سمت چپ، یک صفر به آن اضافه میکنیم، تا طول رشته ۱۰ کاراکتر شود.
- در صورتی که تمام کاراکترهای مقدار value، عددی نباشند، کد ملی معتبر نمیباشد.
- در صورتی که همه ارقام کد ملی، کاملا یکسان باشند، کد ملی معتبر نمیباشد. یعنی، مثلا اگر همه ارقام یک باشند، کد ملی معتبر نمیباشد!
- نکته: اولین رقم در کد ملی، اولین رقم در سمت چپ آن میباشد و طبعا آخرین (دهمین) رقم در کد ملی، اولین رقم در سمت راست آن میباشد.
- حال متغیری به نام sum، تعریف کرده و اولین رقم کد ملی را در عدد ۱۰ ضرب کرده و با متغیر sum، جمع میکنیم و مجددا دومین رقم کد ملی را در عدد ۹ ضرب کرده و با متغیر sum، جمع میکنیم و این عمل را تا نهمین! رقم کد ملی تکرار میکنیم.
- دهمین رقم کد ملی را در متغیری به نام control_digit ذخیره میکنیم.
- باقیمانده حاصل این جمع را بر عدد ۱۱ بدست آورده و آنرا در متغیری به نام remainder ذخیره میکنیم.
تست نهایی:
- در صورتی که مقدار remainder، کمتر از عدد ۲ باشد (یعنی یا صفر یا یک باشد)، اگر مقدار remainder، برابر مقدار control_digit باشد، کد ملی معتبر بوده و در غیر این صورت معتبر نمیباشد!
- در صورتی که مقدار remainder، بزرگتر یا مساوی عدد ۲ باشد، اگر تفاضل remainder از عدد ۱۱، مساوی مقدار control_digit باشد، کد ملی معتبر بوده و در غیر این صورت معتبر نمیباشد!
#ALGORITHM #SourceCode10031 #Practical
کانال پایتون:
@DT_PYTHON_LEARNING
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
.
✅ تذکر: با توجه به الگوریتم ذیل، سعی کنید که تابع مذکور را پیادهسازی و تست نمایید. انشاءالله تا ۲۴ ساعت آینده، به دو روش ساده و حرفهای، سورسکد مربوطه، منتشر خواهد شد، و شما میتوانید، کد خود را با این دو کد منتشر شده، مقایسه نمایید.
✅ تذکر: در صورتی که شخصی از کد ملی جعلی یا Fake استفاده نماید، مجازات آن، بر طبق قانون، از ۶ ماه تا ۳ سال زندان بوده و یا به صورت جریمه نقدی، محکوم به پرداخت از ۳ الی ۱۸ میلیون ریال برای فرد خاطی در نظر گرفته میشود!
✅ نکتهای، صرفا در جهت اطلاعات عمومی: سه رقم اول، مربوط به کد شهر میباشد!
- در صورتی که value، هیچ مقداری نداشته باشه (None)، کد ملی معتبر نمیباشد.
- تمام Space های مقدار value را از بین میبریم.
- در صورتی که طول رشته value، بزرگتر از ۱۰ کاراکتر و یا کمتر از ۸ کاراکتر باشد، کد ملی معتبر نمیباشد.
- در صورتی که طول رشته value، برابر ۸ کاراکتر باشد، از سمت چپ، دو صفر به آن اضافه میکنیم، تا طول رشته ۱۰ کاراکتر شود.
- در صورتی که طول رشته value، برابر ۹ کاراکتر باشد، از سمت چپ، یک صفر به آن اضافه میکنیم، تا طول رشته ۱۰ کاراکتر شود.
- در صورتی که تمام کاراکترهای مقدار value، عددی نباشند، کد ملی معتبر نمیباشد.
- در صورتی که همه ارقام کد ملی، کاملا یکسان باشند، کد ملی معتبر نمیباشد. یعنی، مثلا اگر همه ارقام یک باشند، کد ملی معتبر نمیباشد!
- نکته: اولین رقم در کد ملی، اولین رقم در سمت چپ آن میباشد و طبعا آخرین (دهمین) رقم در کد ملی، اولین رقم در سمت راست آن میباشد.
- حال متغیری به نام sum، تعریف کرده و اولین رقم کد ملی را در عدد ۱۰ ضرب کرده و با متغیر sum، جمع میکنیم و مجددا دومین رقم کد ملی را در عدد ۹ ضرب کرده و با متغیر sum، جمع میکنیم و این عمل را تا نهمین! رقم کد ملی تکرار میکنیم.
- دهمین رقم کد ملی را در متغیری به نام control_digit ذخیره میکنیم.
- باقیمانده حاصل این جمع را بر عدد ۱۱ بدست آورده و آنرا در متغیری به نام remainder ذخیره میکنیم.
تست نهایی:
- در صورتی که مقدار remainder، کمتر از عدد ۲ باشد (یعنی یا صفر یا یک باشد)، اگر مقدار remainder، برابر مقدار control_digit باشد، کد ملی معتبر بوده و در غیر این صورت معتبر نمیباشد!
- در صورتی که مقدار remainder، بزرگتر یا مساوی عدد ۲ باشد، اگر تفاضل remainder از عدد ۱۱، مساوی مقدار control_digit باشد، کد ملی معتبر بوده و در غیر این صورت معتبر نمیباشد!
#ALGORITHM #SourceCode10031 #Practical
کانال پایتون:
@DT_PYTHON_LEARNING
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
.
❤4👍2
📌 عنوان برنامه: تابعی به نام is_national_code_valid بنویسید که یک ورودی به نام value از جنس رشته (String)، دریافت نموده و در صورتی که مقدار value، یک کد ملی معتبر بود، مقدار True و در غیر این صورت، مقدار False را برگرداند؟
✅ تذکر: الگوریتم مربوط به این برنامه، در دو مطلب قبل به طور کامل منتشر شده است!
✅ تذکر: در این سورسکد، سعی بر این شده است که از دستورات ساده و پایهای پایتون استفاده شود، این مدل کدنویسی، معمولا مربوط به برنامهنویسان Junior میباشد! در برنامه بعدی، سعی میکنیم که سورسکد را کمی حرفهایتر بنویسیم!
کانال پایتون:
@DT_PYTHON_LEARNING
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
.
✅ تذکر: الگوریتم مربوط به این برنامه، در دو مطلب قبل به طور کامل منتشر شده است!
✅ تذکر: در این سورسکد، سعی بر این شده است که از دستورات ساده و پایهای پایتون استفاده شود، این مدل کدنویسی، معمولا مربوط به برنامهنویسان Junior میباشد! در برنامه بعدی، سعی میکنیم که سورسکد را کمی حرفهایتر بنویسیم!
# ********************#SourceCode #SourceCode10031 #Practical
def is_national_code_valid(value: str):
if value == None:
return False
value = value.replace(" ", "")
if len(value) < 8 or len(value) > 10:
return False
if len(value) == 9:
value = f"0{value}"
if len(value) == 8:
value = f"00{value}"
if value.isnumeric() == False:
return False
if (
value == "0000000000"
or value == "1111111111"
or value == "2222222222"
or value == "3333333333"
or value == "4444444444"
or value == "5555555555"
or value == "6666666666"
or value == "7777777777"
or value == "8888888888"
or value == "9999999999"
):
return False
sum = 0
sum += int(value[0]) * 10
sum += int(value[1]) * 9
sum += int(value[2]) * 8
sum += int(value[3]) * 7
sum += int(value[4]) * 6
sum += int(value[5]) * 5
sum += int(value[6]) * 4
sum += int(value[7]) * 3
sum += int(value[8]) * 2
control_digit = int(value[9])
remainder = sum % 11
if remainder < 2:
if remainder == control_digit:
return True
else:
if 11 - remainder == control_digit:
return True
return False
# ********************
کانال پایتون:
@DT_PYTHON_LEARNING
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
.
❤4👍2
📌 عنوان برنامه: تابعی به نام is_national_code_valid بنویسید که یک ورودی به نام value از جنس رشته (String)، دریافت نموده و در صورتی که مقدار value، یک کد ملی معتبر بود، مقدار True و در غیر این صورت، مقدار False را برگرداند؟
✅ تذکر: الگوریتم مربوط به این برنامه، در دو مطلب قبل به طور کامل منتشر شده است!
✅ تذکر: در این سورسکد، سعی بر این شده است که از دستورات حرفهایتر پایتون استفاده شود، این مدل کدنویسی، معمولا مربوط به برنامهنویسان Senior میباشد!
کانال پایتون:
@DT_PYTHON_LEARNING
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
.
✅ تذکر: الگوریتم مربوط به این برنامه، در دو مطلب قبل به طور کامل منتشر شده است!
✅ تذکر: در این سورسکد، سعی بر این شده است که از دستورات حرفهایتر پایتون استفاده شود، این مدل کدنویسی، معمولا مربوط به برنامهنویسان Senior میباشد!
# ********************#SourceCode #SourceCode10031 #Practical
def is_national_code_valid(value: str):
if value == None:
return False
value = value.replace(" ", "")
if len(value) < 8 or len(value) > 10:
return False
if len(value) == 9:
value = f"0{value}"
if len(value) == 8:
value = f"00{value}"
if value.isnumeric() == False:
return False
for index in range(10):
if value == str(index) * 10:
return False
sum = 0
for index in range(9):
sum += int(value[index]) * (10 - index)
control_digit = int(value[9])
remainder = sum % 11
if remainder < 2:
if remainder == control_digit:
return True
elif 11 - remainder == control_digit:
return True
return False
# ********************
کانال پایتون:
@DT_PYTHON_LEARNING
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
.
❤3👍2