[3주차-2~5] python 기초

ka02·2023년 9월 29일

cloudcamp

목록 보기
11/15

변수 선언, print

print("##택배를 보내기 위한 정보를 입력하세요.##")
name = input("받는 사람: ")
address = input("주소 : ")
weight = int(input("무게(g) : "))
fee = weight * 5

print("** 받는 사람 ==>", name)
print("** 주소 ==>", address)
print("** 배송비 ==>", fee, "원")

turtle 사용해보기

import turtle
turtle.shape('turtle')
turtle.left(100)
turtle.forward(200)
  • turtle은 파일명을 turtle로 하면 실행이 안된다.

연산

a, b, c = 3, 4, 5
print(a*b+c)
print(c+a*b)
  • *를 우선으로 수행함

type, input, print

pweight = int(input("파운드(lb)를 입력하세요 :"))
lbtokg = round(pweight * 0.453592, 5)
print(pweight, "파운드(lb)는", lbtokg,"킬로그램(kg)입니다.")

kweight = int(input("킬로그램(kg)를 입력하세요 :"))
kgtolb = round(kweight * 2.204623, 5)
print(pweight, "킬로그램(kg)는", kgtolb,"파운드(lb)입니다.")
  • round 함수 사용해서 소수점 정리

AWS 금액 구하는 프로그램 만들기

aws = input("사용하는 서비스(EC2/RDS/S3)를 입력하세요 : ")

if aws == "EC2" or aws =="ec2":
     usetime = float(input("한달 총 사용시간을 입력하세요 : "))
     useamount = float(input("수량을 입력하세요 : "))
     result = 0.0059 * usetime * useamount

elif aws == "RDS" or aws == "rds":
    usetime = float(input("한달 총 사용시간을 입력하세요 : "))
    useamount = float(input("수량을 입력하세요 : "))
    result = 0.266 * usetime * useamount
    
elif aws == "S3" or aws == "s3":
    usegb = float(input("사용량(GB)을 입력하세요 : "))
    result = 0.025 * usegb    
    
print(aws, "1개월 요금은", result, "USD 입니다.")
  • if, elif로 단순하게… input 받는 값 upper, lower 등으로 모두 대문자 소문자로 변경해도 되지만, 배운 걸로만 구성하려고 이렇게 했음!

⭐⭐ github에서 만들고 싶은 소스들은 영어로 검색해보고 공부하기!


이스케이프 문자 활용하기

큰따옴표를 연속으로 사용한 것은 같은 효과 내기
”””이랑 \n 같은 결과가 나온다

var1 = “””안녕
하세요”””

var2 = “난생\n처음”

input() : blocking 함수, enter값이 들어와야 끝나기 때문

upper, lower

upper 대문자, lower 소문자로 변환

var1=”python 안녕”
var1=var1.upper()

PYTHON 안녕

isupper() : 문자열이 모두 대문자면 True,
islower() : 문자열이 모두 소문자면 True

var1.isupper()

결과:
TRUE

count() : 문자열에서 어떤 글자가 몇 번 등장하는 지 확인

ss = "처음 파이썬을 처음으로 학습 중입니다. 파이썬은 처음이지만 재미있네요. ^^”

ss.count("처음")

결과:
3

find() : 어떤 글자가 문자열의 몇 번째에 위치하는지 찾음(문자열은 0부터 시작)

ss.find(”처음”)
ss.find(”처음”, 4) 

→ 찾을 단어, 시작위치

문자열을 거꾸로 출력하는 프로그램

var1 = "트와이스"
print("원본 문자열 ==>", var1)

결과:
원본 문자열 ==> 트와이스

print("반대 문자열 ==>", var1[3], var1[2], var1[1], var1[0])

결과:
반대 문자열 ==> 스 이 와 트

print("반대 문자열 ==>", var1[3] +var1[2] + var1[1] + var1[0])

결과:
반대 문자열 ==> 스이와트

조건문

