whatisthis?

Phython. 파이썬 코딩 기초편-03 본문

WEB STUDY/PHYTHON | BACK-END

Phython. 파이썬 코딩 기초편-03

thisisyjin 2021. 8. 28. 21:59

문자열 / 슬라이싱 / 문자열 처리함수 / 포맷(format)

 

<Day 02 Quiz>

 

 

당신은 코딩 스터디 모임을 새로 만들었다.

월 4회 스터디를 하는데, 3번은 온라인으로 하고 1번은 오프라인으로 한다.

아래 조건에 맞는 오프라인 모임 날짜를 정해주는 프로그램을 작성하시오.

 

조건1 : 랜덤 날짜여야함.

조건2 : 한달은 28일로 정함.

조건3 : 매월 1-3일은 스터디 준비를 해야하므로 제외한다고 침.

 

from random import *

date = (randint(1, 25) + 3)
date2 = (int(random() * 25) + 4) # 4 ~ 28일까지 출력
date3 = (randrange(1, 26) + 3) # 4 ~ 28일

print("오프라인 스터디 모임 날짜는 매월 " + str(date) + "일로 선정되었습니다.")
print("오프라인 스터디 모임 날짜는 매월", date , "일로 선정되었습니다.")

print("오프라인 스터디 모임 날짜는 매월 " + str(date2) + "일로 선정되었습니다.")
print("오프라인 스터디 모임 날짜는 매월 " + str(date3) + "일로 선정되었습니다.")

 

총 3가지 경우로 작성했다.

1. randint(시작,끝) + a 이용
2. int(random() * 끝값 ) + a ) 이용
3. randrange(시작, 끝+1) + a 이용

또한 변수를 출력할때도
date값이 정수, 즉 숫자이므로
str()함수를 이용한 것과 (+로 연결)
str 없이 변수이름만 이용한것 (,로 연결) 총 두가지로 작성함.

 

< 답안 >

내가 작성한 코드의 문제점 -> 왜 굳이 randint(1,25) + 3을 했는가?

int(random() * 끝값) 의 경우에만 뒤에 플러스를 해주고

randrange랑 randint는 애초에 시작값을 0이 아닌 다른 값으로도 할 수 있다.

 

 

실행 결과

실행 결과는 같지만, 간결한 코드를 작성하려고 노력해보자. ☆☆

 

 


 1. 문자열 (string)

 

sentense =  'thisisyjin 이라고 합니다'
print(sentense)

sentense2 =  "파이썬을 공부중 입니다"
print(sentense2)

sentense3 = """         
저는 thisisyjin이고,
파이썬을 공부중 입니다.
"""
print(sentense3)

 

각각 변수(sentense, sentense2, sentense3)에 문자열을 입력한다.

 

' ' 작은따옴표

" " 큰따옴표

"""    """ 큰따옴표 * 3개 = 여러 줄 입력시

 

 


 

2. 슬라이싱

jumin = "990120-1234567"

print("성별 : " + jumin[7])
print("년도 : " + jumin[0:2])  # 0부터 2직전까지
print("월 : " + jumin[2:4]) # 2부터 4직전까지

string변수의 경우에는 N번째 글자를 가져오기 위해

__(변수명)__[N-1] 을 입력하면 된다.

 

N-1인 이유는 첫번째 자리를 0번지로 보기 떄문.

즉, jumin 변수의 8번째 글자를 가져오기 위해선 print( jumin[7] ) 을 입력.

 

 

[ 0 : 2 ]는 0번째, 1번째 자리를 가져온다.

 

시작값이 0이면 > 0은 생략해도 좋다.
예> jumin[:6] = 처음부터 6번째 직전까지.
끝값이 끝까지라면 > 생략해도 좋다.
예> jumin[7:] = 7번째자리부터 끝까지.
만약 값을 거꾸로 불러오려면? > ' - ' 를 앞에 붙인다.
예> jumin[-7:] = 7번째부터 끝까지의 값을 거꾸로
** 단, [0:6]이나 [:6] 같은 경우엔 안먹힌다.

 

 


3. 문자열 처리함수

 

 

python = "Python is Amazing"

print(python.lower())
print(python.upper())

print(python[0].isupper()) # python변수의 첫글자가 대문자면 true

print(len(python)) # 문자열 길이 반환

print(python.replace("Python", "Java")) # replace("찾을문자","바꿀문자")

index = python.index("n")
print(index) # python변수에서 n글자가 몇번째에 위치했는지

index = python.index("n", index + 1) # 변수명.index("찾을문자", 시작위치)
print(index) # 그 다음으로 몇번째로 위치했는지

print(python.find("n"))

print(python.find("Java")) # find에서는 없는 문자 검색시 -1을 반환함
print(python.index("Java")) # index에서는 없는 문자 검색시 에러

