# 4장 파이썬은 문자(char) 데이터 타입이 따로 존재하지 않는다.string 문자열로만 존재함.
# string 은 immutable 하다.
msg = "Hello"
print(msg)
print(""" \"\"\" 주석 대용 으로 사용할 수 있다""")
# 이거 시험에 나온다. 백슬래시 활용
print("the law' requirements")
print('the law\' requirements')
print("\"Hi! Good morning?\"")
string = "This is first line.\n Second line ... \n"
print(string)
sql = """
select * from user order by desc
"""
print(sql)
string = "Hello \\ World"
print(string)
# 6page
# \n(new line) -> python이나 c에서 사용하는 줄바꿈이다., window
# \r(carriage return) -> mac
string = 'Hello' + 'World!'
print(string)
message = "파이썬에 " + "오신 것을 " + "환영합니다"
print(message)
# string * 연산자. 곱하기가 아니다. 반복 operator 다
print("=" * 10)
# in 연산자
print("Sog" in "Sogang University") # 대소문자 다르면 다르게 판단
print("YBS" not in "Sogang University")
# 문자열 인덱싱
s1 = "Hi there!"
print(len(s1))
# 음수 인덱스: 몰라도 된다.
# len(s1)-1 의 의미만 알면된다. => 마지막 문자
# 문자열 슬라이싱: 문자열의 부분 문자열을 반환
s1 = "Hi there!"
s2 = "안녕하세요!"
print("here")
print(len(s1)-1) # 마지막 인덱스
print(s1[:len(s1):2]) # H hr! (모든 짝수 index 문자. ::면 처음부터 끝까지 하겠다는 뜻)
print(s2[1::2]) # 녕세! (모든 홀수 index 문자)
print(s2[::-1]) # !요세하녕안 (문자열을 거꾸로. step 을 -1로 둠으로써 거꾸로 가게하네)
# end 는 default 값이 len(s) 이다. 그래야 end-1 까지 뽑히니까.
# 세번째 인자, step 에 해당하는게 default가 1 이고, 건너뛰지 않는다는걸 인지하는게 중요
s = "Good Morning!"
s1 = s[5:12] # start 포함, 그리고 end 포함 안됌 end-1 까지다.
s2 = s[5:100] # 에러 나지 않음. 더 크게 잡아도 된다. 시험에 이렇게 나와도 에러난다고 하면 안돼
print(s1)
print(s2)
# 'format specifier in python' 검색 !!
print("I eat %d apples." % 3)
num = 10
print("%s eats %d apples." % ("Tom", num)) # 각 data type 을 맞춰야한다. 달라졌을때 처리는 어떻게 구현했냐에 따라 다름
print("rate is %s" % 3.234) # 알아서 컨버팅해주는걸 보장 못함. 정확한 data type 과 맞춰서 사용해라
print("rate is %d" % 3.234)
print("rate is %f" % 3.234)
print("Error is %d%%." % 98) # 원하면 %% 두개 넣어서 출력 시켜
print("average =%10.2f " % 57.467657) # 총 10개의 문자를 쓰고(dot 도 포함), 소수점 두째자리까지 표현한다. 3번째에서 반올림
print("average = %10.2f" % 12345678.923) # 총 10개가 넘어가도 짜르지 않고 출력된다.
print("average = %10.2f" % 57.4)
print("average = %10.2f" % 57)
print("average = %10d" % 59832)
# 문자열 포맷팅
num = 10
print("I eat {} apples.".format(3))
print("I eat {} apples.".format(num))
print("{} eats {} apples.".format("Tom", num))
# p17
print("{2}, {0}, {1}".format(1, 2, 3)) # format 의 인덱스를 적어줌으로써 3, 1, 2 출력됌
print("|{:8.3f}|".format(3.1415926)) # :(colon) 이 들어가면 세부 옵션 넣겠다는 뜻 소수점 3째짜리까지 표현하겠다(4째에서 반올림) 총 8개 문자 사용
print("{:+.2f}".format(3.1415926)) # + 는 부호를 표시하라는 뜻.
# TODO: 시험에 나옴 e+02 에서 0이 붙은거는 외워라.
print("|{:8.3e}|".format(314.15926)) # 소숫점이하 3 자리 지수 (8자리) |3.142e+02|
print("|{:9.2e}|".format(314.15926)) #
print("|{:10d}|".format(12345))
print("|{:010,d}|".format(12345)) # space bar 대신 0 을 넣는다. 총10개 문자 사용하라(쉼표도 문자에 포함)
print("{:.3%}".format(1 / 3)) # %는 곱하기 100하라는 뜻. 그리고 소수점 둘째짜리까지 표현. % 까지 자동으로 표현
x = "hello"
y = "abc"
print("{0[1]}, {1[2]}".format(x, y)) # 0 은 format 의 0 인덱스값이니까 hello를 의미 그리고 [1] 은 e. 1은 1인덱스니까 abc. 그리고 [2] 는 c
print("{:*^12}".format("center1"))
s6 = "aba"
s = "123abababa"
print(s.count(s6))
print(s.find(s6)) # 여러번 존재하면 첫번째 발견하는 인덱스 리턴
s = "Hi everybody!"
s1 = s.replace("Hi", "Hello")
print(s1)
s = "sogang university ybs"
print(s.title())
s = " sogang university "
print(s.lstrip())
print(s.rstrip())
print(s.strip())
problem1
# 두 개의 문자열이 다음과 같이 주어졌을 때,
str1 = "Computer 4"
str2 = "Science#5"
# 문자열에서 알파벳 부분과 숫자 부분을 참조하여 알파벳 부분을 숫자만큼 반복 출력
computer = str1[:len(str1)-2]
computerCount = int(str1[len(str1)-1:len(str1)])
science = str2[:len(str2)-2]
scienceCount = int(str2[len(str2)-1:len(str2)])
# 두개의 print() 함수 사용, * 연산자 사용
print(computer * computerCount)
print(science * scienceCount)
# 대소문자 구분없이 "abc", "def" 문자열이 처음 시작하는 인덱스, 반복 횟수 출력
# 출력 시 포맷팅은 % operator 사용
sample = "abcABCdEFaBCDeFAbC"
lowerSample = sample.lower()
print("\"abc 문자열 : %d 인덱스, %d 번 존재\"" % (lowerSample.find("abc"), lowerSample.count("abc")))
print("\"def 문자열 : %d 인덱스, %d 번 존재\"" % (lowerSample.find("def"), lowerSample.count("def")))
problem4
# 아래 문장을 역순으로 저장 후 출력
original = "This class is Computational Thinking!"
# 문자열 slicing 사용
reverse = original[::-1]
# 문자열 메서드 format() 사용해서 출력
print("reversed sentence : {}".format(reverse))
problem5
num = 3.1415926
x = "123"
y = "abc"
# 주어진 변수만 사용하여 출력
# 4개의 print 문의 출력 형식 지켜
# 문자열 메서드 format() 사용해서 출력
print("{2}, {0}, {1}".format(x[0], x[1], x[2])) # 변수 x 에서 추출하여 출력
print("{:10.2f}".format(num)) # 변수 num 을 10자리 소수점 이하 2자리 실수 출력
print("{:10d}".format(int(x))) # 변수 x 를 이용하여 정수 123으로 변환하여 출력(10자리)
print("{:10}".format(y)) # 변수 y(10자리) 와 그 뒤 공백 7개 출력
problem1
problem2
problem3
problem4
problem5