1. Python / Говнокод #2989

    −140.6

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    from random import randint
    import sys
    import re
    
    
    def recupIP():
        s = r"(%s)" % ("\.".join(['(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)']*4))
        patt = re.compile(s)
        fn = "ip.txt"
        s = open(fn).read()
        i = 0
        global permulist
        permulist = []
        global recuplist
        recuplist = []
        while True:
            m = patt.search(s, i)
            if m:
                recuplist.append(m.group(1))          
                i = m.end()+1
            else:
                break
        
    #########convertir decimal au binaire###########
    
    def decimalbinaire(string):
        quotient=int(string)
        liste=[]
        global res
        res=""
        
        if quotient==0:
            res="00000000"
        else:
            while quotient!=1:
                liste=liste+[quotient%2]
                quotient=quotient/2
            liste=liste+[1]
            while liste!=[]:
                res=res+str(liste[-1])
                liste=liste[:-1]
            if len(res)<8:
                octet=8-len(res)
                res='0'*octet + res
        return res
    recupIP()
    
    z = 0
    binip,convert = [],[]
    i=0
    while i < len(recuplist):
    	string = str(recuplist[i])
    	string = string.split(".")
    	while z < len(string):
    		decimalbinaire(string[z])
    		binip.append(res)
    		z = z + 1
    	binip="".join(binip)
            convert.append(binip)
            i=i+1

    Насколько я понял из условия того кто это делал - программа должна брать список IP-адресов, конвертить их в бинарный формат и затем, сохраняя формат, создавать новый список.
    Реализацию я до конца понять не смог.

    Запостил: Nook, 11 Апреля 2010

    Комментарии (7) RSS

    • Странно, почему заминусовали? знатное говнецо
      def recoupIP():
      - все после .read() заменяется на вызов recuplist = patt.finall(s)
      - re.compile не нужен (см. <library>/re.py)
      - global на ровном месте

      def decimalbinaire(string):
      - нахрен там вообще list?
      - if liste!=[]: (вместо if liste:)
      - liste=liste[:-1] (вместо .pop())
      - global на ровном месте

      __main__:
      - while i < len(recuplist): ... i = i+1 - без комментариев

      (автор, похоже, видит python первый раз в жизни)
      Ответить
      • Решение предложенное этому человеку в последствии:
        [".".join(bin(int(t))[2:] for t in line.strip().split(".")) for line in open("filename")]

        И собственно усё.
        Ответить
        • Строго говоря, это решение не эквивалентно исходному говну. Но если формат фаила строго задан - тогда действительно усё
          Ответить
          • Это решение заменяет 90% исходного кода. Сделать проверку на валидность IP-адреса - это ещё несколько строчек.
            Ответить
    • С++ полезнее.
      Ответить
    • Я красавец! Я так себя люблю! Ммм. Обожаю!
      Ответить

    Добавить комментарий