숫자 자료형
print(5)
print(-10)
print(3.14) 실수, 정수 상관 없음.
print(100000000)
print(5+3)
print(2*8)
print(3*(3+1)) 연산 모두 가능
문자 자료형
print(’풍선’)
print(’butterfly’)
print(’h’ * 5) 문자열과 정수를 연산을 통하여 출력이 가능하다.
boolean 형이라 함은 참과 거짓을 표시해줌.
print(5>10) → 거짓이므로 False를 출력한다
print(10>5) → 참이므로 True를 출력한다.
변수
ex) 애완동물을 소개해주세요
print(”우리집 강아지의 이름은 연탄이에요”)
print(”연탄이는 4살이고, 산책을 아주 좋아해요.”)
print(”연탄이는 어른일까요? True”)
→ 문자열의 크기가 커지면 관리하기 복잡하다.
animal = “강아지”
name = “연탄이”
age = 4
hobby = “산책”
is_adult = age >=3
print(”우리집” + animal +”의 이름은” + name +”이에요.”)
print(name +”는” + str(age) +”살이고,”+hobby+”을 아주 좋아해요.”)
print(name+”는 어른일까요?”+str(is_adult))
Python
복사
이런식으로 변수를 활용 가능하다.
→정수형인 age, boolean형인 is_adult는 문자열과 혼합사용시 str을 씌어주어야 에러가 뜨지 않는다.
여러 문자열을 합치는 방법은 +도 있지만, ‘,’ 콤마를 사용하는 방법도 있다.
print(name , "는 " ,age ,"살이며, ", hobby, "을 아주 좋아해요")
Python
복사
이 경우에는 str로 감싸주지 않아도 되며 콤마 사용 시 자동적으로 띄어쓰기가 실행된다.
주석
#을 사용하면 그 라인은 전체 주석처리가 된다.
여러 문장을 주석처리하고 싶다면
작은 따옴표 3개를 각각 맨 앞, 맨 뒤에 배치 시키면 된다. ‘’’ 안녕 ‘’’
퀴즈
Q) 변수를 이용하여 다음 문장을 출력하시오.
변수명 : station
변수값 : “사당”
출력 문장 : XX행 열차가 들어오고 있습니다.
정답)
station = "사당"
print(station +"행 열차가 들어오고 있습니다.")
Python
복사
연산자
print(1+1) #2
print(3-2) #1
print(5*2) #10
print(6/3) #2
print(2**3) # 2^3 = 8
print(5%3) # 나머지 구하기 2
print(5//3) # 몫 구하기 1
print(10>3) #True
print(4>=7) #False
print((3>0) and (3 <5)) #True
print((3>0) & (3 <5)) 두갠 동일.
print((3>0) or (3>5)) #True\
print((3>0) | (3>5)) 두갠 동일.
print(2+3*4) #14
print((2+3)*4) #20
number = 2+3*4
print(number) #14
number = number +2 #16
number +=2 두갠 동일.
number %=2 #0
Python
복사
숫자 처리함수
print(abs(-2)) #2 -> 절댓값 출력함수.
print(pow(4, 2)) # 4^2 -> 4의 2승.
print(max(5, 12)) #12 -> 최댓값
print(min(5, 12)) #5 -> 최솟값
print(round(3.14)) #3 -> 반올림
*math 라이브러리를 이용가능하기도 한다.
from math import *
print(floor(4.99)) # 4 -> 내림
print(ceil(3.14) #4 -> 올림
print(sqrt(16)) #4 -> 제곱근
Python
복사
랜덤함수
from random import*
print(random()) # 0.0 ~1.0 미만의 임의의 값 생성
print(random() * 10) # 0.0 ~ 10.0 미만의 임의의 값 생성.
print(int(random() * 10)) # 0 ~ 10 미만의 임의의 값 생성.
print(int(random() * 10) + 1) # 1~10 이하의 임의의 값 생성
print(randrange(1, 46)) # 1~ 46미만의 임의의 값 생성.
print(randint(1, 45)) # 1~45 이하의 임의의 값 생성. -> range는 오른쪽 끝값이 포함 x
Python
복사
퀴즈
아래 조건에 맞는 오프라인 모임 날짜를 정해주는 프로그램을 작성하세요.
조건 1: 랜덤으로 날짜를 뽑아야 함
조건 2: 월별 날짜는 다름을 감안하여 최소 일수인 28일 이내로 정함
조건 3: 매월 1~3일은 스터디 준비를 해야하므로 제외
정답)
from random import*
day = randint(4,28)
print("오프라인 스터디 모임 날짜는 매월",day,"일로 선정되었습니다.")
Python
복사
문자열
sentence = '나는 소년입니다'
print(sentence) #나는 소년입니다
sentence2 = "python is easy"
print(sentence2) #python is easy
sentence3 = """
im a boy,
python is easy
"""
Python
복사
모두 가능하다.
슬라이싱
jumin = "990525 - 1234567"
print("성별 :" + jumin[7]) #성별 : 1
print("연 : " + jumin[0:2]) #0부터 2직전까지 (0,1) 연 : 99
print("월 : " + jumin[2:4])
print("생년월일 : " + jumin[:6]) #처음부터 6직전까지
print("뒤7자리 : " + jumin[7:]) #7부터 끝
print("뒤 7자리(뒤에부터) : " + jumin[-7:] #맨 뒤에서 7번째부터 끝까지.
Python
복사
문자열의 맨 앞은 항상 0번째임을 기억하자.
문자열 처리함수
python = "Python is Amazing"
print(python.lower()) #소문자로
print(python.upper()) #대문자로
print(python[0].isupper()) #대문자인가요?
print(len(python)) #길이 반환
print(python.replace("Python", "Java")) #문자열 바꿔주기.
index = python.index("n") #n의 위치가 어디있는지.
index = python.index("n", index+1)) #뒤의 index+1 은 start위치, 즉 첫번째 n의 위치 다음부터
print(python.find("Java")) # -1 없을 경우 -1을 출력. 이를 index로 하면 오류가 난다.
Python
복사
find 함수와 index 함수의 다른 점은 index는 찾고자 하는 것이 문자열에 없을 시 오류가 난다.
문자열 포맷
방법1
%를 사용하는 방법
print("나는 %d살입니다." % 20) # %d는 정수값을 집어넣을 수 있음.
print("나는 %s을 좋아해요." % "파이썬") # %s 는 문자열을 집어넣을 수 있음. string
print("Apple은 %c로 시작해요." % "A") # %c는 한 문자. character.
#%s로 %d, %c를 포함해 사용할 수 도 있다.
print("나는 %s살이고 %s색을 좋아해요." %(20, "파란"))
Python
복사
방법2
print("나는 {}살입니다.".format(20))
print("나는 {}색과 {}색을 좋아해요.".format("파란", "빨간"))
print("나는 {0}색과 {1}색을 좋아해요.".format("파란", "빨간"))
#나는 파란색과 빨간색을 좋아해요.
print("나는 {1}색과 {0}색을 좋아해요.".format("파란", "빨간"))
#나는 빨간색과 파란색을 좋아해요.
#->숫자 순서대로 출력된다.
Python
복사
방법3
print("나는 {age}살이며, {color}색을 좋아해요.".format(age = 20, color = "빨간")
Python
복사
방법4
age = 20
color = "빨간"
print(f"나는 {age}살이며, {color}색을 좋아해요.")
Python
복사
탈출문자
# \n : 줄바꿈
print("백문이 불여일견\n백견이 불여일타")
# \" \': 문장 내에서 따옴표
print("저는 "윤태강" 입니다.") #이러면 오류 발생!
print("저는 '윤태강' 입니다")
print('저는 "윤태강" 입니다')
print("저는 \"윤태강\" 입니다")
# \\ : 문장 내에서 \
# \r : 커서를 맨 앞으로 이동
print("Red Apple\rPine") #PineApple
# \b : 백스페이스 (한글자 삭제)
print("Redd\bApple") #RedApple
# \t: 탭
print("Red\tApple") #Red Apple
Python
복사
퀴즈
문제) 사이트별로 비밀번호를 만들어주는 프로그램을 작성하시오.
예) http://naver.com
규칙1: http:// 부분은 제외 → naver.com
규칙2: 처음 만나는 점(.) 이후 부분은 제외 → naver
규칙3: 남은 글자 중 처음 세자리 + 글자 갯수 + 글자 내 ‘e’ 개수 + ‘!’로 구성
예) 생성된 비밀번호 : nav51!
url = "http://naver.com"
my_str = url.replace("http://","")
my_str = my_str[:my_str.index(".")]
#my_str[0:5] -> 0~5 직전까지. (0, 1, 2, 3, 4)
password = my_str[:3]+str(len(my_str)) + str(my_str.count("e")) + "!"
print("{0} 의 비밀번호는 {1} 입니다.".format(url, password))
Python
복사
리스트
#지하철 칸별로 10명, 20명, 30명
subway1 = 10
subway2 = 20
subway3 = 30
subway = [10, 20, 30]
print(subway)
subway = ["유재석", "조세호", "박명수"]
print(subway)
#조세호씨가 몇 번째 타고 있는가?
print(subway.index("조세호")) #문자열과 동일하게 0부터 시작. 조세호는 1
#하하씨가 다음 정류장에서 다음 칸에 탐.
subway.append("하하")
#정형돈씨를 유재석 / 조세호 사이에 태워봄
subway.insert(1, "정형돈")
#지하철에 있는 사람을 한 명씩 뒤에서 꺼냄
subway.pop()
#같은 이름의 사람이 몇명?
subway.count()
Python
복사
append() → 리스트에 추가
insert() → 리스트 특정 위치에 추가
pop() → 리스트 맨 뒤에서 꺼냄
count() → 리스트 안의 요소 카운트
index() → index
a = list(range(N)) 0~N-1까지의 숫자가 들어간 a 리스트 생성
a = list(range(1, N+1) 1~N까지의 숫자가 들어간 a리스트 생성
a = list(map(int, input().split())) for _ in range(n)) bold쳐진 부분이 한 행 그것을 n번 반복, 즉 격자판이 생성됨.
num_list = [5, 2, 4, 3, 1]
num_list.sort()
print(num_list)
#[1, 2, 3, 4, 5]
num_list.reverse()
#[5, 4, 3, 2, 1]
num_list.clear()
#[]
#다양한 자료형 함께 사용
mix_list = ["조세호", 20, True]
num_list = [1, 2, 3, 4, 5]
num_list.extend(mix_list)
#리스트 합치기.
Python
복사
sort() → 정렬
clear() → 모두 삭제
extend() → 리스트 합치기
사전(딕셔너리)
cabinit = {3:"유재석", 100: "김태호"}
print(cabinet[3]) #유재석
print(cabinet.get(3)) #유재석
print(cabinet[5]) #값이 없는 경우 오류 발생, 프로그램 종료됨
print(cabinet.get(5)) #None -> 값이 없는 경우 None을 출력하고 계속됨
print(cabinet.get(5, "사용 가능")) #값이 없을 경우 "사용 가능"이 들어감
print(3 in cabinet) #True
print(5 in cabinet) #False
cabinet = {"A -3": " 유재석" , "B- 100": "김태호"}
print(cabinet["A -3"]) #이렇게도 가능
#새 손님
cabinet["A-3"] = "김종국"
cabinet["C-20"] = "조세호" #A-3엔 김종국, C-20엔 조세호가 들어간다.
#간 손님
del cabinet["A-3"]
#key 들만 출력
print(cabinet.keys())
#value 들만 출력
print(cabinet.values())
#key, value 쌍으로 출력
print(cabinet.items())
#목욕탕 폐점
cabinet.clear() #{}
Python
복사
튜플
튜플은 리스트와 다르게 내용 변경/추가가 불가능하다.
속도가 리스트보다 빠르기 때문에 변경되지 않는 목록을 사용할 떄 좋다.
menu = ("돈까스", "치즈까스")
print(menu[0])
print(menu[1])
#menu.add("생선까스") #오류가 뜬다. 튜플은 생성/변경 불가!
Python
복사
name = "윤태강"
age = 20
hobby = "코딩"
print(name, age, hobby)
(name, age, hobby) = ("윤태강", 20, "코딩")
Python
복사
세트(set)
중복 안되며 순서가 없다.
my_set = {1, 2, 3, 3, 3}
print(my_set)
#{1, 2, 3} 중복이 되지 않는다.
Python
복사
java = {"유재석", "김태호", "양세형"}
python = set(["유재석", "박명수"])
#교집합 (java 와 python을 모두 할 수 있는 개발자)
print(java & python)
print(java.intersection(python))
#합집합 (java 할 수 있거나 python 할 수 있는 개발자)
print(java | python)
print(java.union(python))
#차집합 (java는 할 수 있지만 python은 할 줄 모르는 개발자)
print(java - python)
print(java.difference(python))
#python 할 줄 아는 사람이 늘어남
python.add("김태호")
print(python)
#java를 잊었어요.
java.remove("김태호")
Python
복사
자료구조의 변경
#커피숍
menu = {"커피", "우유", "주스"}
print(menu, type(menu)) #<class 'set'>
menu = list(menu)
print(menu, type(menu)) #<class 'list'>
menu = tuple(menu)
print(menu, type(menu)) #<class 'tuple'>
Python
복사
자료구조의 형태를 바꿀 수 있다.
처음에 set형이었지만 list, tuple 형으로 바뀐 모습이다.
퀴즈
당신의 학교에서는 파이썬 코딩 대회를 주최합니다. 참석률을 높이기 위해 댓글 이벤트를 진행하기로 하였습니다. 댓글 작성자들 중에 추첨을 통해 1명은 치킨, 3명은 커피 쿠폰을 받게 됩니다. 추천 프로그램을 작성하시오.
조건 1: 편의상 댓글은 20명이 작성하였고 아이디는 1~20이라고 가정
조건 2: 댓글 내용과 상관 없이 무작위로 추첨하되 중복 불가
조건 3: random모듈의 shuffle 과 sample 활용
(출력 예제)
—당첨자 발표 —
치킨 당첨자 : 1
커피 당첨자 : [2, 3, 4]
—축하합니다—
(활용 예제)
from random import*
lst = [1, 2, 3, 4, 5]
print(lst)
shuffle(lst) #섞어주는 함수
print(lst)
print(sample(lst, 1)) #lst에서 1개의 요소를 뽑아옴.
정답)
from random import*
users = range(1, 21) #users = [1,2,3 .... , 20]과 동일
#range함수 사용시 users는 range형이 됨
users = list(users)
shuffle(users)
winners = sample(users, 4)
print("--당첨자 발표--")
print("치킨 당첨자 : {0}".format(winners[0]))
print("커피 당첨자 : {0}".format(winners[1:]))
print("--축하합니다--")
Python
복사
If
weather = input("오늘 날씨는 어때요? ") #input() 사용자 입력을 받음(문자)
if weather == "비":
print("우산을 챙기세요")
elif weather == "미세먼지":
print("마스크를 챙기세요")
else:
print("준비물 필요없어요.")
#위에서 부터 조건이 맞을 경우 해당 문 실행, 없으면 다음 문장으로 넘어감.
temp = int(input("기온은 어때요? ")) #int(input()) 사용자 입력 정수로 받음
if 30 <= temp:
print("너무 더워요. 나가지 마세요.")
elif 10 <= temp and temp < 30:
print("괜찮은 날씨에요")
elif 0<= temp < 10:
print("외투를 챙기세요")
else:
print("너무 추워요. 나가지 마세요")
Python
복사
for
print("대기번호 : 1")
print("대기번호 : 2")
print("대기번호 : 3")
print("대기번호 : 4")
for waiting_no in [0, 1, 2, 3, 4]:
print("대기번호 : {0}".format(waiting_no)) #두 코드의 실행값은 같다.
for waiting_no in range(5): #0, 1, 2, 3, 4 순차적으로 증가
print("대기번호 : {0}".format(waiting_no))
for waiting_no in range(1, 6): # 1, 2, 3, 4, 5
Python
복사
starbucks = ["아이언맨", "토르", "그루트"]
for customer in starbucks:
print("{0}, 커피가 준비되었습니다.".format(customer))
#아이언맨, 커피가 준비되었습니다
#토르, 커피가 준비되었습니다
#그루트, 커피가 준비되었습니다
Python
복사
while
customer = "토르"
index = 5
while index >=1:
print("{0}, 커피가 준비되었습니다. {1}번 남았어요.".format(customer, index))
index -= 1
if index == 0:
print("커피는 폐기처분되었습니다")
#토르, 커피가 준비되었습니다. 5번 남았어요.
#토르, 커피가 준비되었습니다. 4번 남았어요.
#토르, 커피가 준비되었습니다. 3번 남았어요.
#토르, 커피가 준비되었습니다. 2번 남았어요.
#토르, 커피가 준비되었습니다. 1번 남았어요.
#커피는 폐기처분되었습니다.
Python
복사
customer = "아이언맨"
index = 1
while True:
print("{0}, 커피가 준비되었습니다. 호출 {1}회.".format(customer, index))
index+=1
#아이언맨, 커피가 준비되었습니다. 호출 1회.
#아이언맨, 커피가 준비되었습니다. 호출 2회.
#아이언맨, 커피가 준비되었습니다. 호출 3회.
........
#무한 루프가 된다.
Python
복사
customer = "토르"
person = "Unknown"
while person!=customer:
print("{0}, 커피가 준비되었습니다.".format(customer))
person = input("이름이 어떻게 되세요? ")
#토르를 입력하면 종료된다. while문은 조건문이 참일 때까지 계속 실행된다.
Python
복사
Continue 와 Break
absent = [2, 5]
for student in range(1, 11): #1, 2, 3, 4, 5, 6, 7, 8, 9, 10
if student in absent:
continue
print("{0}, 책을 읽어봐.".format(student))
#1, 책을 읽어봐
#3, 책을 읽어봐
#4, 책을 읽어봐
#6, 책을 읽어봐
....
#continue는 그 아래 문장을 실행시키지 않고 다시 반복문을 실행시킴
absent = [2, 5]
no_book = [7]
for student in range(1, 11): #1, 2, 3, 4, 5, 6, 7, 8, 9, 10
if student in absent:
continue
elif student in no_book:
print("오늘 수업 여기까지. {0}는 교무실로 따라와.".format(student))
break
print("{0}, 책을 읽어봐.".format(student))
#1, 책을 읽어봐
#3, 책을 읽어봐
#4, 책을 읽어봐
#6, 책을 읽어봐
#오늘 수업 여기까지. 7는 교무실로 따라와.
#break는 바로 반복문을 탈출해서 끝냄.
Python
복사
한줄 for
#출석번호가 1,2,3, 4 앞에 100을 붙이기로 함 -> 101, 102, 103, 104.
students = [1, 2, 3, 4, 5]
print(students) #[1, 2, 3, 4, 5]
students = [i+100 for i in students]
print(students) #[101, 102, 103, 104, 105]
#학생 이름을 길이로 변환
students = ["Iron man", "Thor", "groot"]
students = [len(i) for i in students]
print(students) #[8, 4, 5]
#학생 이름을 대문자로 변환
students = ["Iron man", "Thor", "groot"]
students = [i.upper() for i in students]
print(students)
Python
복사
퀴즈
당신은 Cocoa 서비스를 이용하는 택시 기사이다.
50명의 승객과 매칭기회가 있을 떄, 총 탑승 승객 수를 구하는 프로그램을 작성하시오.
조건1: 승객별 운행 소요시간은 5분 ~ 50분 사이의 난수로 정해집니다
조건2: 당신은 소요시간 5분 ~ 15분 사이의 승객만 매칭해야 한다.
(출력문 예제)
[0] 1번째 손님 (소요시간 : 15분)
[ ] 2번째 손님 (소요시간 : 50분)
[0] 3번째 손님 (소요시간 : 5분)
…
[ ] 50번째 손님 (소요시간 : 16분)
총 탑승 승객 : 2분
from random import*
cnt = 0
for i in range(1, 51):
time = randrange(5, 51)
if 5 <= time <=15:
print("[o] {0}번째 손님 (소요시간 : {1}분)".format(i, time))
cnt += 1
else:
print("[ ] {0}번째 손님 (소요시간 : {1}분)".format(i, time))
print("총 탑승 승객: {0}분".format(cnt))
Python
복사
함수
def open_account() :
print("새로운 계좌가 생성되었습니다.")
open_account() #새로운 계좌가 생성되었습니다.
Python
복사
전달값과 반환값
def open_account():
print("새로운 계좌가 생성되었습니다.")
def deposit(balance, money):
print("입금이 완료되었습니다. 잔액은 {0}원 입니다.".format(balance + money))
return balance + money
def withdraw(balance, money):
if balance >= money:
print("출금이 완료되었습니다. 잔액은 {0}원 입니다.".format(balance - money))
return balance - money
else:
print("출금이 완료되지 않았습니다. 잔액은 {0}원 입니다.".format(balance))
return balance
def withdraw_night(balance, money):
commission = 100
return commission, balance - money - commission
balance = 0 #잔액
balance = deposit(balance, 1000)
commission, balance = withdraw_night(balance, 500)
print("수수료는 {0}원이며, 잔액은 {1}원입니다.".format(commission, balance))
Python
복사
기본값
def profile(name, age, main_lang):
print("이름:{0}\t나이:{1}\t주 사용언어:{2}".format(name, age, main_lang))
profile("유재석", 20, "python")
profile("김태호", 25, "java")
Python
복사
만약에 이 들이 같은 학교, 같은 학년, 같은 반, 같은 수업일 때
def profile(name, age=17, main_lang="python"):
print("이름:{0}\t나이:{1}\t주 사용언어:{2}".format(name, age, main_lang))
profile("유재석") # 이름: 유재석 나이: 17 주 사용언어: python
Python
복사
키워드값
def profile(name, age, main_lang):
print(name, age, main_lang)
profile(main_lang= "자바", age = 25, name = "김태호")
#김태호, 25, 자바
#함수의 키워드(여기선 name, age, main_lang)로 순서가 바뀌어도 직접 넣을 수 있다.
Python
복사
가변인자
def profile(name, age, lang1, lang2, lang3, lang4, lang5):
print("이름:{0}\t나이:{1}\t".format(name, age), end = " ")
print(lang1, lang2, lang3, lang4, lang5)
#end = " "을 해줄 시에, 원래는 프린트문이 끝나면 엔터가 자동으로 입력되는데
#이를 하지 않고 한 줄에 나오게 해준다.
profile("유재석", 20, "python", "java", "C", "C++", "C#")
profile("김태호", 25, "Kotlin", "Swift", "", "", "")
Python
복사
위의 예시에서 lang이 많아지면 골치가 아파진다.
def profile(name, age, *language):
print("이름:{0}\t나이:{1}\t".format(name, age), end = " ")
for lang in language:
print(lang, end=" ")
print()
#*로 시작하는 가변인자를 사용하여 해결할 수 있다.
Python
복사
지역변수와 전역변수
지역변수는 함수 내에서만 쓸 수 있는 변수. 함수가 호출되면 생성, 호출이 끝나면 사라짐
전역변수는 프로그램 내 어디서든지 부를 수 있는 변수
def checkpoint(soldiers): #경계근무
gun = gun - soldiers
print("[함수 내] 남은 총: {0}".format(gun))
print("전체 총: {0}".format(gun))
checkpoint(2) #2명이 경계근무 나감
print("남은 총: {0}".format(gun))
#이렇게 바로 실행하면 오류가 난다. 왜? gun이라는 값은 값이 없기 때문이다.
Python
복사
gun = 10
def checkpoint(soldiers): #경계근무
gun = 20
gun = gun - soldiers
print("[함수 내] 남은 총: {0}".format(gun))
print("전체 총: {0}".format(gun))
checkpoint(2) #2명이 경계근무 나감
print("남은 총: {0}".format(gun))
#전체 총: 10
#[함수 내] : 남은 총 : 18
#남은 총: 10
함수 내에서는 gun이 20, 함수 밖에서 다시 남은 총을 물어봤을 때는 10이 나오는 모습
이게 지역변수의 예이다.
Python
복사
def checkpoint(soldiers): #경계근무
global gun
gun = gun - soldiers
print("[함수 내] 남은 총: {0}".format(gun))
#global으로 전역공간에 있는 gun을 사용할 수 있다.
Python
복사
퀴즈
표준 체중을 구하는 프로그램을 작성하시오
*표준 체중 : 각 개인의 키에 적당한 체중
(성별에 따른 공식)
남자 : 키(m) x 키(m) x 22
여자 : 키(m) x 키(m) x 21
조건 1: 표준 체중은 별도의 함수 내에서 계산
*함수명 : std_weight
*전달값 : 키(height), 성별(gender)
조건 2: 표준 체중은 소수점 둘째자리까지 표시
(출력예시)
키 175cm 남자의 표준 체중은 67.38kg입니다.
def std_weight(height, gender):
if gender == "남자":
return height * height * 22
else:
return height * height * 21
height = 175
gender = "남자"
weight = round(std_weight(height / 100, gender), 2) #round함수를 통해 소수점조절
print("키 {0}cm {1}의 표준 체중은 {2}kg 입니다.".format(height, gender, weight))
Python
복사
표준 입출력
print("Python", "Java", sep=",") #Python,Java
print("Python", "Java", sep=" vs ") #Python vs Java
print("Python", "Java", sep=",", end="?")
print("무엇이 더 재밌을까요?") #Python,Java?무엇이 더 재밌을까요?
-> end부분을 명시적으로 적어주면 한 줄로 적어줌. 문장의 끝부분을 엔터 대신 ?
Python
복사
scores = {"수학" : 0, "영어" : 50, "코딩" : 100}
for subject, score in scores.items():
print(subject, score)
#수학 0
#영어 50
#코딩 100
scores = {"수학" : 0, "영어" : 50, "코딩" : 100}
for subject, score in scores.items():
print(subject.ljust(8), str(score).rjust(4), sep=":")
#subject은 8공간을 확보하고 lef정렬 score은 4공간을 확보하고 right정렬
#수학 : 0
#영어 : 50
#코딩 : 100
for num in range(1, 21):
print("대기번호 : "+str(num).zfill(3)) #3공간의 크기를 확보하고 0으로 채워줌
#대기번호 : 001
#대기번호 : 002
#대기번호 : 003
.....
Python
복사
answer = input("아무 값이나 입력하세요 : ")
print("입력하신 값은 " + answer + "입니다.")
#사용자 입력을 받으면 무조건 str형태로 저장됨.
Python
복사
다양한 출력 포맷
#빈 자리는 빈공간으로 두고, 오른쪽 정렬을 하되, 총 10자리 공간을 확보
print("{0: >10}".format(500))
# 500
Python
복사
#양수일 때는 +로 표시, 음수일 때는 -로 표시
print("{0: >+10}".format(500))
# +500
Python
복사
#왼쪽 정렬하고, 빈칸으로 _채움
print("{0:_<10}".format(500))
#500________
Python
복사
#3자리마다 콤마를 찍어주기
print("{0:,}".format(1000000000))
#100,000,000,000
Python
복사
#소수점 출력
print("{0:f}".format(5/3))
#1.666667
print("{0:.2f}".format(5/3))
#1.67
Python
복사
파일 입출력
score_file = open("score.txt", "w", encoding="utf8") #utf8해야 한글이 잘 써짐
print("수학 : 0", file= score_file)
print("영어 : 50", file = score_file)
score_file.close()
#w 는 write
score_file = open("score.txt", "r", encoding= "utf8")
print(score_file.read())
score_file.close()
#r은 read
Python
복사
score_file = open("score.txt", "a", encoding="utf8" #a는 append 더 쓰겠다.
score_file.write("과학 : 80")
score_file.write("\n코딩 : 100")
score_file.close()
#a는 append
Python
복사
score_file = open("score.txt", "r", encoding ="utf8")
print(score_file.readline()) #줄별로 읽기, 한 줄 읽고 커서는 다음줄로 이동
score_file = open("score.txt", "r", encoding ="utf8")
while True:
line = score_file.readline()
if not line:
break
print(line)
score_file.close()
#readline할 때 파일이 총 몇 줄인지 모를 때 반복문을 통해 불러올 수 있다.
Python
복사
리스트에 다 넣어서 처리할 수도 있다.
score_file = open("score.txt", "r", encoding= "utf8")
lines = score_file.readlines() #list 형태로 저장
for line in lines:
print(line, end="")
score_file.close()
Python
복사
클래스
#마린 : 공격유닛, 군인. 총을 쏠수 있음
name = "마린" #유닛의 이름
hp = 40 # 유닛의 체력
damage = 5 #유닛의 공격력
print("{} 유닛이 생성되었습니다.".format(name))
print("체력 {0}, 공격력 {1}\n".format(hp, damage))
#탱크 : 공격 유닛, 탱크. 일반 모드/시즈 모드
tank_name = "탱크"
tank_hp = 150
tank_damage = 35
print("{} 유닛이 생성되었습니다.".format(tank_name))
print("체력 {0}, 공격력 {1}\n".format(tank_hp, tank_damage))
def attack(name, location, damage):
print("{0} : {1}방향으로 적군을 공격합니다. [공격력 {2}]".format(name, location, damage))
attack(name, "1시", damage)
attack(tank_name, "1시", damage)
Python
복사
만약 탱크가 많아지면.. 어떻게 하지?
Python
복사