조컴퓨터

20200803-07 Python 코딩기초 (Ⅱ) 본문

자바 웹개발자 과정

20200803-07 Python 코딩기초 (Ⅱ)

챠오위 2020. 8. 21. 00:56

논리연산자(boolean형)

숫자형, 문자(열)형, 논리형을 상대로 코딩이 가능한데, 예를 들면




a=True
print(a)
print("True")



b=False
print(b)
print("False")


c=not a
print(c)


d=not b
print(d)

①의 2번째 줄의 결과값은 boolean형 True이고, 3번째 줄은 문자형 True이다.

③은 a값의 부정이고, ④는 b값의 부정이다.

 

 

boolean형에서 다른 형식의 연산자 또한 활용할 수 있다.

① print(5<3)

② print(5>3)
③ print(5<=3)
④ print(5>=3)
⑤ print(5==3)
⑥ print(5!=3) 

 


result=100>5
print(result)

 

①의 결과값은 False, ②는 True,

③은 False, ④는 True,

③과 ④의 '<=', '>='의 형태는 각각 '작거나 같다', '크거나 같다'를 표시하는 연산자이다.

 

⑤은 False, ⑥은 True

⑤와 ⑥의 '==', '!='의 형태는 각각 '좌우가 서로 같다', '좌우가 서로 같지 않다'를 나타내는 연산자이다.

 

⑦은 결과값이 True가 나온다.

 

 

또다른 형식의 연산자를 살펴보면

 

//and
① print(True and True)    #True
② print(True and False)   #False 
③ print(False and True)   #False
④ print(False and False)  #False 

 

//or
⑤ print(True or True)     #True 
⑥ print(True or False)    #True 
⑦ print(False or True)    #True
⑧ print(False or False)   #False

 


a=100>50        #True 
b=20>10         #True 
print(a and b)   #True


c=100>=100 and 50==10     #True and False 
print(c)                              #False

 

and, or, not이 활용된 이 형태를 논리연산자라 한다.

 

 

문자열 데이터를 String이라 한다.

" 와 ' 로 감싸져 있는 데이터를 말하는데, 해당 형태는 우선순위가 놓다.

앞서 말했던 것처럼 " ', ' " 형식의 따옴표 혼용은 안된다.

 

예1)

msg1 = "Life is too short"
msg2 = "You need Python"

 

print(msg1 + ", " + msg2)     #append

→ Life is too short, You need Python

 

 

예2)

name = "Python"
print(name*50)

 

예2) 결과값은 Python이 50번 찍혀 나오는 것을 확인할 수 있다.

 

 

또한, 문자열 데이터에서는 앞글자를 잘라 사용할 수 있기 때문에 이런 식의 사용이 가능하다.

 

jumin="1912304" 

 

birth=jumin[:6]   # :6 -> 제일 앞에서부터 6개 가져오라는 뜻 
print(birth)

→ 191230

 

gender=jumin[6:]  # 6: -> 6번째 글자부터 마지막까지 가져오기 
print(gender) 
→ 4

 

 

문제) 주민번호를 이용해서 태어난 년도 만들기

print("20" + jumin[:2])    #내 답

→2019

 

year="20" + jumin[:2]    #선생님 답

print(year)

→2019

 

(참고) 여기서 조건문을 활용하면 (1, 2), (3, 4), (5, 6)의 처리가 간단해진다.

 

 

문제) 태어난 월, 일을 구하시오.

print(jumin[2:4])  #꼬릿말로 인해 들어가는 숫자 때문에 마지막 수에 +1

→ 12

print(jumin[4:6])  #(이하동)

→ 30

 

month=jumin[2:4]

print(month)

→ 12

date=jumin[4:6]

print(date)

→ 30

주민등록번호는 이렇게 활용 가능하다.

 

 

 

이제 코딩의 꽃 중 하나인 조건문을 알아보자.

조건문은 참, 거짓으로 판단 가능한(boolean형) 문장을 뜻한다. 

처리할 식이 여러 개일 경우 tap키로 조절해야 함을 잊지 말자.

 

If + 조건식 :
    (조건이 True일 때) 처리할 식

예)

have_money=False

if have_money: 

    print("오늘은")       # tap (tap이 안 먹힌 경우에는 조건문 성립X)

    print("맘스터치")    

print("싸이버거")        

→ 싸이버거 (have_money가 False이므로 if 가정은 성립하지 않는다.)

 

 

