Sparta/Theory

[250819] 스파르타코딩 본캠프 11일차 (1) - Python 01 - input, str

junecho 2025. 8. 19. 12:54

🟡 Python 1차 강의 🟡

입출력                                                                  

🔰 end                                                                                                                              

출력 끝에 줄 바꿈 변경

 

1) \n : 줄 바꿈 (end=\n 이 생략 되어있음)

for i in range(5):
    print(i)
    
>>> 
0
1
2
3
4

 

2) end=’ ’ : 끝을 공백으로

for i in range(5):
    print(i, end=' ')
       
>>>
0 1 2 3 4

 

 

 

 

🔰 sep                                                                                                                              

출력 구분자 변경

기본 구분자는 공백

print("2023", "10", "05")

>>> 
2023 10 05

 

Ex) 기본 공백 대신 하이픈 - 으로 구분하기

# sep='-'
print("2023", "10", "05", sep="-")

>>> 
2023-10-05

 

 

 

 

🔰 split()                                                                                                                           

() 괄호 안에 있는 것으로 나누겠다

기본 값은 공백 기준으로 나눔

 

Ex) 문자열 분리. input 으로 과일 이름을 입력받는데 쉼표로 구분함

data = input("과일 이름을 입력하세요 (쉼표로 구분) : ")
fruits = data.split(",")
print(f"당신이 선택한 과일 : {fruits}")

>>>
과일 이름을 입력하세요 (쉼표로 구분) : 바나나, 블루베리, 딸기
당신이 선택한 과일 : ['바나나', ' 블루베리', ' 딸기']

 

 

 

🔰 map()                                                                                                                          

반복 가능한 객체의 모든 요소에 주어진 함수를 적용하여 결과 반환

map(function, iterable)

 

  • function : 요소에 적용될 함수
  • iterable : 반복 가능한 항목(리스트, 튜플…)

 

Ex) 문자열 길이 구하기

words = ["apple", "banana", "cherry"]
lengths = **list(map**(len, words))
print(lengths)  

>>>
[5, 6, 6]

 

Ex) input 으로 여러 개 입력 받기

num1, num2 = map(int, input("두 정수를 입력하세요 : ").split())
print(f"{num1} + {num2} = {num1 + num2}")

>>>
두 정수를 입력하세요 : 10 20
10 + 20 = 30

 

 

 

 

✅ 문자열                                                                  

🔰 ⭐ 슬라이싱(Slicing) ⭐                                                                                        

부분 문자열 추출하는 데 사용

[start:end:step]

str2 = 'Hello, World!'

print(str2[0:5])    # 'Hello' (인덱스 0번 ~ 4번)
print(str2[7:])     # 'World!' (인덱스 7번 ~ 끝까지)
print(str2[:5])     # 'Hello' (인덱스 처음 ~ 4번)
print(str2[-6:-1])  # 'World' (뒤에서 6번째부터 뒤에서 2번째까지)
print(str2[::])     # 'Hello, World!' (처음부터 끝까지)
print(str2[::-1])   # '!droW , olleH' (거꾸로 출력)
print(str2[::2])    # Hlo ol! (처음부터 끝까찌 순회하되, 2칸 간격으로 문자 추출)

 

🔰 문자열 메서드                                                                                                            

 

1) 대소문자 변환

  • upper() : 모든 문자를 대문자로 변환
  • lower() : 모든 문자를 소문자로 변환
  • capitalize() : 첫 번째 문자를 대문자로 변환
  • title() : 각 단어의 첫 문자를 대문자로 변환
str1 = 'hello python programming'

print(str1.upper())        # 'HELLO PYTHON PROGRAMMING'
print(str1.lower())        # 'hello python programming'
print(str1.capitalize())   # 'Hello python programming'
print(str1.title())        # 'Hello Python Programming'

 

 

2) 문자열 검색/교체

  • find(sub) : 부분 문자열 sub를 찾아 인덱스 반환. 없으면 -1 반환
  • index(sub) : 부분 문자열 sub를 찾아 인덱스 반환. 없으면 오류 발생
  • replace(old, new) : 문자열 내의 old를 new로 교체
str3 = 'I love Python programming. Python is fun!'

