ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Excercise 2(enumerate(), zip(), for문, while문 활용)
    Python 2023. 3. 26. 13:59

    1.  자료 구조 심화 

    • 다음의 (과일이름, 과일개수) 튜플로 구성된 리스트를 활용하여 다음의 문항을 해결하세요
    In [ ]:
    import numpy as np
    
    fruit = [('apple', np.random.randint(1,11)), 
             ('banana', np.random.randint(1,11)),
             ('cherry', np.random.randint(1,11)),
             ('grape', np.random.randint(1,11)),
             ('orange', np.random.randint(1,11)),
             ('strawberry', np.random.randint(1,11)),
             ('melon', np.random.randint(1,11))]
    

    문항1] fruit 리스트의 홀수번째 인덱스의 튜플만을 담은 fruit02 리스트를 만들고 출력하세요.

    In [ ]:
    fruit02 = []
    for i, v in enumerate(fruit):
        if (i%2) != 0:
            fruit02.append(v)
    print(fruit02)
    

    out [ ]:

    [('banana', 2), ('grape', 7), ('strawberry', 8)]
    

    문항2] sum()함수를 사용하지 않고 fruit 리스트의 과일 개수의 합을 구하세요.

    In [ ]:
    f_count=0
    for i,v in fruit:  #unpack
        f_count += v
    
    f_count
    
     
    Out[ ]:
    32

    문항3] sort()함수를 사용하지 않고 fruit리스트를 과일명순으로 정렬하여 fruit03리스트를 만드세요.

    In [ ]:
    fruit03 = []
    
    for f, y in enumerate(fruit):
        if f == 0: 
            fruit03.append(y) # 첫번째 과일 리스트 추가
        else:
            for i, j in enumerate(fruit03):
                if y[0] < j[0]:  # y가 j보다 앞순서이면 i번째 앞에 y 삽입
                    fruit03.insert(i, y)
                    break
                # 조건 충족 시 반복 멈춤
            else:
                fruit03.append(y) 
    
    print(fruit03)
    
    [('apple', 1), ('banana', 2), ('cherry', 5), ('grape', 7), ('melon', 6), ('orange', 3), ('strawberry', 8)]
    
    • 다음의 alist, blist를 활용하여 다음의 문항을 해결하세요.

    문항4] alist의 값을 key로 blist의 값을 value로 하는 dictionary를 생성하여 my_dict에 저장하세요.

    In [ ]:
    alist = ['Korean', 'English', 'Math']
    blist = ['100', '90', '80']
    
    my_dict = dict(zip(alist,blist))
    my_dict
    
     
    Out[ ]:
    {'Korean': '100', 'English': '90', 'Math': '80'}

    2. 무작위로 4자리 숫자 생성하기 

    • 무작위의 4자리 숫자를 생성하는 프로그램
    • 단, 각 자리의 숫자가 모두 다르도록 생성
    • 예: 1234(O), 1222(X)
    • [hint] np.random.randint(시작위치, 끝위치)를 사용하면 해당 범위의 무작위값 생성(단, 끝위치는 포함하지 않음)
    In [ ]:
    import numpy as np
    # np.random.randint(1, 10000)
    
    while True:
        r_number = str(np.random.randint(1000, 10000))
        if len(set(r_number)) == 4 :
            print(r_number)
            break
    
    print(r_number)

    Out [ ]:

    4150
    

    3.  숫자맞추기 야구게임 

    • 프로그램이 시작되면 컴퓨터는 무작위로 모든 자리수의 숫자가 다른 4자리 숫자를 생성(2번 과제 활용)
    • 사용자는 4자리 숫자를 입력 : 4자리 숫자가 아닌 경우 다시 입력받음
    • 숫자가 전부 틀리면 '아웃'
    • 위치와 숫자가 모두 맞으면 S
    • 숫자는 맞지만 위치가 틀리면 B
    • 예시) 정답이 1234
      • 사용자가 7892 입력 -> 1B
      • 사용자가 1582 입력 -> 1S1B
    In [ ]:
    #무작위 숫자 생성
    import numpy as np
    
    #모든 자리수의 숫자가 다른 4자리 숫자 생성
    while True: 
        number_answer = str(np.random.randint(1000,10000))
        if len(set(number_answer)) == 4:
            # print(number_answer)
            break
    
    #숫자 입력받기
    while True:
        number_user = input('모든 자리수의 숫자가 다른 4자리 숫자를 입력하세요')
        #4자리 숫자가 아닌 경우
        if len(number_user) != 4:   
            print('4자리 숫자가 아닙니다. 다시 입력하세요!')
            continue  # 4자리숫자 입력할때까지 다음반복으로 넘어감
        
        #정답인 경우
        if number_answer == number_user:  
            print('정답입니다!')
            break   #정답이면 멈춤!
        
        strike = 0
        ball = 0
        for i in range(4):
            if number_user[i] == number_answer[i]:  #위치와 숫자가 모두 맞는 경우 strike에 1점씩 더함
                strike += 1
            elif number_user[i] in number_answer:   #숫자만 맞는 경우 ball에 1점씩 더함
                ball += 1
        
        if strike == 0 and ball == 0:
            print('아웃!!')
            break
        
        else: 
            print(strike,'S',ball,'B')
                
    
    1360
    2 S 0 B
    아웃!!
    

    'Python' 카테고리의 다른 글

    Excercise 1(자료구조, 리스트 활용하기)  (0) 2023.03.26
Designed by Tistory.