* 유튜브 나도코딩의 동영상을 시청하며 작성한 개인 학습용 글입니다.

* 나도코딩 유튜브 : https://www.youtube.com/channel/UC7iAOLiALt2rtMVAWWl4pnw

 

문자열
sentence = '나는 소년입니다.'
print(sentence)
sentence2 = "파이썬은 쉬워요."
print(sentence2)
sentence3 = """
나는 소년이고,
파이썬은 쉬워요
"""
print(sentence3)

 '와 ", """로 문자열을 사용할 수 있다.

 

슬라이싱
jumin = "950622-1234567"
print('성별:', jumin[7])
print('년도:', jumin[0:2]) # 0부터 2 직전까지, 즉 0부터 1까지
print('월:', jumin[2:4]) # 2부터 4 직전까지, 즉 2부터 3까지
print('일:', jumin[4:6])
print('생년월일:', jumin[0:6])
print('생년월일:', jumin[:6]) # 해당 경우에는 처음 0이 생략가능하다. 즉 처음부터 6 직전까지
print('주민번호 뒷자리:', jumin[7:14])
print('주민번호 뒷자리:', jumin[7:]) # 7부터 끝까지
print('주민번호 뒷자리(뒤에서부터):', jumin[-7:]) # 뒤에서부터 index가 시작된다고 한다면, 맨 뒤 index는 -1이다. 따라서 index -7의 값은 1이 된다.

 슬라이싱, slicing은 필요한 만큼 정보를 자르는 것이다. Python 문법을 보면 맨 끝자리가 생략되고 그 직전까지 포함하는 경우가 많은데 조금 불편한 것 같다. 아직 왜 그렇게 하는지 몰라서 이런 생각이 드는 것 같다.

 

문자열 처리 함수
python = 'Python is Amazing'
print(python.lower()) # 문자열을 소문자로 바꿔준다.
print(python.upper()) # 문자열을 대문자로 바꿔준다.
print(python[0].isupper()) # 해당 요소가 대문자인지 판단해준다.
print(python[0].islower()) # 해당 요소가 소문자인지 판단해준다.
print(len(python)) # 길이를 반환해준다.
print(python.replace('Python', 'Java')) # 해당 요소의 문자열을 교체해준다.

 

index = python.index('n') # 해당 요소의 index 값을 반환한다.
print(index) # 5
index = python.index('n', index + 1) # 처음 n을 찾고 난 index의 + 1을 한 index, 즉 5에서부터 두번째 n을 찾고 그 값을 반환한다.
print(index) # 15
print(python.find('n')) # 비슷하게 처음 찾은 n의 index 값을 반환한다.
print(python.find('Java')) # 찾지 못할 경우 find는 -1을 반환한다.
# print(python.index('Java')) # 찾지 못할 경우 index는 에러를 낸다.
print(python.count('n')) # n이 몇 번 등장하는지 계산해준다.

 find는 원하는 요소를 못 찾으면 -1을 반환하고 index는 에러를 발생시킨다. 의도적으로 -1을 반환해야 되거나 찾지 못해도 에러가 발생하는 걸 원하지 않을 경우 find를 사용하고, 찾지 못했을 경우 치명적인 오류라고 판단해야 될 때는 index를 사용하면 될 것 같다.

 

문자열 포맷
print('나는 %d살입니다.' % 20) # % 뒤의 값을 %d에 넣겠다는 의미이다. 이떄 d는 정수형을 의미하므로 여기의 % 뒤에는 정수형 값만 넣을 수 있다.
print('나는 %s을 좋아해요.' % '파이썬') # s는 문자형을 의미한다. 참고로 s는 문자이든 숫자이든 모두 받을 수 있다.
print('나는 %s살입니다.' % 20)
print('Apple은 %c로 시작해요.' % 'A') # c는 character라서 한 글자만 받겠다는 의미이다.

