so woon!

python_7일차 본문

Python/개념정리

python_7일차

xowoony 2022. 8. 10. 19:56
## ex) 반복문을 이용한 커피 자판기 프로그램 ##

coffee = 5   # 커피의 개수
while True:
    money = int(input("돈을 넣어주세요 : "))   # 사용자로 부터 돈을 입력 받는다.
    if money == 300:   # 커피값을 300원이라고 가정했을 경우
        print('커피 나왔습니다!')
        coffee -= 1   # coffee = coffee - 1
        print(f'남은 커피의 양은 {coffee}개 입니다.')
    elif money > 300:
        print(f'거스름돈 {money-300}원을 주고 커피도 줍니다!')
        coffee -= 1   # coffee = coffee - 1
        print(f'남은 커피의 양은 {coffee}개 입니다.')
    else:    # 돈을 300원보다 적게 넣었을 경우
        print(f'{money}원을 다시 돌려주고 커피는 주지 않습니다!')
        print(f'남은 커피의 양은 {coffee}개 입니다.')
    if coffee == 0:
        print('커피가 다 떨어졌습니다. 판매를 중지합니다.')
        break    # 반복문을 빠져나온다.

============실행결과===============
돈을 넣어주세요 : 600
거스름돈 300원을 주고 커피도 줍니다!
남은 커피의 양은 4개 입니다.
돈을 넣어주세요 : 300
커피 나왔습니다!
남은 커피의 양은 3개 입니다.
돈을 넣어주세요 : 200
200원을 다시 돌려주고 커피는 주지 않습니다!
남은 커피의 양은 3개 입니다.
돈을 넣어주세요 : 500
거스름돈 200원을 주고 커피도 줍니다!
남은 커피의 양은 2개 입니다.
돈을 넣어주세요 : 300
커피 나왔습니다!
남은 커피의 양은 1개 입니다.
돈을 넣어주세요 : 300
커피 나왔습니다!
남은 커피의 양은 0개 입니다.
커피가 다 떨어졌습니다. 판매를 중지합니다.








## 139page) ##

fruits = ['사과', '감귤']
count = 3   # 입력해야 할 남은 과일의 수

while count > 0:
    fruit = input('어떤 과일을 저장할까요? >>> ')
    if fruit in fruits:   # fruit변수에 있는 값이 fruits리스트에 포함되어있나?
        print('동일한 과일이 있습니다.')
        continue   # 포함되었다면 다시 반복문의 처음으로 올라간다.
    fruits.append(fruit)   # 포함되지 않았다면 리스트에 추가한다.
    count -= 1             # 횟수를 1번 줄여준다.
    print('입력이 {}번 남았습니다.'.format(count))

print('5개의 과일은 {}입니다.'.format(fruits))    

============실행결과===============
어떤 과일을 저장할까요? >>> 사과
동일한 과일이 있습니다.
어떤 과일을 저장할까요? >>> 딸기
입력이 2번 남았습니다.
어떤 과일을 저장할까요? >>> 사과
동일한 과일이 있습니다.
어떤 과일을 저장할까요? >>> 오렌지
입력이 1번 남았습니다.
어떤 과일을 저장할까요? >>> 포도
입력이 0번 남았습니다.
5개의 과일은 ['사과', '감귤', '딸기', '오렌지', '포도']입니다.



## 140page)

count = 0   # 5번 입력받기 위해 사용되는 변수
total = 0     # 합계
while count < 5:
    n = int(input('{}번째 정수를 입력하세요>>>'.format(count + 1)))
    if n <= 0:    # 0과 음수는 제외하기 위해서 넣은 코드
        print('0 이하의 정수는 처리할 수 없습니다!')
        continue    # 반복문의 처음으로 되돌아간다.
    total += n   # n의 값을 합계에 누적시킨다.
    count += 1    # 횟수를 1 증가시킨다.

print('입력된 5개의 양수의 총 합은 {}입니다.'.format(total))

============실행결과===============
1번째 정수를 입력하세요>>>1
2번째 정수를 입력하세요>>>3
3번째 정수를 입력하세요>>>0
0 이하의 정수는 처리할 수 없습니다!
3번째 정수를 입력하세요>>>6
4번째 정수를 입력하세요>>>5
5번째 정수를 입력하세요>>>5
입력된 5개의 양수의 총 합은 20입니다.





## 참고) 리스트 내포(리스트 컴프리헨션)   ##

# append 사용
num = []
for n in [1, 2, 3]:
    num.append(n*2)   # n에 2를 곱한 후 num 리스트에 추가
print('append 사용 :', num)


# 리스트 내포 사용
num2 = [n * 2 for n in [1, 2, 3]]
print('리스트 내포 사용 :', num2)
============실행결과===============
append 사용 : [2, 4, 6]
리스트 내포 사용 : [2, 4, 6]








## append, if 사용
num3 = []
li = [1, 2, 3, 4, 5]
for n in li:
    if n % 2 == 1:   # 홀수만
        num3.append(n*2)    # n에 2를 곱한 후 num3 리스트에 추가
print('append, if 사용 :', num3)

# 조건을 만족하는 데이터만 출력하는 리스트 내포
num4 = [n * 2 for n in li if n % 2 == 1 ]
print('조건 리스트 내포 사용 : ', num4)
============실행결과===============
append, if 사용 : [2, 6, 10]
조건 리스트 내포 사용 :  [2, 6, 10]





## 내장 함수  ##
## 문자열 내장 함수 ##
# chr() : 유니코드를 문자로 변환

print(chr(48))
print(chr(49))
print(chr(65))
print(chr(66))
print(chr(97))
print(chr(98))
print('=================')



# ord() : 문자를 유니코드로 변환

print(ord('A'))
print(ord('한'))
print('-----------------')

