본문 바로가기

IT&코딩/python

python 2주차 복습-1

728x90
반응형

제어문 -> 프로그램의 흐름을 제어함

조건문과 반복문이 있다.

조건문 : ~라면, ~가 아니라면
python에서 사용되는 자료의 형태 : Bool

조건문 if [Bool]

Bool : 참, 거짓을 나타내는 자료형. 참은 True, 거짓은 False (예약어 첫 글자는 대문자)

숫자, 문자열의 경우 bool값으로 형변환했을 때 언제 True, False 가 나올까

숫자의 경우는 0일 경우 False
문자의 경우는 공백("")인 경우 False 가 도출된다
숫자자료형의 경우 0은 False, 0이 아니면 True
문자열 자료형의 경우 ""False,""이 아니면 True

비교연산자, 논리연산자 -> Bool 값을 반환함.

if [Bool]
if [비교연산]
if [논리연산]
------------------------------------------------------------------------------------------------------------------------
비교연산자 : 참, 거짓을 반환

#비교연산자
a=10
print(a>0)
print(a<3)
print(a==1)
print(a!=2) #다르다 !=
print(a>=4)
print(a<=5)

print(1<a<20) #파이썬만 가능
 
#논리연산자 : Bool 자료형끼리의 연산
print(True and True)
print(True and False)
print(False and True)
print(False and False)

print(True or True)
print(True or False)
print(False or True)
print(False or False)

# if 비교연산 and 비교연산
# if 비교연산 or 비교연산
# 연산 우선순위 산술>비교>논리
# 각종 연산 > 비교 > and > or