print('나는 %s색과 %s색을 좋아해요.' % ('파란', '빨간'))
print('나는 {}살입니다.'.format(20))
print('나는 {}색과 {}색을 좋아해요.'.format('파란', '빨간'))
print('나는 {4}색과 {2}색을 좋아해요.'.format('파란', '빨간', '노란', '초록', '주황'))
print('나는 {age}살이며, {color}색을 좋아해요.'.format(age=20, color='빨간'))
print('나는 {age}살이며, {color}색을 좋아해요.'.format(color='빨간', age=20))

 %d, %s, %c와 format을 이용해 문자열을 좀 더 효과적으로 표현할 수 있다.

 

탈출 문자
# print('백문이 불여일견 
# 백견이 불여일타') # 2줄로 쓰고 싶을 때, 이렇게 출력하면 오류가 발생한다.

print('백문이 불여일견\n백견이 불여일타') # \n으로 해결 가능하다.
# print("저는 "나도코딩"입니다.") # 오류가 발생한다.
print('저는 "나도코딩"입니다.')
print("저는 \"나도코딩\"입니다.") # \는 뒤의 '이나 "을 문자열 그대로 출력해주는 역할을 한다.
print("저는 \'나도코딩\'입니다.")

# print("C:\Users\Administrator\Desktop\Code\Prac") # \은 뒤의 '이나 "을 문자열 그대로 출력해주기 때문에 해당 코드는 오류가 난다.
print('C:\\Users\\Administrator\\Desktop\\Code\\Prac') # \\ 으로 뒤의 \을 문자열 그대로 출력하게 해줘서 해결 가능하다.

print('Red Apple\rPine') # \r은 커서를 맨 앞으로 이동시킨다. 따라서 Red' ' 대신에 Pine으로 대체되어 PineApple이 된다.

print("Redd\bApple") # \b는 백스페이스(한 글자 삭제)이다. \b 앞의 d를 지우게 되어 RedApple을 출력하게 된다.

print('Red\tApple') # \t는 탭이다. 키보드에서 탭을 치는 것과 동일하게 작용한다.

 \n을 통해 다음 줄로 넘어가는 것이 가능하다. 그리고 '와 "을 문자열 그대로 나타낼려면 앞에 \을 붙여주면 된다. \자체를 문자열로 표현하기 위해서는 \\으로 해야된다. 그러면 \이 문자열 그대로 출력된다.

 

 \r은 커서를 맨 앞으로 이동시키고, \b는 백스페이스를 실행한다. 그리고 \t는 탭을 실행한다.

 

 여기서 \은 역슬래쉬이다.

 

퀴즈
'''
Quiz) 사이트별로 비밀번호를 만들어주는 프로그램을 작성하시오.

규칙1 : http:// 부분은 제외 => naver.com
규칙2 : 처음 만나는 점(.) 이후 부분은 제외 => naver
규칙3 : 남은 글자 중 처음 세자리 + 글자 갯수 + 글자 내 'e' 갯수 + '!'로 구성

예) 생성된 비밀번호 : nav51!
'''
website = 'http://google.com'
replacedWebsite = website.replace('http://', '') # 규칙 1
finalReplacedWebsite = replacedWebsite.replace('.com', '') # 규칙 2 # 해당 경우는 사이트가 .com으로 끝나지 않을 수 있으므로 적절치 않다.
# finalReplacedWebsite = replacedWebsite[:replacedWebsite.index('.')] # index를 활용한 규칙 2 대체 방안

password = finalReplacedWebsite[:3] + str(len(finalReplacedWebsite)) + str(finalReplacedWebsite.count('e')) + '!'
print(f'생성된 비밀번호 : {password}')
print('생성된 비밀번호 : {}'.format(password))
print('생성된 비밀번호 : {2}'.format(0, 'jun', password, 'hello'))
print('{0}으로 인해 생겨난 비밀번호는 {2}입니다.'.format(website, 'jun', password, 'hello'))

 처음 내가 짠 코드는 마지막 사이트가 .com으로 끝나지 않는다면 유효하지 않다. 나도코딩님 해설이 더 정확할 듯 싶다. 그리고 http가 아닌 https라면 if 구문으로 나눠야 할 것 같다.

'프로그래밍 > Python' 카테고리의 다른 글

리스트, 딕셔너리, 튜플, 세트  (0) 2022.03.09
조건문과 반복문  (0) 2022.03.08
연산자  (0) 2022.03.03
자료형  (0) 2022.03.03

+ Recent posts