# eval() : 문자열로 된 값을 계산

print('100 + 200')
print(eval('100 + 200'))
a = 10
print(eval('a * 5'))
print(eval('min(1, 2, 3)'))   # min() : 최솟값
print('----------------------------')

# format() : 형식을 갖춘 문자열

print(format(10000, ','))    # 천단위 구분기호 넣기
print(format(10000, '_'))

============실행결과===============
0
1
A
B
a
b
=================
65
54620
-----------------
100 + 200
300
50
1
----------------------------
10,000
10_000








# 149page)

expr = input('계산식을 입력하세요 >>> ')
result = eval(expr)
print(expr + '=' + str(result))   # 문자열끼리 더하기는 연결의 결과가 나온다.
============실행결과===============
계산식을 입력하세요 >>> 1+2+3+4
1+2+3+4=10




## 숫자 내장 함수 ##
# abs() : 절대값

print(abs(10))
print(abs(-10))
print('------------------------------------------')




# divmod() : 몫과 나머지

print(divmod(10, 3))   # 결과는 튜플형식
d, m = divmod(5, 2)    # (2, 1)
print(d)    # 몫
print(m)   # 나머지
print('----------------------------------')




# max() : 최대값

print(max(1, 10))
li = [10, 8, 4, 6, 2]
print(max(li))



# min() : 최소값

print(min(1, 10))
li = [1, 3, 2, 5, 4]
print(min(li))
print('-------------------------------------')




# pow() : 거듭제곱  (** 연산자)

print(pow(10, 2))
print(pow(10, 3))
print(pow(10, -2))
print(pow(10, -3))
print('--------------------------------------')




# round() : 반올림해주는 함수
print(round(1.5))     # 일의 자리까지
print(round(1.4))
print(round(1.55, 1))    # 소수 첫째자리까지
print('--------------------------------')




# sum() : 합계
list1 = [1, 2, 3, 4, 5]
print(sum(list1))

============실행결과===============
10
10
------------------------------------------
(3, 1)
2
1
----------------------------------
10
10
1
1
-------------------------------------
100
1000
0.01
0.001
--------------------------------------
2
1
1.6
--------------------------------
15





# 153page)

money = 10000
price = 3000   # 빵 1개의 가격
result = divmod(money, price)
print(result)   # 결과는 튜플형식(인덱싱 가능)
print('빵을 {}개 사고 {}원이 남았습니다.'.format(result[0], result[1]))
============실행결과===============
(3, 1000)
빵을 3개 사고 1000원이 남았습니다.




## 시퀀스 내장 함수 ##

# enumerate()

    <형식>
    for 인덱스번호, 값 in enumerate(리스트명):
        수행할 코드

            

# ex)

a = [10, 20, 30]
for i in a:
    print(i) 

print()

for index, value in enumerate(a):
    print(index, value)
    
print()

for index, value in enumerate(a, start=1):   # 인덱스 시작 번호를 1로 정함
    print(f'{index} 번째 : {value}')
    
print()

for item in enumerate(a):
    print(item)    # 결과는 튜플형식

print('-----------------------------')

# len() : 길이(항목 수)

li = ['a', 'b', 'c', 'd']
print(len(li))

ch = 'hello'
print(len(ch))


d = {'a':'apple', 'b':'banana'}
print(len(d))


print(len(range(10)))   # 0~9
print(len(range(1, 10)))  # 1~9

============실행결과===============
10
20
30

0 10
1 20
2 30

1 번째 : 10
2 번째 : 20
3 번째 : 30

(0, 10)
(1, 20)
(2, 30)
-----------------------------
4
5
2
10
9







# ex) 총점과 평균 구하기

score = [70, 60, 55, 75, 95]   # 학생 점수 리스트
total = 0   # 총점을 0으로 초기화

for i, v in enumerate(score, start=1):
    print(f'{i}번째 학생 점수 : {v}')
    total = total + v    # total += v

print('총점 :', total)    

avg = total / len(score)  # 리스트 개수로 나누어서 평균 구함
print('평균 :', avg)
============실행결과===============
1번째 학생 점수 : 70
2번째 학생 점수 : 60
3번째 학생 점수 : 55
4번째 학생 점수 : 75
5번째 학생 점수 : 95
총점 : 355
평균 : 71.0







## sorted() : 정렬 ##

my_list = [6, 3, 1, 2, 5, 4]
sorted_list = sorted(my_list)
reverse_list = sorted(my_list, reverse=True)
print('원본 :', my_list)
print('정렬 후 (오름차순) :', reverse_list)
print('-------------------------------------')


# zip() : 튜플로 묶기

names = ['james', 'emily', 'amanda']
scores = [60, 70, 80]
for student in zip(names, scores):
    print(student)


for name, score in zip(names, scores):
    print('{}의 점수는 {}점입니다.'.format(name, score))

============실행결과===============
원본 : [6, 3, 1, 2, 5, 4]
정렬 후 (오름차순) : [6, 5, 4, 3, 2, 1]
-------------------------------------
('james', 60)
('emily', 70)
('amanda', 80)
james의 점수는 60점입니다.
emily의 점수는 70점입니다.
amanda의 점수는 80점입니다.





## 159page)

months = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
for month, day in enumerate(months):
    print('{}월={}일'.format(month+1, day))
============실행결과===============
1월=31일
2월=28일
3월=31일
4월=30일
5월=31일
6월=30일
7월=31일
8월=31일
9월=30일
10월=31일
11월=30일
12월=31일
   

'Python > 개념정리' 카테고리의 다른 글

python_9일차  (0) 2022.08.10
python_8일차  (0) 2022.08.10
python_6일차  (0) 2022.08.10
python_5일차  (0) 2022.08.10
python_4일차  (0) 2022.08.10
Comments