If + 조건식 :
    (조건이 True일 때) 처리할 식
else:
    (조건이 False일 때) 처리할 식

예) 19세 이상이면 성인, 아니면 청소년

age=19

if age>=19:

    print("성인")      #age=19; 성인

else: 

    print("청소년")   #age=17; 청소년

 

* else는 반드시 if와 동일하게 나열되어야 한다. 

 

 

If + 조건식1 : 
    (조건1이 True일 때) 처리할 식
elif + 조건식2:
    (조건2가 True일 때) 처리할 식
elif + 조건식3:
    (조건3이 True일 때) 처리할 식
else:
    (조건1, 2, 3이 아닐 때) 처리할 식

예) 90점 이상일 때 상반, 80점 이상일 때 중반, 80점 미만일 때 하반 

score=50

if score>=90:

    print("상반")

elif score>=80:

    print("중반")

elif score<80:

    print("하반")

else:

    print("보충수업")

 

 

문제1) 성적 프로그램

name="코로나"
kor=100
eng=100
mat=30
aver=(kor+eng+mat)//3

print(name)  #코로나
print(kor)     #100
print(eng)    #100
print(mat)    #30
print(aver)    #76


문제2) 평균이 95점 이상이면 장학생
if aver>=95:
    print("장학생")
else:
    print("장학생이 아닙니다.")
→ 장학생이 아닙니다.

문제3) 국어점수가 70점 이상이면 합격, 아니면 불합격
if kor>=70:
    print("국어:합격")
else:
    print("국어:불합격")
→ 국어:합격

문제4) 평균이 90점 이상이면 A학점,
                   80점 이상이면 B학점,
                   70점 이상이면 C학점,
                   60점 이상이면 D학점,
                   나머지는        F학점

if aver>=90:
    print("결과:A학점")
elif aver>=80:
    print("결과:B학점")
elif aver>=70:
    print("결과:C학점")
elif aver>=60:
    print("결과:D학점")
else:
    print("결과:F학점")
→결과:C학점

문제5) 절대값(무조건 양수값)을 구하시오.

num=-3

#내 답
if num>=0:
    print(num)
else:
    print(-num)
→ 3

#선생님 답
if num<0:
    print(num*-1)
else:
    print(num)
→ 3
문제6) 과락
         평균점수가 70점 이상이면 합격
         (단, 국영수 세 과목 중에서 한 과목이라도 40점 미만이면 재시험)
         평균점수가 70점 미만이면 무조건 불합격

name="코로나"
kor=100
eng=100
mat=30
aver=(kor+eng+mat)//3

#내 답(1)
if kor<40:
    print("재시험")
elif eng<40:
    print("재시험")
elif mat<40:
    print("재시험")
elif aver>=70:
    print("합격")
else:
    print("불합격")
→ 재시험

처음에는 아주 단순하게 조건과 문제를 도치한 형태로 풀어냈다.
평균점수가 70점 이상이기 이전에 국영수 세 과목 중에서 한 과목에서 40점 미만인 경우를 찾아내고 40점 미만이 없다면 그 이후에 평균점수가 70점 이상임을 알아내는 것이 가장 단순하게 풀 수 있는 방법이다.
허나, 답안으로 요구하는 것이 이런 방향이 아님을 알았기에 답안을 수정했다.

#내 답(2), 선생님 답
if aver>=70:
    if kor<40 or eng<40 or mat<40:
        print("재시험")
    else:
        print("합격")
else:
    print("불합격")
→ 재시험

해당 형태는 전형적인 if문이다. 이중if문의 형식으로 이루어져 있고, 문제가 요구하는 조건을 역순이 아닌 순서 그대로 나열하였다. (내 첫답안은 조건 → 메인 문제 → 서브 문제 로 접근했다면, 이번 답안은 메인 문제 → 조건 → 서브 문제 로 문제의 문장 나열 그대로 나타냈다.)

문제 안의 '세 과목 중에서 한 과목이라도'라는 표현은 모든 과목이 다 40점 미만이 나왔을 경우(and)가 아닌 세 과목 중 한 과목만 40점 미만인 경우(or)에 해당한다.

 

이번에는 반복문이다.

반복문에는 while문과 for문 두 가지가 있는데, 두 문법의 사용은 반복 회차에 따라 달라진다.

while은 반복 회차가 부정확한 경우 사용되고,

for는 반복 회차가 정확한 경우에 사용된다. 

 