print(str3.find('Python'))   # 첫 번째 'Python'의 인덱스 반환 = 7
print(str3.index('Python'))  # 첫 번째 'Python'의 인덱스 반환 = 7
print(str3.index('Hello'))   # str에 없는 문자일 경우 에러 발생 : ValueError: substring not found
print(str3.replace('Python', 'Java'))  # 'Python'을 'Java'로 교체 = I love Java programming. Java is fun!

 

 

3) 공백 제거

  • strip() : 문자열 양쪽 공백 제거
  • lstrip() : 문자열 왼쪽 공백 제거
  • rstrip() : 문자열 오른쪽 공백 제거
str1 = '   Hello, World!   '

print(str1.strip())   # 'Hello, World!'
print(str1.lstrip())  # 'Hello, World!   '
print(str1.rstrip())  # '   Hello, World!'

 

 

4) 문자열 분할/결합

  • split(separator) : 구분자 separator 기준으로 문자열을 분할해 리스트로 반환
  • join(iterable) : 문자열의 interable 요소를 연결해 하나의 문자열로 만듦
str2 = 'apple,banana,cherry'

# 문자열 분할
fruits = str2.split(',')
print(fruits)  # ['apple', 'banana', 'cherry']

# 문자열 결합
result = ' & '.join(fruits)
print(result)  # 'apple & banana & cherry'

 

🔰 불변성 (Immutability)                                                                                              

문자열은 불변(immutable) 객체

즉, 문자열을 생성한 후에는 그 값을 변경할 수 없음

변경이 필요한 경우 새로운 문자열을 생성해야 함

 

 


 

파이참에선 pri 까지 쓰고 엔터하면 print() 가 자동으로 생성되는데, VSCode 에선 그런게 기본으로 없음

setting.json 에다가 한 줄 입력해두면 해결완료

"python.analysis.completeFunctionParens": true

 


🔰 과제                                                                                                                             

 

실습 01 - 입출력

더보기
더보기
더보기

1)

name = input("이름을 입력하세요 : ")
age = int(input("나이를 입력하세요 : "))

print(f"이름 : {name} | 나이 : {age}")

 

 

 2)

print("1","2","3","4","5", sep=';', end='!')

 

 

 3)

num1, num2 = map(int, input("두 수를 입력하세요.(공백으로 구분) : ").split())

print(f"{num1} + {num2} = {num1 + num2}")
print(f"{num1} - {num2} = {num1 - num2}")

 

 

실습 02 - 변수

더보기
더보기
더보기

1)

n1 = 42
n2 = 3.14
n3 = "Python"

print(f"값 : {n1}", type(n1))
print(f"값 : {n2}", type(n2))
print(f"값 : {n3}", type(n3))

 

 

2)

a, b, c = 5, 7, 9
avg = (5+7+9)/3

print(f"a={a}, b={b}, c={c}  =>  평균 : {avg}")

 

 

3)

name = input("이름을 입력하세요 : ")
lang = input("좋아하는 언어를 입력하세요 : ")
result = f"{name}은 {lang}을 좋아합니다!"

print(result,'\n',result*3,sep='')

 

 

실습 03 - 문자열

더보기
더보기
더보기

1)

user = input("문자열을 입력하세요 : ")

print(f"첫 글자 : {user[0]}, 마지막 글자 : {user[-1]}")
print(f"앞 3글자 : {user[:3]}, 뒤 3글자 : {user[-3:]}")
print(f"거꾸로 : {user[::-1]}")

 

 

 

2)

 

sentence = "   I love Python. Python is powerful!   "
s1 = sentence.strip()
news = s1.lower()

print(f"정제된 문자열 : {news}")
print(f"'python' 개수 : {news.count('python')}")
print(f"치환 결과 : {news.replace('python','java')}")
print(f"단어 리스트{list(news.split(' '))}")

 

 

 

3)

n1 = "Hello"
n2 = "Python"
n3 = "apple,banana,cherry"

print(n1 +' ' + n2 + '!')

n4 = list(n3.split(","))
print(n4)

n5 = 'ㅣ'.join(n4)
print(n5)

 

 

미니과제 양이 너무 방대해서 문제랑 같이 올리기가 힘듦...

내 코드만 긁어서 저장용으로 올려둠