a=10
print(a%2==0 or a>10 and a//2==0)
------------------------------------------------------------------------------------------------------------------------
 
조건문 if 진짜 중요하다.
if [Bool]:
     [종속문장]
파이썬에서 :의 의미 -> 다음 문장은 무조건 "종속문장"
 
a=15
if a>10:
    print(1) #개발자들은 보통 4칸 띄운다. 맞춰주자 이 공식은.
    print(2)
print(3)    

if 1: #if True와 똑같다고 생각하면 된다. bool로 변환할 때의 기억을 상기.
    print(1)
    print(2)

# A=int(input("수를 입력하세요:"))

# if A<10:
#     print("한 자리수 입력!")

A=int(input("입력:"))

if 0<=A<10:
    print(A,"는 한 자리 수!")
if A>=11:
    print(A,"는 한 자리 수가 아닙니다.")
A=int(input("입력:"))

if 10<=A<100:
    print("두 자리수 입력!")


a=7

if 10:
    print(1)
if a:
    print(3)
if a!=10:
    print(4)
if a==0 or 0<a<10 and (a+3)%2==0:
    print(8)

숫자열과 문자열은 '같다', '다르다'는 괜찮지만 부등호 연산은 에러가 발생한다.
모르는 표현이 나오면 IDLE에 가서 해봐라.
문자끼리의 부등호나, 같다 다르다도 가능하다.

------------------------------------------------------------------------------------------------------------------------

#수를 입력받고 둘 중 큰 수를 출력하는 프로그램(같은 경우 같다고 출력)

a=int(input("첫 번째 수 입력:"))
b=int(input("두 번째 수 입력:"))

if a>b:
    print(a,"가 더 크다")
if a==b:
    print("같다")
if a<b:
    print(b,"가 더 크다")
------------------------------------------------------------------------------------------------------------------------

수를 입력받고 짝수, 홀수를 판별하는 프로그램

a=int(input("수 입력"))

if a%2==0:
    print("짝수")
if a%2==1:
    print("홀수")
------------------------------------------------------------------------------------------------------------------------

#수를 입력받고, 7의 배수인지 판별하는 프로그램

a=int(input("수를 입력하시오:"))

if a%7==0:
    print(a,"7의 배수")
if a%7!=0:
    print(a,"7의 배수가 아닙니다")
------------------------------------------------------------------------------------------------------------------------

국어, 수학 점수를 입력받고 평균이 80점 이상일 경우 "합격" 80점 미만일 경우 "불합격 출력하는 프로그램"

a=int(input("국어점수 입력:"))
b=int(input("수학점수 입력:"))

c=(a+b)/2
print("당신의 평균점수는", c,"입니다")

if c>=80:
    print("합격")
if c<80:
    print("불합격")
------------------------------------------------------------------------------------------------------------------------
 
# 두 자리 수 두 수를 입력 받고, 서로 더했을 때, 1의 자리에서 올림이 발생하는지 판별하는 프로그램
 
a=int(input("두 자리수 입력1"))
b=int(input("두 자리수 입력2"))

aa=a%10
bb=b%10
c=aa+bb

if c>=10:
    print("올림 발생")
if c<10:
    print("올림 발생x")
#다른 방식으로의 접근

#더하기 전 두 수의 십의자리를 각각 더한 값과 더하고 난 다음 십의 자리가 다르면 받아올림이 발생한거다라는 접근.


a=int(input("두 자리수 입력1"))
b=int(input("두 자리수 입력2"))

c=(a+b)//10


cc=a//10+b//10

if c==cc:
    print("받아올림 발생x")
if c!=cc:
    print("받아올림 발생")
------------------------------------------------------------------------------------------------------------------------
#두 수의 차이를 구해주는 프로그램!

a=int(input("수 입력"))
b=int(input("수 입력"))

if a>=b:
    print("두 수의 차이는",a-b,"입니다")
if a<b:
    print("두 수의 차이는",b-a,"입니다")
------------------------------------------------------------------------------------------------------------------------
 
# 두 수와 연산자를 입력받고 연산 결과를 출력하는 프로그램

a=int(input("수를 입력하세요:"))
b=int(input("수를 입력하세요:"))
c=input("연산을 입력하세요")

if c=="+":
    print(a,"와",b,"의 합은",a+b)
if c=="-":
    print(a,"와",b,"의 차는",a-b)
if c=="*":
    print(a,"와",b,"의 곱은",a*b)

하지만 이 경우에 사용자가 곱셈 연산기호를 어떻게 입력할지 모르기 때문에
세 번째 조건절은
if c=="*" or "x" or "X":
    print(a,"와",b,"의 곱은",a*b)
라고 할 수 있지만 이 문법에는 결함이 있다. 문자열은 일단 공백이 아니면 무조건 True 기 때문에
------------------------------------------------------------------------------------------------------------------------



1. 연산자 우선순위
2. 논리연산자는 bool값 끼리 연산
아무거나 입력해도 무조건 실행 어차피 or true기 때문에
따라서 c=="*" or c=="x" or c=="X" 로 표현해야 한다(사용자를 배려했을 때)
 
------------------------------------------------------------------------------------------------------------------------
 
if choice==1:
    print("1번 선택")
elif choice==2:
    print("2번 선택")
elif choice==3:
    print("3번 선택")
elif choice==4:
    print("4번 선택")
else:
    print("메뉴가 없음")

1. if는 무조건 시작, else는 끝을 의미합니다.
단 elif와 else의 사용은 자유자재!
if - elif - elif
if- else 도 가능

2. 조건의 유무
if, elif 는 조건 존재, else 는 X

3. 조건 다음에 ":"

------------------------------------------------------------------------------------------------------------------------

두 수를 입력받고 둘 중 큰 수를 출력하는 프로그램 (같은 경우 같다고 출력)
if elif else를 사용해서
 
A=int(input("수 입력:"))
B=int(input("수 입력:"))

if A>B:
    print(A)
elif A<B:
    print(B)
else:
    print("같다")
 
------------------------------------------------------------------------------------------------------------------------
 
평균점수 문제 응용

a=int(input("국어점수:"))
b=int(input("수학점수:"))

c=(a+b)/2

if c>=80:
    print("합격")
elif c<80:
    print("불합격")
 
 

------------------------------------------------------------------------------------------------------------------------

if와 elif,else의 차이

1. else는 내가 규정한 것 외의 상황들을 다 받아준다
2. 실행방식의 차이 : if는 위에서 True가 발생하건 말건 별개의 케이스
3. elif는 코드가 중간에 조건충족시 작동을 멈추는데, if는 그래도 다 검토
4. 의미 자체의 차이 (elif 구문은 생략된 의미가 존재한다. if로 풀어쓰면 더 길어짐.)

------------------------------------------------------------------------------------------------------------------------

input 함수 유의사항

input 함수 안에서는 쉼표의 사용이 불가능하다.
하나의 문자열만 들어갈 수 있다.

ex)

천원권=input(1000,"원권 몇 장을 가지고 계신가요?") -> 불가능
천원권=input(str(1000)+"원권 몇 장을 가지고 계신가요?") -> 가능
------------------------------------------------------------------------------------------------------------------------
 

# level 1번
수학, 과학 성적을 입력받고,
평균이 90 점 이상이면 “A”,
평균이 80 점 이상이면 “B”,
평균이 70 점 이상이면 “C”,
나머지는 “D” 가 나오도록 프로그램하세요.

