파이썬 두 리스트에서 같은 원소의 갯수 구하기.

조회수 868회
import random
yi= 0
while yi != 1:
    a =int(input('숫자를 입력하세요: '))
    b =int(input('숫자를 입력하세요: '))
    c =int(input('숫자를 입력하세요: '))
    d =int(input('숫자를 입력하세요: '))
    e =int(input('숫자를 입력하세요: '))
    listme = [a, b, c, d, e]
    gg = random.sample(range(1, 15),5)
    r1 = random.sample(range(1, 15),5)
    r2 = random.sample(range(1, 15),5)
    r3 = random.sample(range(1, 15),5)
    r4 = random.sample(range(1, 15),5)
    r5 = random.sample(range(1, 15),5)
    r6 = random.sample(range(1, 15),5)
    r7 = random.sample(range(1, 15),5)
    r8 = random.sample(range(1, 15),5)
    r9 = random.sample(range(1, 15),5)
    listme.sort()
    gg.sort()
    r1.sort()
    r2.sort()
    r3.sort()
    r4.sort()
    r5.sort()
    r6.sort()
    r7.sort()
    r8.sort()
    r9.sort()
    yii=100 #0등이 나오지 못하게 100으로 작성함
    menumber=0
    r1n=0
    r2n=0
    r3n=0
    r4n=0
    r5n=0
    r6n=0
    r7n=0
    r8n=0
    r9n=0
    n= [yii, menumber, r1n, r2n, r3n, r4n, r5n, r6n, r7n, r8n, r9n]
    n.sort(reverse=True)
    print('이번 당첨 번호: ',gg)
    print('당신의 숫자: ',listme,'맞힌개수: ',menumber)
    print('로봇1의 숫자: ',r1,'맞힌개수: ',r1n)
    print('로봇2의 숫자: ',r2,'맞힌개수: ',r2n)
    print('로봇3의 숫자: ',r3,'맞힌개수: ',r3n)
    print('로봇4의 숫자: ',r4,'맞힌개수: ',r4n)
    print('로봇5의 숫자: ',r5,'맞힌개수: ',r5n)
    print('로봇6의 숫자: ',r6,'맞힌개수: ',r6n)
    print('로봇7의 숫자: ',r7,'맞힌개수: ',r7n)
    print('로봇8의 숫자: ',r8,'맞힌개수: ',r8n)
    print('로봇9의 숫자: ',r9,'맞힌개수: ',r9n)
    print('당신은', n.index(menumber), '등!')
    mode=input('계속하시겠습니까? (y/n): ')
    if mode == 'y':
        yi=0
    elif mode == 'n':
        yi=1

인데요 여기에서 맞힌개수를 어떻게 표현하나요?

1 답변

  • 파이썬의 set 이 이런 경우 유용합니다.

    set 끼리 & 연산은 교집합을 구하게 되고, 교집합의 갯수를 len 으로 구하면 됩니다.

    
    import random
    
    def main():
        yi = 0
        while yi != 1:
            # a =int(input('숫자를 입력하세요: '))
            # b =int(input('숫자를 입력하세요: '))
            # c =int(input('숫자를 입력하세요: '))
            # d =int(input('숫자를 입력하세요: '))
            # e =int(input('숫자를 입력하세요: '))
            listme = [int(input("숫자를 입력하세요: ")) for _ in range(5)]
            gg = random.sample(range(1, 15), 5)
            # r1 = random.sample(range(1, 15),5)
            # r2 = random.sample(range(1, 15),5)
            # r3 = random.sample(range(1, 15),5)
            # r4 = random.sample(range(1, 15),5)
            # r5 = random.sample(range(1, 15),5)
            # r6 = random.sample(range(1, 15),5)
            # r7 = random.sample(range(1, 15),5)
            # r8 = random.sample(range(1, 15),5)
            # r9 = random.sample(range(1, 15),5)
            r = [random.sample(range(1, 15), 5) for i in range(9)]
            # listme.sort()
            # gg.sort()
            # r1.sort()
            # r2.sort()
            # r3.sort()
            # r4.sort()
            # r5.sort()
            # r6.sort()
            # r7.sort()
            # r8.sort()
            # r9.sort()
            # yii=100 #0등이 나오지 못하게 100으로 작성함
    
            menumber = len(set(gg) & set(listme))
            # r1n=0
            # r2n=0
            # r3n=0
            # r4n=0
            # r5n=0
            # r6n=0
            # r7n=0
            # r8n=0
            # r9n=0
            rn = [len(set(gg) & set(r[i])) for i in range(9)]
    
            n = rn + [menumber]
            n.sort(reverse=True)
            print("이번 당첨 번호: ", gg)
            print("당신의 숫자: ", listme, "맞힌개수: ", menumber)
            # print('로봇1의 숫자: ',r1,'맞힌개수: ',r1n)
            # print('로봇2의 숫자: ',r2,'맞힌개수: ',r2n)
            # print('로봇3의 숫자: ',r3,'맞힌개수: ',r3n)
            # print('로봇4의 숫자: ',r4,'맞힌개수: ',r4n)
            # print('로봇5의 숫자: ',r5,'맞힌개수: ',r5n)
            # print('로봇6의 숫자: ',r6,'맞힌개수: ',r6n)
            # print('로봇7의 숫자: ',r7,'맞힌개수: ',r7n)
            # print('로봇8의 숫자: ',r8,'맞힌개수: ',r8n)
            # print('로봇9의 숫자: ',r9,'맞힌개수: ',r9n)
            # print('당신은', n.index(menumber), '등!')
            for i in range(9):
                print(f"로봇 {i+1}의 숫자: {r[i]} ,맞힌개수: {rn[i]}")
            print(f"당신은 {n.index(menumber) + 1} 등")
            mode = input("계속하시겠습니까? (y/n): ")
            if mode == "y":
                yi = 0
            elif mode == "n":
                yi = 1
    
    
    if __name__ == "__main__":
        main()
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)