22.06.29 변수,식별자,data_type,조건문,반복문
VScode 사용
python 설치 -https://www.python.org/ 다운로드
VScode - python,Code Runner 설치
<script>
# 한줄 주석처리를 할때는 # 기호를 사용합니다.
'''
여러줄 주석입니다.
'''
#Ctrl + alt + n : 실행 단축키(VSCode)
print('hello python~')
# 파이썬에서는 문장의 끝에 세미콜론을 적지 않는 것이 원칙.
# 단, 한 줄에 여러 문장을 작성 할 때는 사용.
print(3*7); print(2+3)
# 파이썬에서는 불필요한 들여쓰기를 절대 허용하지 않습니다.
# print('예') 에러
# 파이썬의 모든 명령은 대/소문자를 철저하게 구분합니다.
# Print('예') 에러
</script>
<script>
'''
* 변수(variable)
1. 변수는 데이터를 저장하기 위한 공간에 이름을 붙인 것.
2. 하나의 변수에는 하나의 데이터만 저장이 가능.
3. 언제든지 변경도 가능합니다.
'''
# 파이썬은 타입을 작성하지 않습니다.
# 타입이 없는게 아니라 동적 타이핑 언어입니다.
num = 10 + 9
print(type(num)) # 타입 확인
num = 50 + 40 # 변수의 값 변경도 일반 선언과 동일합니다.
print(num)
# 선언되지 않은 변수는 사용이 불가능합니다.
# print(result) 에러
apple = '사과'
</script>
<script>
'''
* 식별자(identifier)
1. 사용자 정의로 데이터에 이름을 붙인 것.
2. 모듈, 패키지, 변수, 함수, 클래스 등의 이름을 식별자라고 합니다.
3. 식별자 이름은 중복해서 지정할 수 없습니다.
'''
# 식별자 이름을 숫자로 지정하거나 숫자로 시작하면 안됩니다.
# 7 = 777 에러
number7 = 7
num7ber = 7
# 식별자 이름에 공백 포함 안됩니다.
# my birth day = 19930416 에러
my_birth_day = 19930416 # 스네이크 케이스 사용
# 키워드를 식별자로 지정할 수 없습니다. (if, while, for)
# if = '만약에' 에러
# print()와 같은 내장함수의 이름을 식별자로 사용할 수는 있어요.
# 하지만 더 이상 함수의 기능을 쓸 수는 없습니다.
print = '출력하다'
# print(print) 에러
# 한글, 한자 등 영어 이외의 문자도 가능하긴 하지만 사용을 권장하지는 않습니다.
</script>
<script>
'''
* 표준 출력 함수 print()
() 안에 출력하고 싶은 변수, 리터럴 상수, 수식 등을 적으면
터미널에 텍스트를 출력합니다.
'''
# 출력할 데이터가 여러 개라면 괄호 안에 출력할 데이터들을
# 콤마로 나열해서 작성합니다.
# 여러 개의 값들을 공백과 함께 가로로 나란히 출력합니다.
dog = '멍멍이'
cat = '야옹이'
print(dog, cat, '좋아요~') #멍멍이 야옹이 좋아요~
'''
print 함수 내부에는 sep이라는 속성이 존재합니다.
sep은 separator의 약자로 구분자라고도 부릅니다.
sep속성을 기본값이 ' '(공백 문자열)로 지정되어 있으며
만약 변경을 원한다면 sep 속성을 직접 작성하여 변경합니다.
'''
print(dog, cat, '좋아요', sep='!!!') # 멍멍이!!!야옹이!!!좋아요
'''
end 속정은 데이터 출력 이후 맨 끝에 포함할 문자를 지정하는 용도입니다.
기본값은 '\n'이 지정되어 있기 때문에
print 함수를 쓸 때마다 자동으로 줄 개행이 되는 것 처럼 보이는 겁니다.
'''
# print(dog, cat, '좋아요~', end='\n') 기본값
print(dog, cat, '좋아요~', end='!!!') #멍멍이 야옹이 좋아요~!!!
print('이 문장은 줄 개행이 되어서 나올까요?') #줄개행 안됨.
# end,sep 함께 사용 가능 하지만 출력할 내용이 언저 전달되어야 합니다.
print(dog,cat,'좋아요~',end=' ',sep='~')
# print(end=' ',sep='~',dog,cat,'좋아요~') end,sep이 먼저오면 에러
</script>
<script>
'''
* 정수형(Integer)
- 수치형 타입 중 정수형(int)은 양수, 음수의 정수값을 표현하며
소수점 이하 자리는 표현할 수 없습니다.
- 다른 언어는 저장 범위가 타입마다 정해져 있지만,
파이썬은 메모리가 허용하는 한 무수히 많은 정수를 저장할 수 있습니다.
'''
num = -4321
print(type(num)) # <class 'int'>
# 2진수(0b), 8진수(0o), 16진수(0x)를 접두어로 붙여서 표현이 가능합니다.
a = 0b1011 # 11
b = 0o77 # 63
c = 0xAC00 # 44032
# 정수를 다른 진법으로 변경하려면
# 2진수 변환함수 bin(), 8진수 oct(), 16진수 hex()를 사용합니다.
print(bin(33)) # 0b100001
print(oct(0b111001)) # 0o71
print(hex(8923)) #(0x22db)
'''
* 실수형(floation point)
- 실수형 자료에는 10진수형 소수점 표현 방식과
지수형 표현방식을 사용한 실수값을 저장할 수 있습니다.
- 범위는 따로 없습니다.
'''
f = 85.432
print(type(f)) # <class 'float'>
# 지수 표현 방식
g = 9.832e13 #e13: 10^13 소수점을 오른쪽으로 13번옮겨라
print(g) # 98320000000000.0
h = 9.832e-4 # 10^-4 소수점을 왼쪽으로 4칸 옮겨라
print(h) # 0.0009832
'''
* 복소수형(complex)
- 복소수는 제곱해서 음수가 되는 가상의 수
- 허수를 나타내는 접미사는 j를 사용합니다.
'''
i = 1 + 2j
print(type(i)) # <class 'complex'>
'''
* 논리형(boolean)
- 논리형 데이터 타입은 명제가 참이면 True (앞글자 대문자!)
거짓일 경우 False 값을 가집니다.
- 0은 False
'''
b1 = True
b2 = False
# 파이썬은 문자열도 동등 비동등 비교 가능합니다.(==)
# 대/소문자까지 정확하게 일치해야만 True를 도출합니다.
password = 'abc1234!'
print(password == 'Abc1234!') # False
</script>
<script>
'''
* 문자열(String)
- 단일 문자들을 따옴표('', "")로 감싸서
나열한 문자 데이터의 집합 형태입니다.
- 따옴표 안에 어떤 형태의 데이터가 들어가도 문자로 인식해준다.
- 전 세계의 모든 문자를 저장할 수 이고, 길이에도 제한이 없습니다.
'''
# 나는 그에게 "도와줘!"라고 말했다.
s1 = '나는 그에게 "도와줘!"라고 말했다.'
# 탈출 문자를 적용해서(\) 따옴표를 문자로 표현할 수 있습니다.
s1 = "나는 그에게 \"도와줘!\"라고 말했다."
# Let's go together!
s2 = 'Let\'s go together!'
# \사용할때는 \\두개씩 사용!한개는 탈출문자로 인식한다.
file1 = 'C:\\temp\\new.jpg'
# 문자열 앞에 접두어 r을 붙이면 해당 문자열은 탈출 문자를 적용하지 않는다는 뜻.
file2 = r'C:\temp\new.jpg'
# """ 줄개행이 필요한 문자열은 안에 작성"""
# ''' '''도 문자열 표시이지만 문장주석으로 사용하기 때문에 """를 사용하자.
anthem = """동해물과 백두산이 마르고 닳도록
하느님이 보우하사 우리나라 만세
무궁화 삼천리 화려강산 대한사람
대한으로 길이 보전하세"""
# 가독성을 위해 줄개행을 했지만 출력결과는 한줄로 표시하고 싶을때 문장끝에 \ (line continue) 붙이기
anthem2 = """동해물과 백두산이 마르고 닳도록 \
하느님이 보우하사 우리나라 만세 \
무궁화 삼천리 화려강산 대한사람 \
대한으로 길이 보전하세"""
'''
* 문자열 연산
- 파이썬은 문자열의 덧셈 연산과 곱셈 연산을 지원합니다.
- 뎃셈 연산은 문자열을 서로 연결하여 결합니다.
'''
s3 = '오늘 저녁은 '
s4 = '치킨입니다.'
print(s3 + s4 + ' 와 맛있겠당~')
'''
- 파이썬은 문자열의 곱셈 연산 또한 지원하고 있습니다.
- 곱셈 연산자(*)로 문자열을 정해진 수 만큼 반복 연결합니다.
'''
print('배고파 ' * 4) # 배고파 배고파 배고파 배고파
# print(s3 * 1.7) 에러. 횟수는 정수
# print(s3 * s4) 에러. 문자열 끼리는 곱할 수 없습니다.
</script>
<script>
name = '홍길동'
score = 90
'''
- 문자열과 정수의 + 연산 진행 시 타입이 일치하지 않아서
에러가 발생하므로, 타입을 어느 한 쪽으로 맞춰야 합니다.
- 정수나 실수를 문자열로 변환할 때는 str()내장 함수를 사용합니다.
'''
# print(name + '의 점수는' + score + '점 입니다.') # TypeError에러. str과 int는 연결할 수 없음.
print(name + '의 점수는' + str(score) + '점 입니다.') # str() 함수 사용.
# 숫자로 이루어진 문자열을 정수로 변환할 때는 int()를 사용.
n1 = 10
n2 = '34'
print(n1 + int(n2))
# 실수로 이루어준 문자열을 실수로 변환할 때는 float()를 사용.
s = '2.34'
print(10 + float(s))
print(10 + float('3.14e-2')) # 지수형태도 실수로 변환 가능
# 반올림을 할 때는 round() 함수를 사용합니다.
print(round(4.78)) # 5
# 반올림할 자리수를 선택하려면 함수의 두번째 매개값으로 자리수를 지정.
print(round(4.78, 1)) # 4.8
</script>
<script>
'''
* 표준 입력 함수 input()
- 함수 괄호 안에 사용자에게 질문할 내용을 문자열 형태로 작성합니다.
- input()과 함께 항상 변수를 선언해서 입력값을 받아주셔야 하며
입력받은 데이터의 타입은 str로 저장됩니다.
'''
nick = input('너 별명이 뭐야?: ')
print('내 별명은 ' + nick + '입니다.')
# 입력값이 만약 정수, 실수라면 inpt함수 자체를 int(), float()함수로 감싸주시면 됩니다.
# input 함수의 리턴값이 문자열이라고 했으니까, 변환해서 대입하면 끝.
price = int(input('음식의 가격: ')) # str을 int로 형변환해서 받겠다.
people = int(input('사람 수: '))
print('지불할 가격: ', price * people, '원')
</script>
<script>
'''
* 조건문 if ~ else
- 조건문은 조건식의 진위(참, 거짓)여부에 따라 코드를 분기별로 다르게 실행하는 제어문입니다.
- 키워드 if 뒤에 조건식을 적고, 조건식의 결과가 참이면 if문
거짓인 경우 else문이 실행됩니다.
- if문은 단독 사용이 가능하지만, else는 반드시 if와 함께 사용해야 합니다.
'''
age = int(input('몇 살이세요?: '))
#(),{}가 없고 : 이있다.
if age > 19:
print('당신은 성인입니다.')
else:
print('당신은 미성년자 입니다.')
'''
* 파이썬의 블록 구조 표현
- 타 언어는 중괄호({})로 종속 구조를 표현할 때
파잇썬은 중괄호를 작성하지 않습니다.
- 그 대신 콜론(:)과 들여쓰기로 블록구조를 표현합니다.
- if문 뿐만이 아니라 코드의 종속 구조를 나타내는 모든 문법에서
(반복문, 함수 선언...)콜론과 들여쓰기를 사용합니다.
파이썬의 권장 들여쓰기 횟수는 스페이스바 4회입니다.
들여쓰기는 모든 횟수가 통일되어야 합니다.
콜론(:) 이후에는 반드시 줄 개행이 진행되어야 합니다.
'''
</script>
<script>
'''
* 다중분기 조건문 if~ elif ~ else
- 타 언어에서 else if로 작성하는 키워드를
파이썬에서는 단축해서 elif로 작성합니다.
문법의 의미는 똑같습니다.
- 첫번째 조건식의 결과가 False일 경우 아래에 있는
elif 문의 조건식을 새롭게 테스트 하여 해당 조건이 True일 경우
elif에 종속된 코드를 실행합니다.
개수에 제한은 없습니다.
'''
age = int(input('나이: '))
if age >= 20:
print('성인입니다.')
elif age >= 17:
print('고등학생입니다.')
elif age >= 14:
print('중학생입니다.')
elif age >= 8:
print('초등학생입니다.')
else:
print('미취학 아동입니다.')
'''
* 중첩 if문
중첩 if문은 if블록 내부에 새로운 if문이 있는 형태입니다.
- 첫 번째 조건식의 결과가 True일 경우 한번 더 조건을 설정할때 사용합니다.
'''
height = float(input('키를 입력하세요: '))
if height >= 140:
age = int(input('나이를 입력하세요: '))
if age >= 8:
print('놀이기구 탑승이 가능합니다.')
else:
print('놀이기구 탑승이 불가합니다.')
else:
print('키가 140미만입니다.')
</script>
<script>
'''
* 논리 연산자(&, |, and , or, not)
- &, and 연산자는 좌항과 우항의 논리값이 모두 True일 경우에만 전체 결과를 True로 도출합니다.
- |, or 연선자는 좌항과 우항의 논리값이 한 쪽만 True여도 전체 결과를 True로 도출한다.
'''
a = 6
if a > 1 and a < 10:
print('a는 1보다 크고 10보다는 작습니다.')
else:
print('a는 1~10 사이의 숫자가 아닌 거 같아요.')
# 파이썬은 위의 식을 연결해서도 작성할 수 있습니다.
if 1 < a < 10:
print('ok!')
'''
* 단축 평가 연산(short circuit operator: and, or)
- 좌항에서 전체 결과가 판명 났을 경우 우항 연산을 진행하지 않는 연산자 입니다.
'''
c = 0
if (c == 0) or (10 / c == 5): # or은 통과 |는 에러(우항도 검사하기 때문에)
print('통과!')
# not 연산자는 논리값을 반전시킵니다.
d = False
if not d:
print('반전됨!')
'''
- C 언어에서는 정수 0을 False로 해석하고,
0이 아닌 모든 정수를 True로 해석합니다.(논리현 타입이 없어서)
파이썬에서도 C의 논리해석을 그대로 적용시킬 수 있습니다.
'''
apple = 3
if not apple:
print('사과가 하나도 없습니다.')
else:
print('사과가', apple, '개 있습니다.')
</script>
<script>
'''
* 반복문(loop)
- 반복문은 유사한 명령을 횟수를 지정하여 반복 실행하는 제어문 입니다.
- 파이썬의 반복문 키워드느 while, for ~ in 이 있습니다.
'''
# while문에 필요한 3요소: 제어변수(begin), 조건식(end), 증감식(step)
i = 1 # begin
total = 0
while i <= 10: #end
total += i
i += 1 #파이썬은 증감연산자가 없습니다.(++, --)
print('1부터 10까지의 누적합: ', total)
# 문제
'''
- 정수를 2개 (x, y) 입력받아 x부터 y까지의
누적합계를 while을 사용하여 구하는 코드를 만드세요.
ex) "x부터 y까지의 누적합계: z"
- 처음에는 x가 무조건 작은 값이 들어올 것이다 라고 가정하고
작성하세요.
그 후, 만약 x가 y보다 더 큰 값이 들어왔을 때는,
어떻게 대처할 지 생각해 보세요. (while을 2번쓰는 건 아니에요~)
'''
x = int(input('x를 입력하세요.'))
y = int(input('y를 입력하세요.'))
''' 자바에서 사용하는 방법
if x > y: # x가 y보다 크면 값 서로 바꾸기
temp = x
x = y
y = temp
'''
# 위의 코드 파이썬에서는 이렇게 사용할 수 있다.(언패키징)
if x > y:
x, y = y, x
total = 0
i = x # 마지막 출력값에 증가한 x가 나오기 때문에 i에 x를 대입해서 사용
while i <= y:
total += i
i += 1
print(x,'~',y,'까지의 누적합계:',total)
</script>
<script>
'''
* 반복문 for ~ in
- 파이썬의 for문은 시퀀스 자료형 내부의 데이터를 순차적으로 꺼내서
반복 작업하는 반복문 입니다. (자바의 향상for문)
- 시퀀스 자료형이란 여러 개의 값들을 모아놓은
집합 형태를 말하며, 대표적으로 문자열, 리스트 등이 있습니다.
- 리스트란 []안에 데이터들을 순차적으로 나열해 놓은 일종의 순차적 배열입니다.
for 제어변수 in 시퀀시 자료형:
반복 실행문
'''
for num in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
print('반복문 돌아라', num)
# 1~10까지 누적합
total = 0
for n in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
total += n
print(total)
</script>
<script>
'''
* 내장함수 range()
- 순차적으로 증가하는 정수의 순차적 자료형을 만들 때
대괄호 안에 데이터들을 콤마로 일일히 나열하는 것은 한계가 있기 때문에
range()함수를 통해 보다 쉽게 순차형 반복 범위를 지정할 수 있습니다.
ex) range(begin, end, step)
- begin은 값이 포함되지만(이상), end는 값이 포함되지 않습니다.(미만)
'''
list1 = [1,2,3,4,5,6,7,8,9,10]
print(list1)
list2 = list(range(1, 11, 1))
print(list2)
list3 = list(range(4, 15)) # step 생략시 기본값 1
print(list3)
# range 함수 괄호 안에 값을 한 개만 주면 end로 처리하고
# begin 값을 자동으로 0으로 처리합니다.
list4 = list(range(5)) # range(0, 5, 1)
print(list4)
# 1~100까지의 누적합을 구하는 로직
total = 0
for n in range(1, 101):
total += n
print(total)
</script>
<script>
'''
- 정수를 하나 입력받아서 1부터 해당 수까지의
모든 소수를 가로로 출력하고, 그 소수의 개수를
출력하시면 됩니다. (중첩 for문)
ex) 입력값: 12
소수: 2, 3, 5, 7, 11
개수: 5개
'''
num = int(input('정수를 하나 입력하세요: '))
count = 0 # 소수가 몇 개인지를 체크할 변수
for n in range(1, num+1): # 미만이니까 num+1
cnt = 0 # 소수 판별을 위해 나누어 떨어진 횟수를 체크할 변수.
for i in range(1, n+1):
if n % i == 0:
cnt += 1
# 소수 판별이 끝나고 나서
if cnt == 2: # 1과 자기자신으로 나눠지기 때문에 cnt = 2
count += 1
print(n, end =' ')
print('\n소수들의 개수: ', count ,'개')
</script>