매일공부

[python] 파이썬 list & 자료구조 예제 본문

Programming/Python

[python] 파이썬 list & 자료구조 예제

aram 2022. 8. 21. 20:05

- 1차원 리스트 연습문제

Q. 1~100사이의 정수 난수 10개 중에서 max값 출력하라

import random

ran_number = []
for i in range(10): 
    ran_number.append(random.randint(1, 100))
    
ran_number.sort()
print("저장된 난수 10개 :", ran_number)
print("난수 중에서 가장 큰 값 :", ran_number[9])
저장된 난수 10개 : [11, 18, 28, 33, 35, 42, 42, 72, 75, 80]
난수 중에서 가장 큰 값 : 80

 

Q. 1~100 사이의 정수 난수 10개 중에서 5의 배수의 개수와 합계 평균을 출력하라

import random

ran_number = []
ran_number_5 = []
count = 0
sum = 0

for i in range(10): 
    ran_number.append(random.randint(1, 100))
print("전체 리스트 : ", ran_number)

for j in ran_number:
    sum = j
    if j % 5 == 0:
        count += 1
        sum += sum
        ran_number_5.append(j)

if count == 0:
    print("전체 리스트 중 5의 배수가 없습니다.")

else :
    print("전체 리스트 중의 5의 배수 :", ran_number_5)
    print("리스트 내 5의 배수의 개수 :", count)
    print("리스트 내 5의 배수의 합계 :", sum)
    print("리스트 내 5의 배수의 평균 :", sum/count)
전체 리스트 : [40, 96, 86, 14, 15, 49, 10, 60, 23, 49]
전체 리스트 중의 5의 배수 : [40, 15, 10, 60]
리스트 내 5의 배수의 개수 : 4
리스트 내 5의 배수의 합계 : 49
리스트 내 5의 배수의 평균 : 12.25

 

Q. lotto 번호 생성해서 리스트에 저장하고 오름차순으로 출력하라 (로또 번호는 1~45의 숫자 중 6개의 중복값 없음)

#set() 활용x
import random
lotto = []
number = 0

while len(lotto) < 6: 
    number = random.randint(1, 45)
    if not number in lotto:
        lotto.append(number)
lotto.sort()
print(lotto)


#set() 활용
import random
lotto_set = set()
while len(lotto_set) < 6: 
    lotto_set.add(random.randint(1, 45))

lotto = list(lotto_set) 
lotto.sort()
print("** 로또 추첨을 시작합니다. **")
print("추첨된 로또 번호 >", end=" ")
for i in lotto:
    print(i, end=" ")
** 로또 추첨을 시작합니다. **
추첨된 로또 번호 > 6 14 21 30 40 42

 

Q. 입력된 문자열에서 숫자를 삭제하는 프로그램을 작성하시오
[Sample Run]
문자열 -->  IT python 1234 Flask
숫자제거 -->  IT python  Flask 

str_input = input("문자열을 입력해주세요 : ")
str_input = str_input.split(" ")

####### isdigit() 사용 #######
for value in str_input:
    if value.isdigit():
        str_input.remove(value)

####### try-except 구문 사용 #######
for value in str_input :
    try:
        if type(float(value)) == type(1.0) :
            str_input.remove(value)
    except:
        continue

print("숫자를 제거한 문자열:", end=" ")
for i in str_input:
    print(i, end=" ")

 

- 2차원 리스트 연습 문제

Q. 아래의 표를 참고하여 "학생 별" 총점과 평균을 구하라

  A B C D E
국어 점수 49 79 20 100 80
수학 점수 43 59 85 30 90
영어 점수 49 79 48 60 100
#2차원 리스트를 만들어 "학생별" 총점, 평균 구하기
kor_score = [49, 79, 20, 100,80] 
math_score = [43, 59, 85, 30, 90] 
eng_score = [49, 79, 48, 60, 100] 
midterm_score = [kor_score, math_score, eng_score]

mid_add = [0, 0, 0, 0, 0] #학생별 총점 저장

for row in midterm_score: #0 1 2
    mid = 0 #mid_add 인덱스 > col 끝날때마다 리셋
    for col in row: #0 1 2 3 4
        mid_add[mid] += col
        mid += 1

#학생별 총점 및 평균 출력
for i in range(len(mid_add)):
    print(f'학생{i+1} 총점: {mid_add[i]}, 평균: {mid_add[i]//3}')
학생1 총점: 141, 평균: 47
학생2 총점: 217, 평균: 72
학생3 총점: 153, 평균: 51
학생4 총점: 190, 평균: 63
학생5 총점: 270, 평균: 90

 

Q. 4행 3열의 2차원리스트 선언하고 아래의 값으로 초기화 한 후 차례대로 출력한 후 "리스트의 모든 값을 더한" 결과를 출력하시오.
>> [[3, 5, 9], [2, 11, 5], [8, 30, 10], [22, 5, 1]]

double_list = [[3, 5, 9], [2, 11, 5], [8, 30, 10], [22, 5, 1]]
list_sum = 0

for row in double_list:
    count = 0
    for col in row:
        count += 1
        list_sum += col
        if count == 3:
            print(col)
        else:
            print(col, end=' ')

####### 인덱스 활용 출력 #######
for row in range(len(double_list)):
    for col in range(len(double_list[row])):
        print(double_list[row][col], end=' ')
        list_sum += double_list[row][col]
    print()

print("\n행렬의 합:", list_sum)
3 5 9
2 11 5
8 30 10
22 5 1

행렬의 합: 111

 

Comments