ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Python 기초 공부 - 2
    Programming/Python 2021. 3. 4. 23:53
    반응형

    2일차
    반복문

     

    num1 = 6
    num1 += 1 # num1 = num1 + 1
    num2 = 7
    num2 -= 5 # num2 = num2 - 1
    num3 = 8
    num3 /= 2 # num3 = num3 / 2
    print(num1,num2,round(num3))
    num1 = 1
    num1 *= 3
    num2 = 2
    num2 **= 3 # ^ , ** 
    print(num1, num2)

    7 2 4

    3 8

    # 3항 연산자
    x = 5
    ans = 'Non-negative' if x>=10 else 'Negative'
    print(ans)

    Negative

    city = ' '# 문자열 거짓, 공백도 문자열, 숫자:0, list:[], dict:{}, tuple:() 모두 거짓
    if city: # 조건이 참인 경우만 실행
        print('empty city')

    empty city

    # 날짜의 입력은
    # 특수하게 해석해서 년월일로 해석
    import datetime
    dt = datetime.datetime.now() # 함수는 ()를 사용해야함
    print(dt)
    print()
    #데이터입력
    age = input("생년월일(19951031)을 입력하시오")
    #데이터처리
    year = int(age[0:4]) # 마지막은 미포함
    month = int(age[4:6]) 
    day = int(age[6:])
    # 빼기연산
    # 분산 : 상계방지 (제곱)
    year_diff = dt.year - year
    month_diff = dt.month - month
    day_diff = dt.day - day
    if day_diff < 0: # 일 내림
        month_diff -=1
    if month_diff <0: # 월 내림
        year_diff -=1
    #데이터 출력
    print("당신의 나이는 ", year_diff + 1)
    if year_diff < 18:
        print("당신은 미성년자입니다.")
    else:
        print("당신은 미성년자가 아닙니다.")

    # 데이터 입력 -> 처리(연산자), 제어문(판단문, 한가지 규칙을 여러데이터에 적용: 반복문)

    # for
    # for(i=0; i<100; i++): 인덱스 오버플로우
    # {}: 인덱스 오버플로우
    # for in 문

    # 데이터를 이용하는 방법
    elements = ["earth","air","fire","water"]
    for i in elements: # i = "earth" # Collections, iterator, generator, enumerate
        print(i, end = " ") # 공백

    # Collections : list, tuple, dict, set
    # iterator : range : (i=0; i<100; i++): 와 같은 방법으로 사용(start, end, step)
    # generator : 실시간 데이터 생성, 메모리를 차지하지 않음
    # enumerate : 매핑을 해줌 0:earth, 1:air, 2:fire

    for i in range(5): # 최종값
        print(i)

    0 1 2 3 4

    #  python 은 오버로딩이 없음 : default 값으로 처리
    for i in range(2,5):
        print(i)

    2 3 4

    for i in range(0,10,2): # start, end, step
        print(i)

    0 2 4 6 8

    # 인덱스를 이용하는 방법
    for i in range(4):
        print(i)
        print(elements[i])

    0 earth 1 air 2 fire 3 water

    # range는 객체(object)다
    ra = range(4)
    print(ra)
    print(list(ra)) #리스트로 캐스팅
    

    range(0, 4) [0, 1, 2, 3]

    print(list(range(5,-1,-1)))
    # 증가변수, 누적변수
    sum = 0
    for x in range(1,11):
        #sum = sum + x
        sum+=x
    print(sum)

    55

    # 중첩된 for 문
    for x in range(2,10):
        print()
        for y in range(2,10):
            print(y, '*', x, '=', x*y, '\t', end = " ")

     

    # 내장 리스트 : 동적으로 데이터 생성
    [i for i in range(10)]

    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

    {i: i**3 for i in range(10)}

    {0: 0, 1: 1, 2: 8, 3: 27, 4: 64, 5: 125, 6: 216, 7: 343, 8: 512, 9: 729}

    [i**2 for i in range(10) if i%2 == 0]

    [0, 4, 16, 36, 64]

    #for r in rows :
    #    for c in cols:
    #        (r,c)
    rows = range(1, 5)
    cols = range(10,15)
    vectors = [(r,c) for r in rows for c in cols]
    vectors
    

    [(1, 10), (1, 11), (1, 12), (1, 13), (1, 14), (2, 10), (2, 11), (2, 12), (2, 13), (2, 14), (3, 10), (3, 11), (3, 12), (3, 13), (3, 14), (4, 10), (4, 11), (4, 12), (4, 13), (4, 14)]

    # 문자열 연산자 +, * (반복)
    # 앞이 참이면 뒤의 것은 계산하지 않음.
    # True == 1, False == 0
    ["3의배수 " * (i%3==0) + "5의배수" * (i%5 == 0) or i for i in range(1,21)]

    [1, 2, '3의배수 ', 4, '5의배수', '3의배수 ', 7, 8, '3의배수 ', '5의배수', 11, '3의배수 ', 13, 14, '3의배수 5의배수', 16, 17, '3의배수 ', 19, '5의배수']

    # 정수를 입력받아서 A,B,C,D,F 학점으로 출력하시오 (점수를 학점으로 mapping 시키시오)
    jumsu = int(input("점수를 입력하시오 : "))
    pf = int()
    
    if jumsu >= 90: 
        pf = 'A'
    elif jumsu >= 80:
        pf = 'B'
    elif jumsu >= 70:
        pf = 'C'
    elif jumsu >= 60:
        pf = 'D'
    else:
        pf = 'F'
        
    print("당신의 학점은 : " , pf)
        
    #d = {'one':1,'two':2} #dict

    점수를 입력하시오 : 65

    당신의 학점은 : D



    # 번호 국어 영어 수학 점수를 입력하는 프로그램 작성 (2명 분)
    # 2차원 리스트로 작성
    
    final = []
    for i in range(2):
        sungjuk=[]
        num = input("번호를 입력하시오 : ")
        name = input("이름을 입력하시오 : ")
        kor = int(input("국어 점수 입력 : "))
        eng = int(input("영어 점수 입력 : "))
        math = int(input("수학 점수 입력 : "))
        sungjuk.append(num)
        sungjuk.append(name)
        sungjuk.append(kor)
        sungjuk.append(eng)
        sungjuk.append(math)
        final.append(sungjuk)
    print(final)
    # 문제 합계와 평균을 구해서 추가시켜 보시요
    
    final = []
    prr = 3
    for i in range (prr):
        sungjuk=[]
        grade = str()
        hap1 = float()
        hap = float()
        num = input("번호를 입력하시오 : ")
        name = input("이름을 입력하시오 : ")
        kor = float(input("국어 점수 입력 : "))
        if kor >= 101: 
            print("다시입력하세요.")
            break
        eng = float(input("영어 점수 입력 : "))
        if eng >= 101: 
            print("다시입력하세요.")
            break
        math = float(input("수학 점수 입력 : "))
        if math >= 101: 
            print("다시입력하세요.")
            break
        sungjuk.append(num)
        sungjuk.append(name)
        sungjuk.append(kor)
        sungjuk.append(eng)
        sungjuk.append(math)
        hap1 = (kor+eng+math)
        hap = hap1/3
        hap = round(hap,2)
        if hap >= 90:
            grade ="A"
        elif hap >= 80:
            grade ="B"
        elif hap >= 70:
            grade ="C"
        elif hap >= 60:
            grade ="D"
        else: 
            grade ="F"
        sungjuk.append(hap1)
        sungjuk.append(hap)
        sungjuk.append(grade)
        final.append(sungjuk)
    print(final)
    # 정렬하고 싶은 경우 (이름으로 정렬)
    # 기본 데이터함수 : str, int, float, list, set, tuple
    # 파이썬은 모든 것은 객체(변수+함수) : 사용자 정의 데이터 타입.
    final.sort()
    # 번호순
    # 함수를 키로한다
    # 이름순
    def getKey(a1):
        return a1[1]
    final.sort(key=getKey, reverse = True) # 내림차순 큰것부터 작은순으로\
    print(final)
    # lambda 함수 : 무명함수, 간단한 함수를 작성할 때 사용
    final.sort(key=lambda row:row[1], reverse = True)
    final

    # 문제 number guess (숫자 맞추기 게임 1:1 )
    # 1. 컴퓨터는 숫자를 랜덤으로 발생시킵니다. (1 ~ 100 )
    # 2. 사용자는 숫자를 입력합니다.
    # 3. 컴퓨터가 낸 숫자와 사용자가 입력한 숫자가 일치하는지 확인하고 일치하면 확인하고
    # 다시 다음 게임으로 진행합니다.
    # 4.만약 맞추지 못하였으면 사용자가 입력한 숫자가 컴퓨터가 가지고 있는
    # 수 보다 큰지 작은지를 알려줍니다.
    # 5.무한루프보다 진행하던 게임은 q 가 눌리면 종료합니다
    # 6. 몇회만에 맞추었는지를 확인하여 출력해 줍니다.
    # 7. 총 진행횟수하고 guess횟수를 누적시킨다음에 평균 시도 횟수를 출력하시오

    # 경우의 수는 3가지 (정답, 작은경우, 큰경우)
    # 전체게임 회수와 이긴회수
    # 평균 시도회수를 계산하기 위해서 변수를 정의하고 계산
    
    from random import randint
    count = int()
    ss = int()
    n = randint(1, 101)
    while True:
        sa = input(" 1 ~ 100 사이중 숫자를 입력하시오 . (Q to exit)")
        if sa == 'Q':
            qw = count/ss
            print(" 탈출입니다. ","성공횟수", ss , "총 도전횟수", count, "평균 도전횟수", qw,"입니다.")
            break
        if int(sa) > 100:
            count = count + 1
            print("100이하만 입력하시오.")
        if n == int(sa):
            ss = ss + 1
            print(" 성공입니다 ","성공횟수",ss , "총 도전횟수", count)
        if n > int(sa):
            count = count + 1
            print(" 랜덤수가 더 큽니다. ")
        if n < int(sa):
            count = count + 1
            print(" 적은수가 더 큽니다. ")
    # 문제 1 제곱미터로 입력되는 아파트 면적을 평형으로 계산하여 종류 판정
    # 30평형을 기준으로 판정하는 프로그램 작성
    # 소형 (17) 중소형 (25) 중형 (30)
    # 평형수 = 제곱미터 / 3.305
    
    jekop = float(input(" 면적을 입력하시오 "))
    pyung = jekop/3.305
    print(pyung)
    if pyung >= 30:
        print("중형아파트")
    elif pyung >= 25:
        print("중소형아파트")
    elif pyung >= 17:
        print("소형아파트")
    else:
        print("다시입력하세요.")
    
    # 문제 2 날 수를 입력하면 이를 초로 변경하는 프로그램 작성
    
    date = int(input("일수를 입력하시오"))
    si = int(input("시을 입력하시오 1~24시중"))
    if si> 60:
        print("다시입력하세요.")
        break
    bun = int(input("분를 입력하시오 1~60분중"))
    if bun> 60:
        print("다시입력하세요.")
        break
    date1 = (date*24)*60
    date1_1 = date1*60
    si1 = si*60
    bun1 = bun*60
    hap = 
    
    print(date,"분은 초로 환산할시",cho,"초입니다")
    # 소득세 계산 : 소득 세율표를 구해보고 이를 이용하여 소득이 들어오면 세금이
    # 얼마인지 계산하시오 (연봉, 단순히 세율만 적용합니다.)
    
    income = int(input(" 연봉을 입력하시오 . "))
    inco = (income*3.3)/100
    con = income-inco
    
    print("세후 연봉은 ",round(con,-1),"원 입니다.")
    # 놀이공원 매표소 단체 입장료 계산하기
    # 조건 : 팀별 인원 구성을 입력 (초등, 청소년, 일반인, 경로대상) 하면 입장료 소견표에
    # 정산요금 : 초등(5000원), 청소년(10000원), 일반인(15000원), 경로대상(3000원)
    # 팀별 할인 카드 확인
    # 카드 없음 : 할인 무 , 일반카드 :10%, VIP : 20%
    
    print(" 놀이공원 매표소 단체 입장료 계산기입니다. ")
    halin = str()
    gg = str()
    
    cho = 5000
    chung = 10000
    liban = 15000
    gyung = 3000
    
    insu = int(input(" 초등생은 몇명인가요? "))
    insu2 = int(input(" 청소년은 몇명인가요? "))
    insu3 = int(input(" 일반인은 몇명인가요? "))
    insu4 = int(input(" 경로자는 몇명인가요? "))
    
    cho1 = 5000*insu
    chung1 = 10000*insu2
    liban1 = 15000*insu3
    gyung1 = 3000*insu4
    chong = cho1+chung1+liban1+gyung1
    
    halin = input("할인카드가 있으신가요? y or n")
    if halin == "y":
        gg = input(" VIP이신가요? y or n")
    if gg == "y":
        chho1 = chong/20
        print("총 가격은", chong-chho1,"입니다.")
    if gg == "n":
        chho = chong/10
        print("총 가격은", chong-chho,"입니다.")
    
    
    
    if halin == "n":
        print("총 가격은", chong,"입니다.")
    
    
    ele = int(input("초등생 몇명?"))
    mid = int(input("청소년 몇명?"))
    adult = int(input("일반 몇명?"))
    old = int(input("경로 몇명?"))
    
    
    ele1 = 5000*ele
    mid1 = 10000*mid
    adult1 = 15000*adult
    old1 = 3000*old
    tot = ele1+mid1+adult1+old1
    
    dis = int(input("카드X:0, 일반:1,VIP:2"))
    se = [tot,tot*0.9,tot*0.8]
    print("총요금",se[dis],"원 입니다.")
    # for
    # for(i=0; i<100; i++): 인덱스 오버플로우
    # {}: 인덱스 오버플로우
    # for in 문
    num = int(input("숫자를 입력하시오"))
    for i in range(num):
        for j in range(i+1):
            print("*", end = "")
        print()

    숫자를 입력하시오 5

    *

    **

    ***

    ****

    *****

    num2 = int(input('숫자 입력'))
    for i in range(num2):
        for k in range(num2-i):
            print(" ", end='')
        for j in range(i+1):
            print("*",end='')
        print()

    숫자 입력5

    *

    **

    ***

    ****

    *****

    n = int(input('숫자 입력'))
    for i in range(n):
        for k in range(n-i):
            print("@", end = '')
        for j in range(i*2 - 1):
            print(" ", end = '')
        for j in range(n-i):
            print("@", end = '')
        print()

    n = int(input('숫자 입력'))
    for i in range(n):
        for k in range(n-i):
            print("+", end = '')
        for k in range(n+1):
            print(" ", end = '')
        for k in range(n-1):
            print("+", end = '')
        print()

    n = int(input('숫자 입력'))
    for i in range(n):
        for j in range(n-i):
            print(" ", end='')
        for j in range(i+1):
            print("*", end='')
        for j in range(i):
            print("*", end='')
        print()

    print("")
    for i in range(1,11):
        print(" "*(10-i), "*"*(i*2-1))

    n = int(input('숫자 입력'))
    n1 = n-1
    for i in range(n):
        for j in range(i+1):
            print("*",end='')
        print()
    for i in range(n1):
        for k in range(n1-i):
            print("*",end='')
        print()

     

    반응형

    'Programming > Python' 카테고리의 다른 글

    Python 기초 공부 - 4  (0) 2021.03.06
    Python 기초 공부 - 3  (0) 2021.03.05
    Python 기초 공부 - 1  (0) 2021.03.04
    Python PEP8 요약  (0) 2021.02.06
    Flask를 이용하여, 웹 구축 - 1  (0) 2020.09.06
Designed by Tistory.