math=int(input("수학성적 입력:"))
sci=int(input("과학성적 입력:"))
avg=(math+sci)/2

if avg>=90:
    print("A")
elif avg>=80:
    print("B")
elif avg>=70:
    print("C")
else:
    print("D")

------------------------------------------------------------------------------------------------------------------------

# level 2번

# 두 수와 연산자를 입력받고 사칙연산 결과를 출력하는 프로그램을 작성하세요.
# (연산자에 이상한 값이 들어가면 "연산자가 이상해요"라고 출력하도록 하세요.)

a=int(input("숫자 1 입력:"))
b=int(input("숫자 2 입력:"))
c=input("연산자 입력")

if c=="+":
    print(a+b)
elif c=="-":
    print(a-b)
elif c=="*" or c=="x" or c=="X"
    print(a*b)
else:
    print("연산자가 이상해요")

x랑 X는 제외했습니다

------------------------------------------------------------------------------------------------------------------------

# level 3번

# 월을 입력받고, 계절을 출력하는 프로그램
# 편의상 12, 1, 2 를 겨울, 3, 4, 5를 봄 6, 7 ,8을 여름 9,10,11을 가을이라 하겠습니다.

mon = int(input())

# 1
if mon == 1:
    print("겨울")
elif mon == 2:
    print("겨울")

# 2
if mon == 3 or mon == 4 or mon == 5:
    print("봄")

# 3.
if 3 <= mon <= 5:
    print("봄")
elif 6 <= mon <= 8:
    print("여름")
elif 9 <= mon <= 11:
    print("가을")
elif mon == 12 or 1 <= mon <= 2:
    print("겨울")
else:
    print("입력오류!")



# 4
if 3 <= mon <= 5:
    print("봄")
elif 6 <= mon <= 8:
    print("여름")
elif 9 <= mon <= 11:
    print("가을")
elif 1 <= mon <= 12:
    print("겨울")
else:
    print("입력오류!")​


# 5
# if 1:
#     pass
# # pass : 아무런 역할을 하지 않는다
# # why 쓰냐;; 문제 전체 틀 잡을 때 엄청엄청 중요하게 사용될 예정!

# 유효값 검증 먼저하는 계절 코드!!

if 1 <= mon <= 12: # 계절 - 올바른 입력들어올때
    if 3 <= mon <= 5:
        print("봄")
    elif 6 <= mon <= 8:
        print("여름")
    elif 9 <= mon <= 11:
        print("가을")
    else:
        print("겨울")
else:
    print("입력오류")
------------------------------------------------------------------------------------------------------------------------
# level 4번
수(A)를 입력받고, 절대값을 출력하는 프로그램

A=int(input("수를 입력하시오:"))

if A>=0:
    print("절대값은",A,"입니다.")
else:
    print("절대값은",-A,"입니다")

------------------------------------------------------------------------------------------------------------------------

# level 5번
#구입할 사과(3000), 배(2000)의 개수와 현재 소지하고 있는 금액을 입력받고,
#구매가 가능할 경우 잔돈이 얼마인지 출력해주고
#구매가 불가능할 경우 "구매불가"라고 출력
#(구매 불가의 경우, 구매를 위해 필요한 금액 출력)

print("===============================================")
print("사과는 3000원")
print("배는 2000원")
print("===============================================")

ap=3000
bp=2000
a=int(input("구입할 사과의 개수:"))
b=int(input("구입할 배의 개수:"))
c=int(input("현재 소지하고 있는 금액"))
total=a*ap+b*bp

if c>=total:
    print("잔돈:",c-total,"원")
else:
    print("구매불가")
    print("구매를 위해서는",total-c,"원이 더  필요합니다")
 
------------------------------------------------------------------------------------------------------------------------
# level 6번
# 수를 입력받고
# A가 3의 배수이면 "3의 배수입니다."
# A가 5의 배수이면 "5의 배수입니다."
# A가 15의 배수일 경우 "15의 배수입니다." 라고 판단하는 프로그램

A=int(input("수 입력:"))

if A%15==0:
    print("15의 배수입니다")
elif A%5==0:
    print("5의 배수입니다")
elif A%3==0:
    print("3의 배수입니다")
else:
    print("해당 없음")
 
------------------------------------------------------------------------------------------------------------------------
 
# level 7번
print("="*30)

print("1. 아메리카노")
print("2. 카페라떼")
print("="*30)
menu = int(input('메뉴 입력 : ')) # 메뉴 입력

