Python

[6장] 리스트 예제

제이지연 2022. 10. 6. 16:00

#1

  • 사용자에게 7개의 영어 단어를 입력받습니다
  • 알파벳순으로 정렬한 후 화면에 표시 합니다.
  • 또한 정렬한 결과의 첫번째 있는 단어, 중앙에 있는 단어, 마지막에 있는 단어 를 표시합니다.

출력예시 :

wordList=[]

print("단어?")
for i in range(7):
    word=input()
    wordList.append(word)
    
wordList.sort()
print("영어 단어 리스트 : ", end=" ")
print(wordList)
print("첫번째 단어:", wordList[0])
print("중앙의 단어:", wordList[3])
print("마지막 단어:", wordList[6])

 

#2 로또번호생성

  1. 원하는 숫자를 입력받는다.(1~10)
  2. 1번에서 입력받은 횟수만큼 로또 번호를 생성해 준다.

출력예시 :

import random
time = int(input("원하는 숫자를 선택하세요.(1~10): "))


for i in range(3):
    numberList=[x for x in range(1,101)]
    print(i+1,"회:", end=" ")
    for i in range(7):
        num=random.choice(numberList)
        print(num, end=" ")
        numberList.remove(num)
    print("\n")

 

 

#3

  1. 0, 1, 2로만 이루어진 5*5 행렬을 랜덤으로 생성한다.
  2. 1번 행렬에서 0, 1, 2 각 숫자의 개수를 카운트하고 화면에 출력한다.
row=5
col=5
matrixA=[]

for i in range(row):
    matrix=[]
    for j in range(col):
        matrix += [random.randint(0,2)]
    matrixA+=[matrix]
    
print(matrixA)

count0, count1, count2=0,0,0

for i in range(row):
    for j in range(col):
        number=matrixA[i][j]
        if number==2:
            count2+=1
        elif number==1:
            count1+=1
        else:
            count0+=1
            
print("0의 개수는", count0, ",1의 개수는", count1, ",2의 개수는", count2)

 

 

 

 

#1 성적 처리 프로그램

학생들의 성적을 사용자로부터 입력받아서 리스트에 저장한다. 성적의 평균을 구하고 최대점수, 최소점수, 80점 이상 성적을 받은 학생의 숫자를 계산하여 출력해보자.

STUDENTS = 5 
lst = [] 
count=0

for i in range(STUDENTS):
    value = int(input("성적을 입력하시요: "))
    lst.append(value)

print("\n성적 평균=", sum(lst) / len(lst))
print("최대점수=", max(lst))
print("최소점수=", min(lst))

for score in lst:
    if score >= 80:
        count += 1
print("80점 이상=", count)

#2 리스트에서 2번째로 큰 수 찾기

정수들이 저장된 리스트에서 두 번째로 큰 수를 찾아보자.

list=[-7, 2, 3, 8, 6, 6, 75, 38, 3, 2]

trash=max(list)
list.remove(trash)

print(max(list))
list1 = [1, 2, 3, 4, 15, 99] 

# 리스트를 정렬한다. 
list1.sort() 
  
# 뒤에서 두 번째 요소를 출력한다. 
print("두 번째로 큰 수=", list1[-2])

#3 콘테스트 평가

심판들의 점수가 리스트에 저장되어 있다고 가정하고 최소값과 최대값을 리스트에서 제가하는 프로그램을 작성해보자.

lista = [10.0, 9.0, 8.3, 7.1, 3.0, 9.0]

lista.remove(max(lista))
lista.remove(min(lista))

print(lista)
💡
하나의 리스트 안에 다양한 자료형이 공존할 수 있는가? 가능하다!

 

#4 리스트로 스택 흉내내기

스택은 데이터 구조중의 하나로서 데이터를 추가한 순서와 삭제하는 순서가 완전히 반대인 데이터 구조이다. 파이썬에는 내장 스택 유형이 없지만, 스택을 리스트로 구현할 수 있다.

stack=[]

for i in range(5):
    element=input("요소를 입력하시오: ")
    stack.append(element)   

for i in range(len(stack)):
    print(stack.pop(0))

#5 친구 관리 프로그램

 

#6 리스트 슬라이싱

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  1. 리스트 슬라이싱 만을 이용하여 리스트의 요소들의 순서를 거꾸로하면서 하나씩 건너뛰기
print(numbers[::-2])
print(numbers[9:0:-2])
#print(numbers[9:0:1])
  1. 리스트 슬라이싱 만을 이용하여 첫번째 요소만을 남기고 전부 삭제할 수 있는가?
numbers[1:] = [ ]
print(numbers)

 

#7 리스트 변경 함수

어떤 회사에서 리스트에 직원들의 월급을 저장하고 있다. 회사에서 일괄적으로 30%의 월급 인상을 하기로 하였다. 리스트의 모든 요소들을 30% 증가시키는 함수 modify()를 작성하고 테스트 해보자.

def modify(get):
    new=[]
    for i in get:
        new.append(i*1.3)
    return new

befo=[200, 250, 300, 280, 500]
print(modify(befo))
salaries = [200, 250, 300, 280, 500]

def modify(values, factor) :
    for i in range(len(values)) :
        values[i] = values[i] * factor

print("인상전", salaries)
modify(salaries, 1.3)
print("인상후", salaries)

 

#8 리스트 함축 사용하기

0부터 99까지의 정수 중에서 2의 배수이고 동시에 3의 배수인 수들을 모아서 리스트로 만들어라.

lists=[x for x in range(100)]

new=[x for x in lists if x%2==0 and x%3==0]
print(new)

#9 누적값 리스트 만들기

i 번째 요소가 원래 리스트의 0부터 i번째 요소까지의 합계인 리스트를 생성하는 프로그램을 작성하라.

origin=[10*x for x in range(1,6)]
print(origin)
new=[]
element=0

for x in origin:
    element+=x
    new.append(element)
    
print(new)
list1=[10, 20, 30, 40, 50]

list2=[sum(list1[0:x+1]) for x in range(0, len(list1))]

print("원래 리스트: ",list1)
print("새로운 리스트: ",list2)

#10 피타고라스 삼각형

피타고라스의 정리를 만족하는 삼각형들을 모두 찾아보자. 삼각형 한 변의 길이는 1부터 30이하이다.

[(x,y,z) for x in range(1,30) for y in range(x,30) for z in range(y,30) if
x**2 + y**2 == z**2]
new_list = []
for x in range(1, 30):
	for y in range(x, 30):
		for z in range(y, 30):
		    if x**2+y**2==z**2:
		        new_list.append((x, y, z))
print(new_list)

 

#11 전치 행렬 계산

origin=[[1, 2, 3],[4, 5, 6], [7, 8, 9]]
neww=[]

for i in range(len(origin[0])):
    new=[]
    for j in range(len(origin)):
        new+=[origin[j][i]]
    neww=neww+[new]
    
print(neww)
transposed = []
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

print("원래 행렬=", matrix)
# 열의 개수만큼 반복한다. 
for i in range(len(matrix[0])):
    transposed_row = []
    for row in matrix:		# 행렬의 각 행에 대하여 반복
        transposed_row.append(row[i])	# i번째 요소를 row에 추가한다. 
    transposed.append(transposed_row)

print("전치 행렬=", transposed)