input() 함수를 사용하여 사용자의 입력을 받을 수 있다
sentence_1 = input("1. 이번 해에는 깃허브 _을 꾸준히 한다:")
print(f"1. 이번 해에는 깃허브 {sentence_1}을 꾸준히 한다.")
split() 함수를 사용하여 특정 문자를 기준으로 문자열을 분리 가능하다
sentence_2 = input("올해는 ___과 ___에 집중하려고 한다: ")
word_1, word_2 = sentence_2.split() # 두 단어를 입력받고, (필수) 공백을 기준으로 분리
print문 내에서 end 인자로 서로 다른 두 문장을 합치기 등을 할 수 있다
# 다양한 방법으로 input 내용을 print 할 수 있다.
word1 = input("올해는 __와")
word2 = input("__에 집중하려고 한다.")
print(f"올해는 {word1}와", end = " ")
print(f"{word2}에 집중하려고 한다.")
num = random.randrange(0,10) # 시작값부터 끝값-1까지의 숫자중에서 무작위로 선택
print(num)
정수형 범위내에서 무작위로 숫자를 선택한다.
import random
# 0~9까지의 임의의 숫자를 선택하는 코드 작성
num = random.randint(0,9)
print(num)
리스트 안의 범위에서 숫자 1개를 랜덤으로 선택한다.
import random
throw1 = random.choice([0, 1])
throw2 = random.choice([0, 1])
throw3 = random.choice([0, 1])
throw4 = random.choice([0, 1])
total_back = throw1 + throw2 + throw3 + throw4 # 뒷면 합산
results = ['모', '도', '개', '걸', '윷'] # 전부 0(앞)이면 모, 1개만 1이면 도..
print(results[total_back])
변수는 가리키는 것이며 담겨져 있는 실체는 변하지 않는다
# 다음과 같은 경우, x의 값은 변하지만 y와 z의 값은 초기 대입한 그대로이다.
x = 10
y = x
z = y
x = 20
print(y, z) # 결과 값은 10입니다.
변수의 개념은 언어마다 다르며 파이썬에는 가리키는 것을 뜻한다. 또한, 변수의 이름은 숫자로 시작이 불가하다는 특징이 있다.
type() 함수로 해당 변수의 타입을 확인 가능하며, dir() 함수로 어떤 기능을 하는지 확인할 수 있다. 변수의 삭제는 del() 함수를 사용한다.
x = 10
print(type(x))
print(dir(x))
# 출력
# int라는 이름을 가지고 있군요!
['__abs__', # 메직 메서드: 절대값이 되는군요!
'__add__', # 메직 메서드: 더하기가 되는군요!
'__and__', # 메직 메서드: 논리 연산이 되는군요!
# ...생략...
'__mul__', # 메직 메서드: 곱하기가 되는군요!
# ...생략...
'real', # 메서드: 실수부를 출력하는 메서드
'to_bytes' # 메서드: 바이트로 변환하는 메서드
]
진수 변환은 간단하게 말해, 12와 같은 10진수 숫자를 2진수, 8진수 등으로 바꾸는 작업을 말한다. 자주 나오는 개념은 아니기에 이런 것이 있다는 것만 기억하고 넘어가자.
메서드는 자료형이 할 수 있는 일이고, 클래스 부분을 정리하며 자세히 설명할 예정이다. 마지막으로 id() 함수는 해당 변수의 주소를 출력해주는 역할을 한다.
# -5 ~ 256
x = 256
y = 256
print(id(x), id(y)) # 출력 : 138041748299984 138041748299984
실수 자료형은 기본적으로 소수점을 가질 수 있다. 또한 float() 함수로 실수로 형변환이 가능하다. 이러한 실수 자료형은 문제점이 1개 있는데 다음의 예시를 보자.
10.1 + 10.2
# 출력 : 20.299999999999997
위의 예시에서 왜 20.3이 아니라 20.299999가 나오는 것일까?
우리는 이 문제를 컴퓨터의 관점에서 보면 이해할 수 있다. 프로그래밍 언어는 기본적으로 사람이 사용하기 편리하도록 10진수를 기반으로 수를 표현하지만 컴파일 과정에서 2진수로 전환되기 때문이다.
.1 * 2 === 0.2,
.2 * 2 === 0.4,
.4 * 2 === 0.8,
.8 * 2 === 1.6,
.6 * 2 === 1.2,
.2 * 2 === 0.4, # 여기서부터 같은 결과가 반복되기 시작합니다..4 * 2 === 0.8,
.8 * 2 === 1.6,
.6 * 2 === 1.2,
.2 * 2 === 0.4,
.4 * 2 === 0.8,
.8 * 2 === 1.6,
.6 * 2 === 1.2,
.
.
.
정부수와 합치면 결과는 0.000110011001100110011... 이 됩니다.
위의 사례를 보면 알 수 있듯이, 0.1은 무한 소수가 되는데 컴퓨터는 메모리의 한계로 무한한 값을 저장할 수 없기 때문에 적당한 소수점 위치에서 반올림하여 계산을 종료한다.
하지만여기서 적당히 소수점 버림을 하면 0.1 + 0.2 의 답은 0.2가 되어버리기 때문에 표현할 수 있는 살짝 더 큰 수인 0.30000000000000004 를 반환하는 것이다.
추가로 설명하자면 실수형은 부동 소수점이 표현할 수 있는 수를 넘겨버리면 무한수로 취급한다는 특징이 있다.
복소수는 자주 쓰이진 않지만 알아보도록 하자.
복소수는 실수와 허수의 합으로 표현되는 수이다. + 연산자를 기준으로 앞이 실수부, 뒤를 허수부라고 부른다. 이러한 복소수의 실수부를 출력할때는 real을 쓰고 허수부는 imag를 쓰면 된다.
다음 소스 코드를 완성하여 날짜와 시간을 출력하시오.
year = '2019'
month = '04'
day = '26'
hour = '11'
minute = '34'
second = '27'
print(year, month, day, )
print(hour, minute, second, )
# 2019/04/26 11:34:27
print(year, month, day, sep='/', end=' ')
print(hour, minute, second, sep=':')
만약 입력으로 김다정이라는 이름이 주어지면 '안녕하세요. 저는 김다정입니다.' 라고 출력하시오.
name = input()
print(f'안녕하세요. 저는 {name}입니다.')
print('안녕하세요. 저는 {}입니다.'.format(n))
print(10/2)의 출력 결과는 5이다?
X, 5.0이다.
혜원이는 평소 영타가 빠르고 정확한 것을 친구들에게 자랑하고 다녔습니다. 반 친구들이 혜원이의 타자 속도가 빠르다는 것을 모두 알게 되자 혜원이는 모두의 앞에서 타자 실력을 보여주게 됩니다.
그런데 막상 보여주려니 긴장이 되서 문장의 모든 e를 q로, n을 b로 잘못 친 것을 발견했습니다.
혜원이는 프로그램을 돌려 재빠르게 모든 q를 e로, b를 n으로 바꾸는 프로그램을 작성하려고 합니다.
문장이 입력되면 모든 q를 e로, b를 n으로 바꾸는 프로그램을 작성해 주세요.
# 완성하려는 문장 안에 q나 b가 들어가지 않는다고 가정합니다.
입출력
입력 : querty
출력 : euerty
입력 : hqllo my bamq is hyqwob
출력 : hello my bame is hyewob
data = input()
print(data.replace('q', 'e').replace('b', 'n')).
# 1. 파이썬의 여러줄 주석은 """ or '''
# 2. print("Hello", "World", "!") -> "Hello World !"
# 3. print 함수의 sep 파라미터는 출력할 여러 값 사이에 구분자 지정
# 4. print("Hello", "Python", sep="-", end='*')
# print("World")의 출력 결과? -> Hello-Python*World
# 기본적인 end 줄바꿈대신 *을 넣음으로써 한줄로 출력됨
# 5. 파이썬에서 None 값을 가진 변수가 마지막 라인에서 출력되는 경우, 결과는 어떻게 되나요?
# -> 아무런 출력도 안나옴
나도 모르는 부분은 다른 수강생들도 모를 수 있기에 부담없이 질문하고 이해하는 과정을 갖자. 뭐든 할 수 있다는 마음가짐을 갖자.