# 메뉴 잘입력했을 때
if 1 <= menu <= 2:
    print("="*30)
    print("1. HOT")
    print("2. ICE")
    print("="*30)
    temp = int(input('메뉴 입력 : '))   # 온도 입력

    # 온도 잘 입력되었을 때
    if 1 <= temp <= 2:
        if menu == 1: # 아메리카노 골랐을 때
            if temp == 1:
                print("따아")
            else:
                print("아"*2)
        else: # 라떼 골랐을 때
            if temp == 1:
                print("따라떼")
            else:
                print("아라떼")
    # 온도 입력이상시
    else:
        print("온도 입력 오류")

# 메뉴 입력이상시
else:
    print("메뉴 입력 오류")

# 내 코드

print("="*20)
print("1. 아메리카노")
print("2. 카페라떼")
print("="*20)

menu=int(input("메뉴 선택:"))
if menu==1:
    print("="*20)
    print("1. ICE")
    print("2. HOT")
    print("="*20)
    tem=int(input("온도선택:"))
    if tem==1:
        print("아이스 아메리카노 선택")
    elif tem==2:
        print("핫 아메리카노 선택")
    else:
        print("온도입력이상")
elif menu==2:
    print("="*20)
    print("1. ICE")
    print("2. HOT")
    print("="*20)
    tem=int(input("온도선택:"))
    if tem==1:
        print("아이스 카페라떼 선택")
    elif tem==2:
        print("핫 카페라떼 선택")
    else:
        print("온도입력이상")    


 
       
else:
    print("메뉴입력이상")

------------------------------------------------------------------------------------------------------------------------

6일차

------------------------------------------------------------------------------------------------------------------------

N=int(input("며칠차 당번을 알고 싶으신가요?:"))


if N>0:
    if N%4==1:
        print("A")
    elif N%4==2:
        print("B")
    elif N%4==3:
        print("C")
    else:
        print("D")

else:
    print("양수를 입력해주세요")
오늘은 화요일이다. N일 후에는 무슨 요일일까?

N=int(input("입력:"))

if N>0:
    if N%7==1:
        print("수요일")
    elif N%7==2:
        print("목요일")
    elif N%7==3:
        print("금요일")
    elif N%7==4:
        print("토요일")
    elif N%7==5:
        print("일요일")
    elif N%7==6:
        print("월요일")
    else:
        print("화요일")

else:
    print("입력오류")
------------------------------------------------------------------------------------------------------------------------
 
#윤년을 파악하는 코드 입력.
 
year=int(input("연도를 입력하세요:"))

if year>0:
    if year%400==0:
        print("윤년")
    elif year%100==0:
        print("윤년X")
    elif year%4==0:
        print("윤년")
    else:
        print("윤년X")
else:
    print("입력오류")
 
------------------------------------------------------------------------------------------------------------------------
과제 해결
 
국어입력
1. 국어입력이 유효할 때
  수학입력
  1-1. 수학입력이 유효할 때
       평균 구하고 결과 출력
  1-2. 수학입력이 유효하지 않을 때
       안내
2. 국어입력이 유효하지 않을 때
  안내

국어, 수학 점수를 입력받고, 평균이 90 점 이상이면 "PERFECT!", 80 점 이상이면 "GREAT!", 그 외에는 "SOSO..." 를 출력해주세요.

※ 단, 국어, 수학점수는 0에서 100 까지를 유효한 값이라고 하겠습니다.
   국어점수가 유효하지 않을때 "국어점수 입력 이상!" 출력 후 프로그램 종료
   수학점수가 유효하지 않을때 "수학점수 입력 이상!" 출력 후 프로그램 종료
   유효할 경우에는 평균에 따라 결과(perfect,great...)가 출력되도록함!
   수학점수는 국어점수 유효할 때만 입력받도록!

kor = int(input("국어점수 : "))         # 국어입력
if 0 <= kor <= 100:                     # 국어입력이 유효할 때
    math = int(input("수학점수 : "))    # 수학입력
    if 0 <= math <= 100:                # 1-1. 수학입력이 유효할 때
        avg = (kor + math) / 2          # 평균구하고 결과출력
        if avg >= 90:
            print("Per")
        elif avg >= 80:
            print("Gre")
        else:
            print("Soso ...")
    else:                               # 수학입력이 유효하지 않을 때
        print("수학입력이상!")          # 안내
else:                                   # 국어입력이 유효하지 않을 때
    print("국어입력이상!!")

------------------------------------------------------------------------------------------------------------------------

반복문 (for)

python에서 사용되는 자료의 형태

리스트, 튜플

