Module de vérification de mon numéro Python publié

C'est un module qui vérifie mon numéro avec Python installable pip. Nous faisons une vérification croisée avec la version ruby et 10 000 cas. L'article Calculer mon chiffre de contrôle de numéro était merveilleux, j'ai donc pu créer une version Python en y faisant référence.

install

install


pip install mynumber

https://pypi.python.org/pypi/mynumber

sample code

install


# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
from mynumber import MyNumber

#Vérification de mon numéro
my_number = 123456789018
print MyNumber.validate(my_number)

#Plus de vérification de mon numéro
for my_number in MyNumber.gets(1000):
    assert MyNumber.validate(my_number)

#De plus en plus ma vérification de numéro par itérateur:Il y a duplication
for my_number in MyNumber():
    assert MyNumber.validate(my_number)

Lois et règlements sur lesquels

○ Ordonnance n ° 85 du Ministère de l'intérieur et des communications

Article 5 La formule spécifiée par l'ordonnance du ministère de l'intérieur et des communications à l'article 8 de l'ordonnance est la formule ci-dessous.

Formule

11 - \Bigl( \displaystyle\sum_{n=1}^{11} P_n \times Q_n \Bigr) \% 11 Cependant, si $ \ Bigl (\ displaystyle \ sum_ {n = 1} ^ {11} P_n \ times Q_n \ Bigr) % 11 ≤ 1 $, ce sera $ 0 $.

Code de formule

$ Pn $: Le numéro du chiffre $ n $ lorsque le chiffre le moins significatif du nombre à onze chiffres autre que le numéro d'inspection qui constitue le numéro personnel est le chiffre $ 1 $. $ Qn $: $ n + 1 $ lorsque 1 $ ≤ n ≤ 6 $, $ n-5 $ lorsque 7 $ ≤ n ≤ 11 $

Articles dans Original et Calculate Check Digit for My Number J'ai cité la formule de.

Introduction d'une autre version linguistique

Validé avec la version Ruby

J'ai vérifié avec le code dans l'article Calculer mon chiffre de contrôle de numéro.

ruby_mynumber_validate.rb


#!/usr/bin/env ruby
def validate_my_number(mynumber)
  #Stringation entière
  digits = mynumber.to_s.chars.map(&:to_i)
  #Seulement 12 chiffres autorisés
  return false unless digits.length == 12
  #Chiffres de contrôle séparés
  check_digit = digits.pop

  #Vérifiez les nombres restants du plus petit
  digits.reverse!

  #Calculez le reste en divisant la somme des nombres par 11
  remainder =  (1..11).inject(0) {|sum, i|
    p = digits[i-1]
    q = (i <= 6) ? i+1 : i-5
    sum + p*q
  } % 11

  case remainder
    when 0,1
      check_digit === 0
    else
      check_digit === (11 - remainder)
  end
end

my_numbers = [
    xxxxx,
    xxxxx,
    xxxxx,
    xxxxx,
]

my_numbers.each do |num|
  r = validate_my_number(num)
  if r == false then
    p num
  end
end




Recommended Posts

Module de vérification de mon numéro Python publié
Mon Numpy (Python)
Mon pyproj (Python)
Mes pandas (Python)
Mon str (Python)
Mon pyautogui (Python)
Mon PySide (Python)
Mon urllib (Python)
Mon pyperclip (Python)
[Mon mémo] python
Module de collections Python
Mon ConfigParser (Python)
Mon Webdriver (Python)
Mon arcpy (Python)
Mon win32gui (Python)
Mon système d'exploitation (Python)
Module Python (mémo d'apprentissage Python ④)
Créer un module Python
importation du module d'origine python
Ma belle soupe (Python)
[Mon mémo] python -v / python -V
Astuces Python (mon mémo)
Premier nombre 2 en Python
Mon conteneur d'analyse de données python
Fonctionnement de l'importation de modules Python
[Python] ModuleNotFoundError: aucun module nommé "urlparse"
À propos du module Python venv
Module aléatoire de Numpy Génération aléatoire
Mise à jour automatique du module Python
Mon environnement d'analyse de données python
Ruby, Guide d'installation du module Python
Module de débogage et de test Python
[python] Mémorandum de génération aléatoire