파이썬 복습

김보혜·2022년 8월 6일
0

1.반복문
반복문에는 for과 while문이 있는데 둘다 모두 쓸 수 있다. 그러나 횟수에 의한 반복문은 for을 더 많이 쓰고, 조건에 의한 반복은 while을 더 많이 쓴다

1)별표출력

for i in range(1,6):
    for i in range(i):
        print('*',end='')
    print()

for i in range(1,6) = 줄을 1~5까지 반복하라

for i in range(i):
print('',end='') = 줄을 반복할 때 마다 표를 찍어라

반복문으로 별 출력의 기본 틀인데 이것을 응용하여 여러가지 문제를 풀 수 있다.

for i1 in range(1,6):  #반복횟수
    for i2 in range(6 -i1 -1):
        print(' ',end='') #공백부분
    for i3 in range(i1):
        print('*',end='') #별표부분
    print()

위 그림을 출력할려면 위에서 아래로 차례대로 순서를 봐야하며
공백또한 그림으로 보면 쉽다.

for i2 in range(6 -i1 -1):
print(' ',end='')

반복할수록 공백이 줄어드는 것을 표현했다. 그런데 그림을 보면 첫 부분이 공백이 5가아닌 4로 되어있으므로 -i1에서 -1을 했다.

2톱니 수 계산
A돕니와 B톱니가 맞물려 회전 중일때 처음 맞물린 톱니가 최초로 만나가 될 때의 톱니와 회전수 구하시오 (단,A<B)

gACtn = int(input('gA 톱니수 입력 : '))
gBCtn = int(input('gB 톱니수 입력 : '))

gA = 0
gB = 0
lessN = 0

flag = True
while flag:

    if gA != 0:
        if gA != lessN:
            gA += gACtn
        else:
            flag = False
    else:
        gA += gACtn


    if gB != 0 and gB % gACtn ==0: #최소공배수
        lessN = gB
    else:
        gB += gBCtn
print('최초 만나는 톱니수(최소공배수) : {}톱니'.format(lessN))
print('gA회전수 : {}회전'.format(int(lessN/gACtn)))
print('gB회전수 : {}회전'.format(int(lessN/gBCtn)))

톱니A와 톱니B의 최소공배수가 최초로 만나는 톱니 수이다
gA,gB라는 변수는 회전 수이고 lessN은 다시 만나는 지점이다.

flag = True
while flag:

언제 멈춘다는 조건이 없으니 flag변수를 True로 두고 진행시킨다

    if gB != 0 and gB % gACtn ==0: #최소공배수
        lessN = gB
    else:
        gB += gBCtn

일단 A,B의 최소공배수를 구해야 되는데 A,B둘다 0이여서는 안되고 톱니 B의 회전수는 A의 톱니 갯수로 나누어 떨어져야한다. 그리고 이 수를 계속 커져가며 찾아야 되므로
else:
gB += gBCtn라는 코드를 입력했다.

    if gA != 0:
        if gA != lessN:
            gA += gACtn
        else:
            flag = False
    else:
        gA += gACtn

gA도 똑같이 0이 아니라는 조건을 무조건 두고, 최소공배수가 아닐 시 계속해서 커져가며 찾으라는 코드를 입력했다.

2.조건문
조건문은 특정 조건을 걸고 그 조건에 따라 실행이 달라지는 것이다.
if은 단일 조건
if~else는 양자택일 =>A가 아니면 B해라
if~elif는 다자택일 (다중조건) =>A면 a하고,B면 b하고,C이면 c해라

요금 계산

part = int(input('업종선택(1.가정 2.대중탕 3. 공업) : '))
userWater = int(input('사용량 입력:'))
unitP = 0

if part ==1:
    unitP =- 540
    pass
elif part ==2:
    if userWater <=50:
        unitP = 820
    elif userWater > 50 and userWater <= 300:
        unitP = 1920
    elif userWater >300:
        unitP = 2400

elif part ==3:
    if userWater <=500:
        unitP = 240
    else:
        unitP = 470

print('='*30)
print('상수도 요금표')
print('-'*30)
print('사용향 : 요금')
userP = userWater*unitP
print('{} : {}원'.format(userWater,userP))
print('='*30)

이 표에서 큰 조건은 세가지 가정용 대중탕용 공업용이 나왔으니 먼저 if~elif로 조건을 나눴다.
그리고 대중탕인 part2에서 다시 사용량으로 나뉘니 if~elif을 사용해서 조건을 나누고 part3도 다시 나눴다.
그리고 마지막에 요금값인 userP라는 변수를 만들어 요금을 나오게 했다.

3.내가 만든 문제
반복문과 조건식을 통해서 복리 계산기를 만들고 싶으나 시간부족으로 조건식으로 만들고 풀어본다.

12개월 미만으로 예금 시2%
12개월~24개월 미만시 7%
24개월 이상 시 12%를 제공해주는 통장의 이자율 계산기를 만들자.

money = int(input('원금 : '))
month = int(input('기간 : '))
interM = 0

if month <12:
    interM = 0.02
elif month >=12 and month <24:
    interM = 0.07
elif month >= 24:
    interM = 0.12

allM = int(money*(1+interM)*month)



print('복리 금액 : {}'.format(allM))

위 코드에서 interM은 이자로 기간에 따른 이자율을 if~elif조건식으로 분리 후 총금액 이라는 변수을 만든 후 복리 계산식으로 계산한 계산기이다.

profile
데이터 직무로 길 찾는중

0개의 댓글