if문, if-else문, 중첩if문, elif문

score = int(input("점수를 입력하세요."))

if score >= 90:
    print("A", end='')
else:
    if score >= 80:
        print("B", end='')
    else:
        if score >=70:
            print("C", end='')
        else:
            if score>=60:
                print("D", end='')
            else:
                print("F", end='')

print("학점입니다.")
score = int(input("점수를 입력하세요."))
if score >= 90:
    print("A", end='')

elif score >= 80:
    print("B", end='')

elif score >= 70:
    print("C", end='')

elif score >= 60:
    print("D", end='')

else:
    print("F", end='')

print("학점입니다.")

가위바위보 프로그램 만들기

import random
com_choice = random.randint(1, 100) % 3 + 1

if my_Choice == com_choice: #비김
elif  ((my_choice -com_choice) == 1) or ((my_choice-```
com_choice) == -2): #내가 이김 
else: #컴 이김 

→ 가위/바위/보를 숫자로 바꿔서 하는 방법: 더 간단하다!
아래는 하나하나 if문 만들어서 연습해보기

import random
my_score = 0
com_score = 0
for i in range(1, 6):
    comgame = random.choice(["가위", "바위", "보"])
    print("\n", i,"번째 게임")
    mygame = input("나의 가위/바위/보 ==>")
    i+=i
    
    if mygame == "가위":
        print("컴퓨터의 가위/바위/보 ==>", comgame)
        if comgame == "가위":
            print("비겼습니다.")
        elif comgame == "바위":
            print("졌습니다.")
            com_score += 1
        elif comgame == "보":
            print("이겼습니다.")
            my_score += 1

    elif mygame == "바위":
        print("컴퓨터의 가위/바위/보 ==>", comgame)
        if comgame == "가위":
            print("이겼습니다.")
            my_score += 1
        elif comgame == "바위":
            print("비겼습니다.")
        elif comgame == "보":
            print("졌습니다.")
            com_score += 1

    elif mygame == "보":
        print("컴퓨터의 가위/바위/보 ==>", comgame)
        if comgame == "가위":
            print("졌습니다.")
            com_score += 1
        elif comgame == "바위":
            print("이겼습니다.")
            my_score += 1
        elif comgame == "보":
            print("비겼습니다.")

    else:
        print("다시 입력하세요.")
        
print("\n=>나는", my_score,"번 이겼습니다.")
print("=>컴퓨터는", com_score,"번 이겼습니다.")

→ 내가 만든 코드 및 결과
score 비교해서 누가 이겼는지도 할 수 있겠지.. 마지막에 간단하게 2:2 이런식으로 출력해야 더 간단할듯

주사위 3개를 동시에 던져 동일한 숫자 나오기

import random

count_dice = 0
dice_number = 0

while True:
    count_dice += 1
    dice1 = random.randint(1, 6)
    dice2 = random.randint(1, 6)
    dice3 = random.randint(1, 6)

    if (dice1 == dice2) and (dice2 == dice3):
        dice_number = dice1
        break

print("3개의 주사위는 모두", dice_number, "입니다.")
print("같은 숫자가 나오기까지", count_dice, "번 던졌습니다.")
  • random.sample(range(1, 45), 6)
    1~45 중에 6개 랜덤숫자 샘플 받기

별 만들기

#1
print("1")
for i in range(1, 7):
    print('*' * i)
print("\n")
    
#2
print("2")
for i in range(6, 0, -1):
    print('*' * i)
print("\n")

#3
print("3")
for i in range(1,7):
    for j in range(6-i):
        print(" ", end='')
    for j in range(1, i*2):
        print("*", end="")
    print("")
print("\n")

*#3-2_몫으로 하는거 한번 더 생각해보기, 
#이렇게 하면 안됨  
#print("3-2")
#for i in range(1,10,2):
#    str_star="*" * i
#    str_space = " " * ((11//2)-i)
#    str_all = str_space+str_star
#    print(str_all)
#print("\n")*

#4
print("4")
for i in range(1, 6):
    for j in range(6-i):
        print(" ", end='')
    for j in range(1, i*2):
        print("*", end="")
    print("")
for i in range(4, 0, -1):
    for j in range(6-i):
        print(" ", end='')
    for j in range(1, i*2):
        print("*", end="")
    print("")
print("\n")

#5
print("5")
for i in range(5, 0, -1):
    for j in range(6-i):
        print(" ", end='')
    for j in range(1, i*2):
        print("*", end="")
    print("")
for i in range(1, 6):
    for j in range(6-i):
        print(" ", end='')
    for j in range(1, i*2):
        print("*", end="")
    print("")
print("\n")

#6 -> 옆에 다시 만들기 
print("6")
for i in range(1, 6):
    for j in range(12-i):
        print(" ", end='')
    for j in range(1, i*2):
        print("*", end="")
    print("")
for i in range(1, 6):
    for j in range(6-i):
        print(" ", end='')
    for j in range(1, i*2):
        print("*", end="")
    print("")


List [리스트] 사용하기

numList =[0, 0, 0, 0]
hap = 0

numList[0] = int(input("숫자 : "))
numList[1] = int(input("숫자 : "))
numList[2] = int(input("숫자 : "))
numList[3] = int(input("숫자 : "))

hap = numList[0] + numList[1] + numList[2] + numList[3]
print(hap)
print(numList)

for i in range(0, 4):
    print(numList[i])

  • 리스트 선언
    1) numList = [] #비어있는 리스트 생성
    2) intList = [10. 20. 30] #정수로만 구성된 리스트
    3) strList = [’난생처음’, ‘파이썬’, ‘Good’] #문자열로만 구성된 리트
    4) mixList = [10, 20, ‘난생’] #잘안씀
  • 콜론(:) 사용하여 범위 지정하기
    리스트 이름[시작 첨자 : 끝첨자 +1] : 리스트의 시작부터 끝까지 모두 지정함
numlist = [10, 20, 30, 40]

print(numlist[0:1])
[10]

print(numlist[0:3])
[10, 20, 30]

print(numlist[1:3])
[20, 30]

print(numlist[2:])
[30, 40]

print(numlist[4:])
[]

append(값) : 맨 뒤에 값 추가하기
insert(위치, 값) : 정해진 위치에 값 삽입하기
del() : 리스트의 항목 삭제, 인덱스없이 리스트명 넣으면 리스트 전체 삭제
remove(지울 값) : 리스트에서 특정 값 삭제
pop() : 제일 뒤의 값을 뽑아내서 값을 알려준 뒤 삭제함
count(찾을 값) : 찾을 값이 몇 개인지 개수를 세서 알려줌
sort() : 리스트의 값을 정렬함, sort(reverse=True) : 내림차순으로 정렬
reverse() : 리스트의 마지막 인덱스부터 위치가 반대로 됨 numlist.reverse()
copy() : 리스트를 새로운 리스트로 복사함

선수 이름, 접수 입력받고 총합 출력하기

  • ‘q’를 입력하면 종료
nameList = []
scoreList = []
hap = []

while True:
    name = input("선수 이름을 입력하시오:")
    nameList.append(name)

    if name == "q":
        nameList.pop()
        break
    
    else:
        score1 = int(input("태도점수: "))
        score2 = int(input("기술점수: "))
        score3 = int(input("예술점수: "))
        scoreList.append([score1,score2,score3])
        continue

print("\n****결과****")
for i in range(0, len(nameList)):
    hap.append(scoreList[i][0] + scoreList[i][1]+ scoreList[i][2])
    print(nameList[i], ":", hap[i])

Tuple (튜플)

튜플은 읽기 전용 리스트, () 사용, ()없이도 사용 가능, 수정 불가, 튜플 → 리스트 → 튜플 변환 가능

Dictionary {딕셔너리}

딕셔너리변수 = { 키1: 값1, 키2: 값2, 키3: 값3 ….}
key(단어), : value(값)
키는 중복되지 않고 유일함

  • 입력, 추가, 변경
    empDict = {'사번': 1000, '이름': '홍길동', '연락처': '010-1111-2222'}
    empDict[’연락처’] =010’ …. 
  • in : 딕셔너리 안에 키가 있는지 확인 가능
    ’이름’ in empDict → True
    ’주소’ in empDict → False
  • del : 삭제
  • 키를 이용해 값을 구하기
    print(empDict[’이름’])
  • 딕셔너리이름.keys() : 딕셔너리의 모든 키만 뽑아서 반환함
  • list(딕셔너리이름.keys()) : 출력결과에 dict_key가 붙지 않음
    list(empDict.keys())
    → [’사번’, ‘이름’, ‘부서’]
  • 딕셔너리이름.values() : 딕셔너리의 모든 값을 리스트로 만들어서 반환함
    empDict.values()
    dict_values([1000, '홍길동', '케이팝'])
  • 딕셔너리이름.items() : 튜플 형태로 구하기 empDict.values()
    → dict_items([('사번', 1000), ('이름', '홍길동'), ('부서', '케이팝')]
for key in empDict.keys() :
print( key , empDict[key])

for key in ['사번', '이름', '부서'] :
print( key, empDict[key]

결과:
사번 1000
이름 홍길동
부서 케이팝

함수

def calc(num1, op, num2):
    result = 0
    if op == "+":
        result = num1 + num2
    elif op == "-":
        result = num1 - num2
    elif op == "*":
        result = num1 * num2
    elif op == "/":
        result = num1 / num2
    else:
        print("오류입니다.계산을 다시 입력하세요.")
    return result

op = input("계산 입력(+, -, *, /): ")
num1 = int(input("첫 번째 숫자 입력 : "))
num2 = int(input("두 번째 숫자 입력 : "))

#print(calc(num1, op, num2)
print("##계산기 :", num1, op, num2, "=", calc(num1, op, num2))
  • 줄바꿈 print(”bbbb”, end=””)
    default가 print(”bbbb”, end=\n”) → 이므로 줄바꿈 안하려면 위처럼 end 설정 필요함

  • 지역변수, 전역변수
    지역변수: 한정된 지역(local)에서만 사용되는 변수
    전역변수: 프로그램 전체(global)에서 사용되는 변수

  • 암호화, 복호화
    ord, char

  • 파일 읽기와 쓰기
    readline(), readlines() : 파일 읽기
    readline→ 각 라인을 리스트 형태로 저장
    파일클래스에서 infile.readline()
    .readline() 매소드

  • sys.argv[0] :파이썬에서 작성된 프로그램을 실행할 때 인자값에 전달받아서 처리해야 하는 경우에, sys.argv에 값을 담아 처리할 수 있다.

  • 포트스캐너
    해당하는 포트를 열고 서버가 실행되는지 확인하기


3주차 후기: 3주차는 python 위주로 수업했다. 파이썬은 이전에 접했던 경험이 있어서 리눅스보다 훨씬 훨씬 무난했고, 의외로 풀 수 있는 문제들이 많아서 금방 금방 넘어갔다. 리눅스할 때는 여기저기 도움을 청했는데 파이썬으로 가니까 오히려 내가 다른 사람들을 알려줄 수 있어서 다행이었다.. 그치만.. 이제 뒤부터는 정말 몰라서 열심히 해야함.
아!아직 진도가 덜 나갔는데 4주차에 추석이 겹쳐서 갑자기 미니프로젝트를 진행.. 아직 배운 것도 많이 없는데! 관제시스템을 만들라는 프로젝트를 받았고.. 투비컨티뉴.. 다음주 3일간 있었던 일을 차근 차근 정리해서 올려야겠다.. 이미 3주 5일차에 팀을 정하고 프로젝트 기획을 했다....는 사실

0개의 댓글