더보기
더보기
더보기
#####################################################################################
### 미니과제 입출력 10문제 ###
'''
# 01
print("Hello World")

# 02
print("MR'S JUNSEOK")

# 03
# f-string
name = "천준석"
age = 30
print(f"{name}님의 나이는 {age}살 입니다.")
# format
print("{}님의 나이는 {}살 입니다.".format(name, age))

# 06
name = input("이름을 입력하세요 : ")
hobby = input("취미를 입력하세요 : ")

print(f"안녕하세요, {name}님! 당신의 취미는 {hobby}군요.")

# 07
n1 = float(input("원의 반지름을 입력하세요 : "))
print(f"원의 넓이는 {n1*n1*3.14159}입니다.")

# 08
num1, num2 = map(int, input("두 정수를 입력하세요 : ").split())
print(f"{num1} + {num2} = {num1 + num2}")
print(f"{num1} - {num2} = {num1 - num2}")
print(f"{num1} * {num2} = {num1 * num2}")
print(f"{num1} / {num2} = {int(num1 / num2)}")

# 09
n1 = int(input("섭씨 온도를 입력하세요 : "))
new_n1 = n1 * 1.8 + 32
print(f"화씨 온도는 {new_n1}도 입니다.")

# 10
user = input("입력하세요 : ")
print(user.replace('#',' '))
'''

#####################################################################################
### 미니과제 변수 10문제 ###
'''
# 01
5

# 01-2
a, b, c = 1, 2, 3

print(f"a={a} b={b} c={c}")


# 02
a = 10
b = 20
a, b = b, a

print(f"교환 후 a의 값 : {a}\n 교환 후 b의 값 : {b}")


# 03
a = 10
b = 3.5
result = a + b
print(type(result))


# 04
3,5


# 05
num1, num2 = map(int, input("두 개의 정수를 입력하세요 : ").split())
result1, result2 = (num1*num2), (num1/num2)
print(f"{num1} * {num2} = {result1}")
print(f"{num1} / {num2} = {result2}")


# 06
16
100


# 07
pi = 3.14159
r = 5
print(pi*r*r)


# 08
1. 문자열 '3'을 4번 나오게 출력함
2. int 때문에 a는 3인 숫자가 됨 3/4 = 0.75


# 09
x = 10
y = '10'
typex = type(x)
typey = type(y)

if x == y:
    print('같은 값 : TRUE')
else:
    print('같은 값 : FALSE')

if typex == typey:
    print('같은 데이터 타입 : TRUE')
else:
    print('같은 데이터 타입 : FALSE')


# 10
local x
enclosed x
global x
'''
#####################################################################################
### 미니과제 문자열 10문제 ###
'''
# 01
s = "abcdefghij"

print(s[2:6])


# 02
s = "I love apples"

print(s.replace('apples', 'banana'))


# 03
s = "Find the index of the first 'e' character"

print(s.find('e'))


# 04
lst = ['Python', 'is', 'fun']
data = '-'.join(lst)

print(data)


# 05
s = "1234567890"
s1 = s[0:3]
s2 = s[-3:]

print(s1+s2)

s3 = s[-7:-3]

print(s3)


# 06
s = "Hello, World!"

print(s[:-1])


# 실습 문제 1
s = "Hello, World!"

print(s[6:])


# 실습 문제 2
s = "python programming"

print(s.title())


# 실습 문제 3
s = "Python is fun"
mylist = s.split()

print(mylist)


# 실습 문제 4
s = "Data Science"

print(s[::-1])


# 실습 문제 5
s = "   OpenAI   "
s1 = s.strip()

print(s1.upper())


# 실습 문제 6
user = input("이메일 주소를 입력하세요 : ")
newuser = user.split('@')

print(f"아이디 : {newuser[0]}\n도메인 : {newuser[1]}")


# 실습 문제  7
s = "abcdefg"
print(s[1::2])


# 심화 1
s = "The quick brown fox"
s = s.replace('a','')
s = s.replace('e','')
s = s.replace('i','')
s = s.replace('o','')
s = s.replace('u','')
print(s)

s = "The quick brown fox"
li = ['a', 'e', 'i', 'o', 'u']
blank = ""

for i in s:
    if i not in li:
        blank += i

print(blank)


# 심화 2
s = "Hello123World456"
cnt = []

for i in s:
    if i.isdigit():     #i가 문자열이면
        cnt += i
print(cnt)


# 심화 3 --- 접근법은 알겠는데 여기서 코드 어떻게 더 해야될 지 모르겠음
s = "aaabbbcccaaa"

m = ""
cnt = 0

for i in s:
    if i == m:
        cnt += 1
    else:
        cnt = 1
    m = i
    print(m)
print(cnt)
'''