본문 바로가기

School/3-1

프문해14주차

 

 

[예제 9-6]

for i in range(10,20): #if문활용
    if i % 2 == 0:
        print(i,end = " ")
for i in range(10,20,2):
    print(i, end = " ")

10 12 14 16 18 

 

 

 

 

[실습 9-6: 조건문과 반복문의 혼용]

mixlist = ["apple", 5, "banana", "grape",3,8,6,"melon"]
for i in mixlist:
    if type(i) == str:
        print("%s : 문자열"%(i))
    else:
        print("%s: 정수"%(i))

apple : 문자열
5: 정수
banana : 문자열
grape : 문자열
3: 정수
8: 정수
6: 정수
melon : 문자열

 

 

 

[실습 9-6 : 조건문과 반복문의 혼용]

alist =[[10,20,30],["a","b","c"],[100,200,300]]
for i in alist: # 각 요소들(리스트)를 i변수에 저장
    print(i)
    for j in i: #i는 리스트 이므로 in 다음에 사용 가능
        print(j,end = " ")
    print() #줄바꿈을 하기 위한  print()

[10, 20, 30] -->  얜 리스트여서 대괄호가 있음!
10 20 30 
['a', 'b', 'c']
a b c 
[100, 200, 300]
100 200 300 

 

 

 

 

[+ break문 쓰면 break와 가장 가까운 반복문만 탈출]

alist =[[10,20,30],["a","b","c"],[100,200,300]]
for i in alist: # 각 요소들(리스트)를 i변수에 저장
    print(i)
    for j in i: #break때문에 얘만!!빠져나옴
        print(j,end = " ")
        if j == "b":
            break
    print()

[10, 20, 30]
10 20 30 
['a', 'b', 'c']
a b <-- break문 써서 b까지만 나옴
[100, 200, 300]
100 200 300 

 

 

 

 

[이건 전체 종료]

alist =[[10,20,30],["a","b","c"],[100,200,300]]
for i in alist: # 각 요소들(리스트)를 i변수에 저장
    print(i)
    for j in i: #i는 리스트 이므로 in 다음에 사용 가능
        print(j,end = " ")
        if j == "b":
            break
    if j == "b":
        break
    print()

[10, 20, 30]
10 20 30 
['a', 'b', 'c']
a b

 

 

 

 

[구구단]

for i in range(1,10):
    for j in range(1,10):
        print("%s X %s = %s"%(i,j,i*j))

 

 

 

 

[리스트 컴프리헨션 : 한 문장으로 리스트 생성]

import random
nlist = []
for i in range(1,10):
    nlist.append(random.randint(1,11))
print(nlist)

#리스트 컴프리헨션 이용 : []빼먹으면 안됨 
nlist2 = [random.randint(1,11) for i in range(10)] #10개의 랜덤값이 리스트로 저장된다.
print(nlist2)

 

 

[리스트 컴프리헨션 퀴즈]

import random
#학생수가 20명, 점수는 0~50점 중 하나가 되도록 리스트를 생성

nlist = [random.randint(0,50) for i in range(20)]
print(nlist)

 

[문제]

- 리스트에 어떤 과목에 대한 학생 20명의 점수가 있다.

- 점수는 랜덤으로 결정되도록 하고, 50~100점 사이의 값이 저장되도록 한다.

- 점수가 70점 이상이 되는 학생은 이 과목을 pass하고, 그렇지 않은 학생들은 Fail이 된다. 

- 누가 Pass를 하고(인덱스 번호와 점수를 같이 출력), 총 몇 명이 Pass를 하는지 출력해 보시오.

import random

score = [random.randint(50,100) for i in range(20)]
print()
for i in range(1,20):
    if score[i] >= 70:
        print(i,score[i],"Pass")

 

import random
jlist = [random.randint(50,100) for i in range(20)]#20명 점수
print(jlist) #확인용
cnt = 0 #Pass한 학생 수 카운트 용
for i in range(len(jlist)):
    if jlist[i] >= 70:
        print("[%s](%s): Pass"%(i,jlist[i]))
        cnt += 1
print("총 %s명이 Pass함"%(cnt))

#<2번째 방법 : 리스트 이용 : 인덱스를 찾기 쉽지 않기 때문에 인덱스 변수 만들어줘야함>
index = 0 #인덱스 용
cnt = 0
for i in jlist:
    if i >= 70:
        print("[%s](%s): Pass"%(index,i))
        cnt += 1
    index += 1 #if문 안으로 들여쓰기 하면 안됨 --> 인덱스는 계속 증가해야하기 때문
print("총 %s명이 Pass함"%(cnt))

 

 

 

 

 

[문제]

- 학생들의 어떤 과목 점수를 딕셔너리로 저장하려 한다.

