사용 방법 : '{인덱스 번호 0}'.format(값0), {인덱스 번호 0}, {인덱스 번호 1}'.format(값0, 값1)
age = 30
name = "JohnTheBaptist"
txt = "His name is {1}. {1} is {0} years old.“
print(txt.format(age, name))
여기서 {1} 은 format()안 1번째는 name를 의미하고, {0}은 format()안 0번째는 age를 의미합니다.
활용하면
for x in range(1, 10):
print('{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x))
이렇게 됩니다.
뒤에 2d, 3d, 4d는 정수의 자리를 표현하는 방법입니다. 02d라고 쓰면 남는부분이 자동으로 0으로 채워지고, 그냥 2d라고 치면, 공백이 채워집니다. 그냥 {2:2}라고 써도 2의 자리에 2자릿수로 된다라는 의미로 된대요. 저도 이거 안지 얼마 안되어서 아직 잘 모름...힛...공부 열심히 할게요
그렇다면, 소수는 어떻게 표현할까요?
소수점 자리를 표현할 땐 '0.2f'이러식으로 표현합니다. 이것도 마찬가지로 남는 부분에 0이 채워집니다.
저는 코딩할 때 함수를 자주 쓰는 편인듯함니다.. 왜냐하면 약간 나눠져 있어서 보기가 편함. 물론 지극히 개인적인 의견임 이건
이번에도 역시 출처는
우리 학교 교수님 ppt
교수님 진심으로 사랑합니다 오늘이 시험인 거 빼고요
함수를 사용하는 이유
: 코드가 길어질 때 모듈화하여 간결성을 높이기 때문
모듈화 하였을 때 장점
1. 고치기 쉬움.
2. 운영과 관리를 용이하게 함.
3. 프로그램 가독성을 높여줌.
뭐 등등 이러한 이유로 쓴다고 합니다. 참고하시길
그럼 이제 함수를 어떻게 정의하고 사용하는지 등등에 대해 알아보겠음욧
함수는 크게 2가지로 나눌 수 있어요
내장 함수 / 사용자 정의 함수
오늘 설명 할 건 사용자 정의 함수.
사용자 정의 함수가 뭐냐 말 그대로 사용자가 정의하는 함수, 즉 프로그래머가 만드는 함수에요
그러니까 함수 이름과 내용을 마음대로 만들 수 있다는 소리 개꿀이죠?
사용자 정의 함수는 만드는 방법
1. 함수의 기능을 정하고, 이름을 만든다.
- 주로 함수의 이름은 기능과 관련한 이름으로 짓는 편이에요 그래야 나중에 코드를 볼 때 이해하기가 쉽기 때문...☆
2 함수의 입력과 결과가 무엇인지 정한다.
3. 입력으로 사용하는 파라미터와 리턴 값의 데이터형을 정한다.
방금 읽은 걸 이해하셨나요? 못 이해하셔도 됩니다. 그게 아마 대부분이 그럴 거에요 (통계적인 수치는 모르구요 그냥 느낌상..ㅎ )
이제 진짜로 함수를 어떻게 사용하는지 볼게요
def plus(a, b):
sum = a + b
return sum
num1 = int(input("첫번째 정수를 입력하세요 : "))
num2 = int(input("두번째 정수를 입력하세요 : "))
print(num1, "+", num2, "=", plus(num1, num2))
먼저 def라는 걸로 정의한다고 알려줍니다. 그리고 나서 함수 명을 plus라고 달아주었어요.
저기 보시면 a와 b가 있죠? 이게 파라미터라고 하는 겁니다. 이건 마음대로 정할 수 있어요 뭐 1개, 2개 상관없고 자료형을 무엇을 하던 상관이 없습니다. 다만 위에 print문에서 함수를 호출 할 때 위에 파라미터와 같은 자료형으로 넣어야 한다는 거죠. 만약 자료형을 다르게 넣는다면 실행이 안됨. 그리고 계산한 값을 리턴해줍니다. 그러니까 쉽게 봐서 plus(num1, num2) 은 sum과 같다는 소리죠.
우선... 설명은 여기까지인데 앞으로 보시는 대부분의 코드에 함수가 있을 겁니다. 그걸 참고 하시면 좋을듯요
사실, 파이썬을 올리는 거 자체가 처음배우는 사람들에게 알려주는게 아니라 온전히 그냥 기록용이라서 ☆참고☆만 하시면 됩니다.
이게 가장 정확한 함수래요 제가 정말 귀찮아서 위에 걸 주로 쓸 거 같죠? 근데 저 은근 쫄보라서 이거 썼어요
word = "Hi, my/ na/me is h/ungry"
word = word.split(sep = '/',maxsplit = 1)
print(word)
#출력결과 : ['Hi, my', ' na/me is h/ungry']
2) .join()
리스트를 문자열로 생성해줌. (.split()와 반대 기능)
사용방법 : '구분할 문자'.join(리스트이름)
list_word = ["Hi,","my", "name"," is", "hungry"]
word1= ' '.join(list_word)
word2= '/'.join(list_word)
print(word1)
print(word2)
'''
출력 결과
Hi, my name is hungry
Hi,/my/name/ is/hungry
'''
함수를 사용한 코드
1. 소수 찾기
num = int(input("양의 정수를 입력하세요 : "))
bol = True
prime = [1]
for i in range(2, num):
if num % i == 0:
prime.append(i)
bol = False
prime.append(num)
if bol == True:
print(num, '은 소수입니다.')
else:
print(num, '은' , prime, '이라는 약수를 가지고 있으므로, 소수가 아니다.')
'''
출력 결과 :
양의 정수를 입력하세요 : 15
15 은 [1, 3, 5, 15] 이라는 약수를 가지고 있으므로, 소수가 아니다.
'''
2. 리스트에서 가장 큰 수 찾기 (물론 if문과 for을 써서 풀어도 되지만 저는 sort함수 사용을 위해 한 것이니 용서 부탁드려요^^)
array = [1, 3, 6, 2, 8, 4, 10 ,24, 31, 22, 19, 49, 22, 10]
temp = len(array)
array.sort()
print("리스트 내에서 가장 큰 수는 ", array[temp-1])
# 출력결과 : 리스트 내에서 가장 큰 수는 49
이걸 보는 사람이 있을까? 싶지만 우선 써볼게요. 근데 이거 초보자를 위한 그런 거 아니고 제가 처음 배운 언어가 C였어서 C랑 다른 점이랑 기초 문법이 어떻게 되는지 기록하는 용도로 쓸거라 도움 안될 수 도 있음요...ㅈㅅ합니다. 그래도 보실 분이 있다면 ㄱㅅ합니다..
틀린게 있다면 말해주세열~ 후다닥 달려와서 고치겠슴다 근데 저 기죽으니까 착하게 말해주세요 부탁드립니다^^
1. 세미콜론 안붙임, 괄호 안씀
이거...진짜 저 고치느라 식은땀 자주 흘림... 하나 썰 풀자면 제가 처음으로 퀴즈를 치게 되었죠..저는 아직 기초니까 자신만만하게 들어가서 미친듯이 코딩하고 거의 영화에 나오는 해커 수준으로 타자침훗.. 이게 나다ㅏ...☆ 하고 컴파일 하려는데 오류나는 거임요... 분명이 맞는데;; 보니까 중괄호 쓰고 세미콜론 붙이고 난리남;;; 암튼 그래서 당황했어요
예를 들면 이런
c언어
int sum = 10;
printf("%d", sum);
파이썬
sum = 10
print(sum)
2. 데이터 형, string
1) 문자열(String)은 인덱스화됨
word = "apple"
str = word[0] + word[3]
#str에는 "al"가 저장
컴퓨터는 0부터 시작하는 거 다들...알고 계시죠? 알고 계신다고 하고 넘어갈게요.
아 그리고 음수 인덱싱 이게 생각보다 많이 쓰이더라구요
음수 인덱싱은 반대로 생각하시면 됩니다. 그러니까 0이면 a겠죠. 여기서 거꾸로 가니까 e가 -1, l이 -2.. 이렇게 진행됩니다.
word = "apple"
str = word[-1] + word[-3]
#str 에는 "ep" 저장
2) 부분 문자열 추출 가능
슬라이싱이라고 합니다. 이거 개꿀임요 진짜
i love you 라는 문자열에서 love라는 문자열만 추출해서 사용하고 싶다면 어떻게 해야할까요. 당연히 아까 한대로
i가 0이니까...(지금 손가락으로 세는 중)
이렇게 쓸 수 있겠죠?
str = "i love you"
word = str[2] + str[3] + str[4] + str[5]
사실 저렇게 해도 되는데 저렇게 하면 코드도 쓸데없이 길어지고 저 같이 숫자 잘 못세는 사람들은 실수한다구욧...그리고 귀찮음 ㅎ 하나하나 입력하기
그래서 아주 친절하고 효율적인 파이썬님께서 : 라는 걸 이용해서 문자를 추출하도록 해주심...진짜 무한 ㄱㅅ
그럼 이제 위에 있는 문장을 :를 이용해서 줄여볼게요
str = "i love you"
word = str[2:6]
근데 여기서 주의 해야할 게
[앞에 오는 수 : 뒤에 오는 수]
앞에 오는 수부터 시작하지만 뒤에오는 수 하나 보다 작은 곳에서 끝난다는 거 겁나 중요 별 표시 5개...4.5개? 그정도
그러니까 만약에 인덱스 번호 5까지 추출하고 싶으면 6을 쓰고 3까지 추출하고 싶으면 4를 써야한다는 거죠
str = "i love you"
str[0:2] # "i" 추출(인덱스 번호 0부터 1까지 추출)
str[7:10] # "you" 추출(인덱스 번호 7부터 9까지 추출)
여기서 더 응용하자면
[:뒤에 수]
이렇게만 하면 처음부터 뒤에 수 -1 번 문자까지 추출됩니다.
str = "i love you"
str[:5] # "i lov" 추출 (인덱스 번호 0부터 4까지)
공백도 문자에 포함입니다. 그거 아무것도 없는거 아니고 공백이라는 공간이 존재하는 거임요(이렇게 설명해도 될까....후...ㅈㅅ해요 만약 여기까지 보셨다면 감사의 말씀과 함께 존경을 표하구요..욕하진 마세요 다른 코딩잘하시는 존잘분들 글을 참고하시길 바랍니다...)
반대로 [앞에 수 : ] 이렇게 하면 앞에 있는 수부터 끝까지 추출됩니다.
str = "i love you"
str[7:] # "you" 추출 (인덱스 번호 7부터 9까지 추출)