개발자 미니민의 개발스터디

[파이썬] 연산자 문법, for, if 제어문

by mini_min
[파이썬] 연산자 문법, for, if 제어문

✔️ 연산자 문법

: print() 안에서 연산 가능

a =11
b = 2
print(a+b)
print(a-b)
print(a*b)
print(a/b) #5.5
print(a//b) #5
print(a%b) # 1
print(a**b) #121


#두정수 ? 10 5
a, b = input("두 정수?").split()
a = int(a)
b = int(b)
print(a+b)
print(a-b)
print(a*b)
print(a//b)

print("{}+{}={}".format(a,b,a+b))
print("{}-{}={}".format(a,b,a-b))
print("{}*{}={}".format(a,b,a*b))
print("{}//{}={}".format(a,b,a//b))

 

a = 10

a += 10

a -= 10

a *= 10

a /= 10

 

📓 항등 연산자

#항등 연산자 
print(a is b) #true
print(a is c) #false
print(a is not c) #true

 

📓 멤버 연산자 : 포함 여부를 판단한다. in , not in

#멤버 연산자 : 포함 여부 판단

a = [2,3,4,5,6,7]
print(a)
print()

print(1 in a) #1이 있냐 물어보는거 : false
print(3 in a) #1이 있냐 물어보는거 : true

print(1 not in a) # true
print(3 not in a) # false

 

📓 멤버 연산자 포함 여부 확인

#멤버 연산자 : 포함여부 판단
members = ["kim", "lee", "hong", "jung", "choi"]

while True:
    name = input("검색할 이름[엔터:종료] ? ")
    if not name: break
    print("회원" if name in members else "손님", "입니다.")

 

📓 bin(인자) : 2진수 문자열로 변환 

📓 비트 연산자 : >> , << , &, |, ^, ~

a = 0b10101010
b = 0b01110011

print(a,b) # 170 115 
print(bin(a),bin(b)) # 2진수 문자열로

print("a & b :" , a&b, ", " , bin(a&b)) # 34 ,  0b100010
print("a | b :" , a|b, ", " , bin(a|b)) # 251 ,  0b11111011
print("a ^ b :" , a^b, ", " , bin(a^b)) #  217 ,  0b11011001
print("~a :" , ~a, ", " , bin(~a)) # -171 ,  -0b10101011
 
print("a >> 2 : " , a>>2, ", " , bin(a>>2)) # 42 ,  0b101010
print("a << 2 : " , a<<2, ", " , bin(a<<2)) # 680 ,  0b1010101000

 

📓 윤년, 평년 찍기

a = int(input("년도?"))

s = "홀수" if a%2 else "짝수"
print("{0}년은 {1}년도 입니다".format(a, s))

#윤년, 평년 찍기
a = int(input("년도?"))
s = "윤년" if a%4 and a%100 or a%400 else "평년"
print("{0}년은 {1}입니다.".format(a,s))

#isLeapYear
isLeapYear = a%400==0 or a%4==0 and a%100!=0
s = "윤년" if isLeapYear else "평년"
print(f'{a}년은 "{s}"입니다.')

 

📓 if 문 : 들여쓰기를 잘해야한다. 중요 또 중요!

if / elif / else 

n = int(input("점수 ?"))

s = ""
if n>=90:
    s = "A"
elif n>=80:
    s = "B"
elif n>=70:
    s = "C"
elif n>=50:
    s = "D"
else:
   s = "F"
   
print(f"{n} : {s}")   
print("------")

 

📓 3개의 숫자 입력받아 적은수에서 큰수 출력하기

# 세 개의 숫자를 입력 받아 적은수에서 큰수로 출력
a,b,c = map(int, input("세 개의 정수 입력 ? ").split())

temp = ""
if a > b: a, b = b, a
if a > c: a, c = c, a
if b > c: b, c = c, b

print(a,b,c)

 

📓 두 수 입력받아 사칙연산하기

# 두 수와 연산자를 입력 받아 사칙연산
# 두 수 ?
a,b = map(int, input("두 수?").split())
op = input("연산자 ?")

s = ""
if op=="+": s=a+b
if op=="-": s=a-b
if op=="*": s=a*b
if op=="/": s=a/b

print(f'{a} {op} {b} = {s}')

 

📓 while 문, while True 를 주면 무한루프문을 만들 수 있다.

s = 0
n = 0
while n < 10:
    n+=1
    s+=n
print("결과 : {}".format(s))

 

# 무한루프
while True:
    num = int(input("정수[종료:0] ? "))
    if not num: break
    
    if num % 2:
        print(f"{num} : 홀수입니다.")
    else:
        print(f"{num} : 짝수입니다.")

 

📓 년도와 월을 입력 받아 월의 마지막 날짜 구하기 

# 년도와 월을 입력 받아 월의 마지막 날짜를 구하기 
# 무한 루프 이용. 단 년 또는 월이 0이면 종료 
# 마지막 날짜는 컬렉션 타입을 사용하지 않고 조건 표현식으로 구하기
# 년도에 2022 월에 12 입력한 경우 출력 
# 2022년 12월 마지막 날짜는 31일 


while True:
    y =int(input("년도 ?"))
    m =int(input("월 ?"))
    if not y or not m: break
    
    last = (29 if y%400==0 or y%4==0 and y%100 else 28) \
if m==2 else(30 if m%2 else 31)\
if m>=8 else (31 if m%2 else 30)

    print(f"{y}년 {m}월의 마지막날짜는 {last}일 입니다.")

 

📓 똑같은 문제 : list 이용하여 출력하기 

# 년도와 월을 입력 받아 월의 마지막 날짜를 구하기 
# 무한 루프 이용. 단 년 또는 월이 0이면 종료 
# list 이용
# 년도에 2022 월에 12 입력한 경우 출력 
# 2022년 12월 마지막 날짜는 31일 

while True:
    y=int(input("년도 ?"))
    m=int(input("월 ?"))
    if not y or not m: break
    
    day = [31,28,31,30,31,30,31,31,30,31,30,31]
    
    day[1] = 29 if y%400==0 or y%4==0 and y%100 else 28
    print(f"{y}년 {m}월의 마지막 날짜는 {day[m-1]}입니다.")

 

📓 수를 입력받아 약수와 갯수 구하기

# 수를 입력 받아 약수와 약수의 개수를 출력한다.
# 입력 받은 수가 0이면 종료
# 실행 예 
# 수 ? 30
# 1 2 3 5 6 10 15 30
# 개수 : 8개

while True:
    num = int(input("입력수 ? "))
    if not num :break
    if num < 0:continue
    
    i = 1
    cnt = 0
    print("약수 :", end=' ')
    while i<=num :
        if num%i ==0:
            cnt+=1
            print(i, end=' ')
        i+=1
    print(f"\n개수 : {cnt}")

 

📓 ✨ 피보나치 수열 구하기 

# 1부터 피보나치수를 20개 출력
# 단, 한줄에 5개 출력하고 수는 7칸으로 출력
# 1 1 2 3 5  

a = 0
b = 1
row = 0

for cnt in range(20):
    c = a
    a = b
    b = c + b
    row += 1
    print(('%7d')%a, end='')
    if row % 5 == 0: print()
    
# while 문 써도 ㄱㅊㄱㅊ
# print("{:7d}".format(a), end="")
# 1부터 피보나치수를 20개 출력
# 단, 한줄에 5개 출력하고 수는 7칸으로 출력
# 1 1 2 3 5  

a1 = 1
a2 = 1
row = 0

for cnt in range(20):
    row += 1
    print(('%7d')%a1, end='')
    a1,a2 = a2, a1+a2
    
    if row % 5 == 0: print()
    
# while 문 써도 ㄱㅊㄱㅊ
# print("{:7d}".format(a), end="")

 

📓 2 ~ 100 사이의 수 중에서 소수를 한 줄에 5개씩 출력하기

# 2 ~ 100 사이의 수 중에서 소수를 한줄에 5개씩 출력

num = 2
cnt = 0

while num < 100:
    i = 2
    flag = True
    while i <= num // 2:
        if num % i == 0:
            flag = False
            break
        i += 1
        
    if flag: 
        print(("%3d")%num, end= " ")
        cnt += 1
        if cnt % 5 == 0: print()
    
    num += 1

 

📓 range(인자) : 숫자 리스트를 자동으로 만들어주는 함수이다. 

for 문과 함께 자주 사용되는 함수로 파라미터의 숫자에 해당되는 범위의 값을 반복 가능한 객체로 만들어 반환한다.

1~3개의 파라미터를 가진다.

range(처음시작, 끝나는수, step) 

print(range(5)) # range(0, 5)
print(type(range(5))) # <class 'range'>

print(list(range(5))) # [0, 1, 2, 3, 4]
print(tuple(range(5))) # (0, 1, 2, 3, 4)
print(set(range(5))) # {0, 1, 2, 3, 4}

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

print(list(range(5,10))) # start ~ stop-1 [5, 6, 7, 8, 9]
print(list(range(1,10,2))) # start, stop, step [1, 3, 5, 7, 9]
print(list(range(10,0,-2))) # start, stop, step [10, 8, 6, 4, 2]

 

📓 enumerate() : 수를 열거한다. 

리스트가 있는 경우 순서와 리스트의 값 (순서, 값) 을 전달하는 기능을 가진다.

순서가 있는 자료형 (list, set, tuple. dictionary, string)을 입력받아 인덱스 값을 포함하는 enumerate 객체를 반환한다.

보통 for 문과 함께 자주 사용된다. 

data = enumerate((1,2,3))
print(data, type(data))
for i,value in data:
    print(i, ":", value)
print()

data = enumerate({1,2,3})
for i,value in data:
    print(i, ":", value)
print()

data = enumerate([1,2,3])
for i,value in data:
    print(i, ":", value)
print()

d = {"이름":"김자바", "나이":20}
data = enumerate(d)
for i, key in data:
    print(i, ":", key)
print()

data = enumerate("자바 파이썬")
for i, value in data:
    print(i, ":", value)
print()

 

📓 for 문장

for 변수 in Collection_Data : 형식

아래 처럼 대부분의 컬렉션 유형의 데이터를 출력할 수 있다. string도 글자 하나하나 변수에 담아서 출력가능

for i in (1,2,3):
    print(i, end=' ')
print()

for i in {1,2,3}:
    print(i, end=' ')
print()

for i in [1,2,3]:
    print(i, end=' ')
print()

d = {"name":"김자바", "age":20}
for i in d:
    print(i, ":", d[i])
print()

for i in "Phython":
    print(i, end=' ')
print()

for i in []:
    print(i)
else:
    print("데이터가 없습니다.")

 

📓  [식 for 변수 in Collection_data if 조건]

# [식 for 변수 in Collection_data if 조건]

list1 = [i**2 for i in range(1,11)]
print(list1)

list1 = [i for i in range(1,11) if i%2]
print(list1)

list1 = [i for i in range(1,11) if not i%2]
print(list1)

list1 = [i*j for i in range(1,10)
             for j in range(1,10)]

for i in range(0, len(list1)):
    print("{:3d}".format(list1[i]), end=' ')
    if(i+1)%9 ==0: print()

 

📓 for 문으로 구구단 출력하기 

# 2~9단까지 구구단
# for 문장을 3번 써서 2,3,4,5 / 6,7,8,9 단 나오도록 

for i in range(1,10):
    for j in range(2,10):
        print(f"{j} * {i} = {i*j}\t", end='')
    print()

 

 

 

'Python' 카테고리의 다른 글

[파이썬] 클래스 2  (0) 2022.12.25
[파이썬] 클래스  (0) 2022.12.18
[파이썬] 함수  (0) 2022.12.18
[파이썬] 별찍기, selection sort, bubble sort  (0) 2022.12.18
[파이썬] 기본 문법  (0) 2022.12.12

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기