[プログラマ/python]フルナビゲーション-小数点を検索



少数

  • 1と自分以外の薬水を持たない1より大きい自然水
  • 🤓 私の答え

    # 소수를 판별하는 함수
    def is_prime_number(x):
        if x < 2:
            return False
        for i in range(2,x):
            if x % i == 0:
                return False
            else:
                return True
    
    def solution(numbers):
        from itertools import permutations
        answer = []
        nums = []
        score = 0
        for i in range(1, len(numbers)+1):         
      	  # [['0', '1'], ['01', '10', '11'], ['110', '011', '101']]
          nums.append(list(set(map("".join,permutations(numbers, i)))))
        # [0, 1, 101, 10, 11, 110]
        answer = list(set((map(int,sum(nums,[])))))
        
        for i in range(len(answer)):
            if is_prime_number(answer[i]) is True:
                score += 1
        return score
  • 最初に作られたprime:正解でしたがパスできませんでした.
  • # 잘못된 함수
    # 2 ~ x 사이의 모든 숫자를 비교해야하는데, else 때문에 True로 종료됨
    def prime(x):
        if x == 1 or x == 0:
            return False
        for i in range(2,x):
            if x % i == 0:
              return False
            else:
              print(x,i) # 453 2
              return True
    
    print(prime(453)) # True
    
    # 올바른 함수
    def is_prime_number(x):
      if x < 2:
            return False
      for i in range(2, x):
        if x % i == 0:
          print(x,i) # 453 3
          return False
      return True
    
    print(is_prime_number(453)) # False
  • nums.append(list(set(map("".join,permutations(numbers, i)))))permutation... 使えないんじゃなかったのか、ふふ
  • answer = list(set((map(int,sum(nums,[])))))
  • ▼Python文法


    1.連結リスト(sum、extend、+)

  • +:加算により新たなリストが生成されるので、新たなリストを生成するために必要な変数を返して生成する必要がある
  • a = [7, 6, 5, 4]
    b = [1, 2, 3] 
    result1 = a + b 
    result2 = b + a 
    print("a + b =",result1) # a + b = [7, 6, 5, 4, 1, 2, 3]
    print("b + a =",result2) # b + a = [1, 2, 3, 7, 6, 5, 4]
  • 리스트1.extend(리스트2):リスト方法
  • リスト2をリスト1に貼り付ける=リスト1を変更する方法
    リストをマージする場合は、+メソッドとextendメソッドを使い分ける
    a = [7, 6, 5, 4] 
    b = [1, 2, 3] 
    c = [0, 0, 0, 0, 0] 
    a.extend(b) 
    print("a : ",a) # a :  [7, 6, 5, 4, 1, 2, 3]
    b.extend(c) 
    print("b : ",b) # b :  [1, 2, 3, 0, 0, 0, 0, 0]
  • sum(iterable, start = 0)リストや凡例などの循環可能なインデックスのデータ型は、内部に数値(整数、実数)でなければなりません.
    iterable内部のすべての要素の和をパラメータとして返します.
    2番目のパラメータは、最初に追加する数値です(defaultは0)
    iterableの和+start値を返します
  • a = [[1,2], [3,4,5]]
    b = [1,2,3]
    
    print(sum(b)) # 6
    print(sum(b,1000)) # 1006
    print(sum(a,[])) # [1, 2, 3, 4, 5] = [] + [1,2]+ [3,4,5]
    ソース
    https://blockdmask.tistory.com/558[開発者志望生]