- 학생수는 20명이며 key로 학번(std1~std20)을 사용하고, value로는 과목점수 (랜덤 50~100 사이 값)를 저장할 것이다.

- ex) {"std1":75,...}

- 점수가 70점 이상인 경우 학생의 학번과 점수를 출력한다.

- 70점 이상의 학생들이 총 몇 명인지 출력한다.

- 전체 평균이 몇 인지 소수점 2째자리까지 출력한다.

import random
jdic = {}
for i in range(1,21) : #1부터 20까지 cf.  만약 range(20)쓰면 0부터 시작임
    jdic["std"+str(i)] = random.randint(50,100)
    #'std숫자'가 key로 사용되고 랜덤값이 value로 저장
print(jdic) #확인용
cnt,sum1 = 0,0
for i,j in jdic.items(): #i에는 key값(학번), j에는 value값(점수)
    sum1 += j #j에는 점수가 있으므로 모두 더함
    if j >= 70:
        print("%s: %s"%(i,j))
        cnt += 1
print("70점 이상인 학생 수 : %s명"%(cnt))
print("전체 평균: %.2f"%(sum1/len(jdic)))

 

 

[문제]

- 사고자 하는 품목을 5개 입력 받아 리스트에 저장한다.

- 입력시 이미 리스트에 있는 품목인 경우 다시 입력받는다.

- 구매한 품목을 3개 입력 받아 딕셔너리에 저장한다.(key는 번호(0,1,2), value는 입력값)

- 사고자 하는 품목 리스트와 구매한 품목 딕셔너리를 이용하여 아직 구매하지 않은 품목을 출력하시오.

buylist = []
n = 0 #초기식
while n < 5:
    buyitem = input("사고자 하는 품목 입력: ")
    if buyitem not in buylist: #입력값이 리스트에 없다면 추가
        buylist.append(buyitem)
        n += 1 #증감식, 위 조건이 참일 때만 증가하도록 했음
    else:
        print("이미 있는 품목입니다.")
print(buylist) #확인용
buydic = {}
i = 0 #초기식
while i < 3:
    buyitem = input("구매한 품목을 입력: ")
    if buyitem not in buydic.values(): #입력값은 value에 있으므로!!!!values()꼭 써줘야함
        buydic[i] = buyitem #i값은 key, 입력값은 value에 저장
        i += 1 #증감식, 위 조건이 참일 때만 증가
    else:
        print("이미 구매내역에 있습니다.")
print(buydic) #확인용
print("아직 구매하지 않은 품목")
buyitems = set(buylist) - set(buydic.values())
print(buyitems)

 

[함수1]

def oddeven1(): #함수 정의
    num = int(input("수 입력: "))
    if num%2 == 0:
        print("짝수")
    else:
        print("홀수")
## 메인파트 ##
oddeven1() #함수 호출, 매개변수 없으므로 괄호만, 이 문장 없고 출력하면 아무것도 출력 안됨

 

[함수2]

#수 입력받는 것을 함수 밖에서 입력받고 매개변수를 통해 함수로 전달
def oddeven2(num): #함수 정의, 매개변수 있고 반환 없음
    if num%2 == 0:
        print("짝수")
    else:
        print("홀수")
## 메인파트 ##
n = int(input("수 입력: "))
oddeven2(n)

 

[함수3]

def oddeven3(num): #함수 정의, 매개변수 없고, 반환 있
    num = int(input("수 입력: "))
    if num%2 == 0:
        return "짝수"
    else:
        return "홀수"
        
## 메인파트 ##
num = int(input("수 입력: "))
oddeven = oddeven3() #값을 반환하기에 반환하는 값을 변수에 저장
print(oddeven)
#print(oddeven3()) #반환 값을 따로 저장하지 않고 바로 출력에 사용

 

 

 

[함수4]

def oddeven4(num): #함수 정의, 매개변수 있고, 반환 있음
    if num % 2 == 0 :
        return "짝수"
    else:
        return "홀수"


##메인파트##
n = 0
num = int(input("수 입력: "))
oddeven = oddeven4(n)
print(oddeven)

 

 

 

[반환 여러 개 가지는 함수]

def func1():
    sum1 = 0
    for i in rang(10):
        sum1 += i
    avg = sum1//10
    return sum1, avg

## main part##
s, a = func1()
print("합: ",s, "평균: ", a)

 

 

[]

def func2():
    for i in range(10):
        if i == 5:
            return #반환할 값은 없고 함수만 종료시킴
        print(i)


## main part ##
func2()

리턴문을 아예 안쓰는게 아니라 값 없이 사용

'School > 3-1' 카테고리의 다른 글

클컴 -13주차  (0) 2023.06.11
클컴 - 12주차  (0) 2023.06.10
클컴-11주차  (0) 2023.06.10
클컴-10주차  (0) 2023.06.10
클컴-9주차  (0) 2023.06.10