print(python.count("n") # 해당 문자가 몇번 등장하는지 카운트

1) 변수명.lower() = 소문자로 / .upper() = 대문자로

 

2) 변수명[0].isupper() = 변수의 0번째 값이 대문자인지 True/False

 

3) len(변수명) = 문자열 길이 

 

4) 변수명.replace("찾을문자", "바꿀문자")

 

5) 변수명.index("찾을문자", 시작위치) = 변수로 지정하여 print(index) 해주면 해당 문자가 몇번째로 위치한건지 나옴.

시작위치는 처음부터 검색하면 생략 가능함. 그러나 두번째 값을 찾고싶다면 index+1을 시작값으로 해주면 됨.

 

6) 변수명.find("찾을문자") = index와 같은 기능임. 

find("찾을문자") 없는 문자 검색시 -1을 반환
index("찾을문자") 없는 문자 검색시 에러 발생
(해당 코드 이후의 코드들은 다 실행X)

7) 변수명.count("찾을문자") = 변수에 해당 문자가 몇번 등장하는지 카운트

 

 

 


 

4. 문자열 포맷

print("a" * 3)      # aaa
print("a" + "b")   # ab
print("a" , "b")   # a b

실행 결과

+는 띄어쓰기 없고,

,는 띄어쓰기가 포함되어있다.

 

 

 

< 방법 1 >  % 이용하기

print("나는 %d살 입니다." % 22)  # %d는 정수
print("나는 %s을 좋아합니다." % "파이썬")  # %s는 문자열
print("Apple은 %c로 시작합니다." %"A") # %c는 캐릭터, 문자(한 글자만)
%d 정수 (Decimal)
%s 문자열 (String)
%c 문자 (Character

 

 

< 방법 2 >   중괄호 { } 와 .format( ) 이용하기

print("나는 %d살 입니다." % 22)  
print("나는 {}살 입니다.".format(22))

두 코드의 값은 정확히 일치한다.

 

>> print(" 나는 {}살 입니다. ".format(22))

 

print("나는 {}와 {}를 좋아합니다.".format("html","css"))

2개 입력시 중괄호 2개, format("___", "___")

 

** 중괄호{} 안에 숫자를 입력할 수 있다.

 

 

이 또한 .format()에 나오는 첫번째 값을 0으로, 그 다음값을 1로 표현한다.

print("나는 {0}와 {1}를 좋아합니다.".format("html","css"))
print("나는 {1}와 {0}를 좋아합니다.".format("html","css"))

만약 위와 같이 0과 1의 위치를 바꾸게 되면, 출력 또한 순서가 바껴서 나오게된다.

 

<상단> {0}과 {1} 순서 / <하단> {1}과 {0} 순서

 

 

< 방법 3 >   .format()안에서 변수 선언

print("나는 {age}살이며, {color}색을 좋아해요".format(age = 22, color = "파란"))

변수처럼 format안의 값을 가져다 쓸 수 있음.

 

 

< 방법 4 >   변수를 직접 선언하되, print문 내에서 f로 문장 시작.

 

age = 22
color = "파란"
print(f"나는 {age}살이며, {color}색을 좋아해요")

>>  print( f " {변수명} " )

 

 

 


 

 

5. 탈출 문자

 

 

1. 줄바꿈

print("백문이 불여일견\n백견이 불여일타")

> 두줄에 걸쳐서 나오게 (즉, 한줄 띄기)

 

 

2. 문장에 ""가 있는 경우

다음과 같이 문장에 " " 가 포함된 경우 print문을 감싸는 ""와 혼동되어 오류가 발생한다.

이때, \" 으로 감싸주면 해당 부분은 " " 그대로 출력이 된다.

+) 작은따옴표도 마찬가지 ( ' )

 

 

3. 역슬러시(\\) 두개 입력시 = 문장 내에서 \

 

4.  \r = 커서를 맨 앞으로 보낸 후 덮어쓰듯이 작성

print("Red Apple\rPine")

<결과> PineApple

(즉, 커서를 맨 앞으로 이동해서 Pine을 작성)

 

 

5. \b = backspace (한글자 지움) /  \t = tab

 

print("Redd\b Apple") # \b = backspace

print("Red\tApple")  # \t = tab

<상단> Redd\b Apple /  <하단> Red\tApple

 

 

 


<Quiz>

 

사이트별로 비밀번호를 만들어주는 프로그램.

 

예) http://naver.com

 

<규칙>

1. http://  부분은 제외 ->  naver.com

2. 처음만나는 점(.) 이후 부분은 제외 -> naver

3. 남은 글자중 처음 세자리 + 글자갯수 + 글자 내 'e'갯수 + "!"로 구성

                          (nav)       (5)             (1)                  (!)

예 > nav51!

 

(1:17:13)