A=[1]
B=("hello",) # 하나만 들어있는 튜플 표기 ,를 마지막에 붙임.
print(type(A))
print(type(B))

iterable : 반복할 수 있는
subscriptable : 순서가 있는

index : 번호표, 0부터 시작하는 개념
인덱싱 : 인덱스를 이용하여 자료에 접근
리스트, 튜플[index]

heros=["1. 아이언맨","2. 토르","3. 비전","4. 완다"]
print(heros)

user=int(input("좋아하는 영웅 숫자 골라"))
print(heros[user-1], "골라")

------------------------------------------------------------------------------------------------------------------------

언제 for문이고 언제 while문을 사용하는가?

for : 반복횟수가 명확할 때.


while : 반복횟수가 명확하지 않을 때.

li=[1,2,3,]

li[0]="one"

print(li)

tu=(1,2,3)
tu[0]=0 # 튜플은 대체 자료 대체 불가능
------------------------------------------------------------------------------------------------------------------------
# 1. 맨 뒤에 자료 추가★★★★★★★★★
# 리스트.append(x) x를 리스트 맨 뒤에 추가함
li.append(1)
print(li)
li.append(2)
print(li)

# 2. 원하는 위치에 자료추가
# 리스트.insert(idx, x) : idx 인덱스위치에 x를 추가해줌
li.insert(0, "hello")
print(li)

# 3. 자료 제거

# 리스트.pop(idx) idx 인덱스 위치의 자료를 리스트에서 제거 및 ★반환★ (idx의 디폴트값 > 맨 뒤)
x=li.pop(1)
print(x,"가 제거된 리스트, li")

# 4. 리스트 내의 자료개수 반환
# 리스트.count(x) 리스트 안에 있는 x의 개수를 반환!
ㅣ=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2]
print(ㅣ.count(1))

# 5. 인덱스 탐색
# 리스트.index(x) 리스트에서 x의 인덱스를 반환!
llli =["hello",1,"world"]
print(llli.index("world"))

d=["apple","banana","air"]
print(d)

#사용자에게 단어를 입력받고, 해당 단어를 d에서 삭제하는 코드
a=input("삭제할 단어 입력")

b=d.index(a)

d.pop(b)

print(d)
6. 정렬
리스트.sort() 정렬해줌
l=[7,2,0,10,29,34,123,652] #단 같은 자료형인 경우만
l.sort()
print(l)

m=["가","파","바"]
m.sort()
print(m)

# 7. 리스트 뒤집기
l.reverse()
print(l)

# 8. 리스트 비우기
l.clear()
print(l)

li=[1,23,4,5,6]
sum(li) #리스트 요소들의 합
len(li) #리스트 요소들의 개수

print(sum(li)/len(li))
------------------------------------------------------------------------------------------------------------------------ 
반복문과는 무슨관계? srt, list, tuple, set, dict

for [반복문에서 사용될 변수] in [iterable 자료형]:
   [종속문장]
반복횟수 : 자료형의 크기 만큼 종속문장 실행
반복문에서 사용될 변수 : 자료형 내 자료들

for i in [1,2,3,4,5]:
    print(1) # 반복횟수만 적용되는 상황

li=["hello",3-2j,10,"world",1.2]

for i in li:
    print(i)

range(23)
0~22 ,1씩 증가

range(20,99)
20~98, 1씩 증가

range(10,20,2)
10, 12, 14, 16, 18

range(28)
range(12,58)
range(10,100)

for i in range(1,1001):
    print(i)

------------------------------------------------------------------------------------------------------------------------ 

 

tip : i를 하찮게 생각! 막 대하세요.

1에서부터 입력받은 수(N)까지 출력

N=int(input("수 입력:"))

for i in range(1,N+1):
    print(i)

역방향으로 해보자
N=int(input("수 입력:"))
for i in range(N,0,-1):
    print(i)

팩폭 : 컴퓨터는 여러분이 짠 대로만 돌아가게 되어있음.

오늘 자 과제
입력 받은 두 수(A,B) 사이의수 출력

A=int(input("수 입력:"))
B=int(input("수 입력:"))

if A>=B:
    for i in range(A-1,B,-1):
        print(i)
else:
    for i in range(A+1,B):
        print(i)
728x90
반응형

'IT&코딩 > python' 카테고리의 다른 글

python 3주차 복습-3  (0) 2022.07.23
python 3주차 복습-2  (0) 2022.07.21
python 3주차 복습-1  (0) 2022.07.20
python 2주차 복습-2  (0) 2022.07.19
python 1주차 복습  (0) 2022.07.07