먼저 while문의 형태를 보자.

while + 조건식 : 
    (조건이 True일 때) 처리할 식

if문과 동일하게 생겼다.

 

(참고)
출력서식
① %d: 정수값 출력
② %f : 실수값 출력
③ %s: 문자열 출력

예1)

print("나이:%d" % 25)

② print("키:%f" % 178.9)

③ print("이름:%s" % "코로나")

→ 나이:25

    키:178.900000

    이름:코로나

 

예2)

① print("%d년 %d월 %d일" % (2020, 8, 5))

    → 2020년 8월 5일

str="%d년 %d월 %d일"

msg=str % (2020, 8, 5)

print(msg)

→ 2020년 8월 5일

 

문제7) 구구단 4단 출력하기 (while문)
dan=4
i=1
while i<=9:
    print("%d * %d = %d" % (dan, i, dan*i))
    i=i+1

→ (4단이 출력된다)
4 * 1 = 4
4 * 2 = 8
4 * 3 = 12
4 * 4 = 16
4 * 5 = 20
4 * 6 = 24
4 * 7 = 28
4 * 8 = 32
4 * 9 = 36

 

for문은 앞서 말한 것처럼 반복 회차를 정확히 알고 있는 경우에 사용할 수 있다.

 

for a in range(초기값, 종료값 전까지):
    print(a)

예)
for a in range(1, 10):
    print(a)

→ 
1
2
3
4
5
6
7
8
9


for b in range(초기값, 종료값 전까지, 증감):
    print(b)

예)
for b in range(1, 10, 3):
    print(b)


1
4
7

이 경우는 1에서 시작해서 10까지 나열하는 경우인데, 증감이 3씩 이루어진다.
1, 4=1+3, 7=4+3, 10=7+3이지만 종료값 전까지만 이루어져야 하므로 10은 제외된다.
문제8) 구구단 4단 출력하기 (for문)

#내 답
for a in range(1, 10):
    print(4*c)

→ (단순히 4단의 답이 출력된다)
4
8
12
16
20
24
28
32
36

이 경우에는 아주 단순한 for문으로 변수 4*a의 a자리에 1에서부터 10까지를 대입했다. 


#선생님 답
dan=4
for b in range(1, 10):
    print("%d * %d = %d" % (dan, c, dan*c))

→ (4단이 출력된다)
4 * 1 = 4 
4 * 2 = 8 
4 * 3 = 12 
4 * 4 = 16 
4 * 5 = 20 
4 * 6 = 24 
4 * 7 = 28 
4 * 8 = 32 
4 * 9 = 36

이 경우는 보기 좋게 앞에 곱셈표기를 나타내었다.
문제9) 구구단 2 ~ 9단 출력하기

for dan in range(2, 10):     #2부터 9까지 dan을 출력하고
    print("%d단" % dan)     #몇 단인지 알아보기 편하게 출력서식 또한 지정해준다.

    for i in range(1, 10):     #1부터 9까지를 순차적으로 추출한 후 위에서 구한 dan과 곱해준다.
        print("%d * %d = %d" % (dan, c, dan*c))

→ (2 ~ 9단이 출력된다/생략)
문제10) 1 ~ 10까지 짝수, 홀수를 구분해서 출력하기

#내 답
for num in range(1, 11):
    if num%2==1:    # num%2==1은 2의 배수가 아닌 수(홀수)를 나타낸다.
        print("홀수")
    else:
        print("짝수")


홀수
짝수
홀수
짝수
홀수
짝수
홀수
짝수
홀수
짝수

이건 %s가 필요하다.


#선생님 답
for num in range(1, 11):
    if num%2==0:    # num%2==0은 2의 배수(짝수)를 나타낸다.
        print("%d는 %s" % (num, "짝수"))
    else:
        print("%d는 %s" % (num, "홀수"))


1는 홀수
2는 짝수
3는 홀수
4는 짝수
5는 홀수
6는 짝수
7는 홀수
8는 짝수
9는 홀수
10는 짝수

답안이 안정적이다. %d 뿐만 아니라 %s도 활용한 for문이다.

 

**내일은 자바 기초코딩 시작합니다**

'자바 웹개발자 과정' 카테고리의 다른 글

200812 OT  (0) 2020.08.26
20200803-07 JAVA 코딩기초 (Ⅰ)  (0) 2020.08.24
20200803-07 Python 코딩기초 (Ⅰ)  (0) 2020.08.19