Huawei社のコンピュータの検査 - 有効なアドレスを特定し、マスクIpはPythonと分類に実装しました

ニマは本当に難しい、ええと、となりますとなります仕事を見つけるために...

前スクラッチ、パイソンから開始しますが、使用にはあまりにも簡単にすべての後に、より多くの人々との将来について非常に楽観学んだことがない、と私たちは時代遅れにすることはできません、練習の手にそれをHuawei社のコンピュータ試験を受験!

トピック:

IPアドレスと分類のための対応するマスクを解決してください。要求A / B / C / D / Eクラス分類アドレス、無効なアドレスとマスクに従っては別々に分類しました。 

すべてのIPアドレスはA、B、C、D、Eの5つに分割され 

クラスAは、1.0.0.0〜126.255.255.255に取り組みます。 

クラスBは、128.0.0.0〜191.255.255.255に取り組みます。 

クラスCアドレス192.0.0.0〜223.255.255.255。 

クラスDアドレス224.0.0.0〜239.255.255.255。 

クラスEアドレス240.0.0.0〜255.255.255.255 

 

プライベートIPの範囲は次のとおりです。 

10.0.0.0〜10.255.255.255 

172.16.0.0〜172.31.255.255 

192.168.0.0〜192.168.255.255 

 
バイナリ1の正面にサブネットマスクは、連続的であり、すべて0です。(例:255.255.255.32は無効マスクであります
 

説明を入力します。

複数行の文字列。各IPアドレスとマスクは、〜で区切られています。

出力説明:

統計A、B、C、D、E、IPアドレスエラーまたはエラーマスク、プライベートIP番号は、間にスペースで区切られました。

 
アイデア:
この質問オンライン多くの方法では、タイトルが比較的簡単ですが、私は達成するための方法のいずれかを選択し、
Ipは>>遵守するかどうかを確認してください。
>>マスク準拠かどうかをチェックします。
>> Ipとマスクは、コンプライアンスIP分類の場合にしています。
>>プライベートネットワークIPかどうかを判断するために引き続き。
 
コード:
!は/ usr / binに/ Pythonの- * -コーディング:UTF-8 - * 
インポートSYS 
A = 0 
、B = 0 
、C = 0 
、D = 0 
、E = 0 
エラー = 0 
privateIp = 0 
lastcode = [ ' 254 '' 252 ' ' 248 ' ' 240 ' ' 224 ' ' 192 ' ' 128' ' 0 " ]
 デフCheckIp(IP):
     場合(IP)でlen = 4!または ''  でのIP:
         リターンFalseの
     のための範囲(4 ):
             もし INT(IP [i])と<0 または整数(IP [i])と> 255 リターンFalseの
             リターンデフCheckMask(マスク):
     場合 lenは(マスク)= 4! リターンFalseの
     他にもしマスク[0] == ' 255 ' もしマスク[1] == ' 255 ' もしマスク[2] == ' 255 ' もしマスク[3] lastcode:
                         リターントゥルー
                     リターンELIFのマスク[2]  lastcode マスク[3] == ' 0 ' リターン真の
                 リターンのelifのマスク[1]  lastcode マスク[2] ==マスク[3] == ' 0 ' リターントゥルー
             リターンのelifのマスク[0]  lastcode マスク[1] ==マスク[2] ==マスク[3] == ' 0 ' リターントゥルー
         リターンながら、真:
    入力= sys.stdin.readline()ストリップ()。
     もし入力== '' ブレーク
    IPLIST = Input.split(' ' )[0] 
    maskList = Input.split(' ')[1 ] 
    IP = IPLIST。スプリット(' ' 
    マスク = maskList.split(' ' もし CheckIp(IP)CheckMask(マスク):
         もし 1 <= INT(IP [0])<= 126 
            A + = 1
         であれば128 <= INT(IP [0])<= 191 
            B + = 1
         であれば 192 <= INT(IP [0])<= 223 
            C + = 1
         であれば 224 <= INT(IP [0])<= 239 
            D + = 1
         であれば 240 <= INT(IP [0])<= 255 
            E + = 1
         であれば、INT(IP [0])== 10 または(INT(IP [0])== 172  16 <= INT(IP [1])<= 31)または(INT(IP [0])== 192 及び INT(IP [1])== 168 ):
            privateIp + = 1
     さもなければ
        エラー + = 1枚の
     印刷(入力)
 プリント' {} {} {} {} {} {} {} ' .format(A、B、C、D、E、privateIp、エラー))

要約:

初心者、Pythonの機能を迂回の多くを取る、ループは{}中括弧が整理されていないあなたは私のC#やJavaを使用するために使用されているようなので、場合、コードは可能整列しなかったのでそう、それだけで、高い確率Iニマ開始結果はとても英語の感覚が執筆のポイントを理解することができます限り、とにかく、バーの下に他の何もより多くの注意を払っていない、完全に異なるだろう...

おすすめ

転載: www.cnblogs.com/Alwaysblue/p/12173475.html