본문 바로가기
HW/Raspberry Pi | Arduino

라즈베리파이 - 파이썬 기초

by 코젼 2022. 8. 16.
728x90
반응형

2022-08-16(41일차)


📂자료

Python교안.pdf
1.38MB


📝chapter1.py

chapter1.py
0.00MB

2+3
5-3
2*3
6/2
1/3
4//3
2//3
6//3
5%3
4%2
5%2
2**8
2**10
2**16
print(“Hello World!”)  #에러
print("Hello","World!") 
print()
print("Hello",end=' ');print("World!")

📝chapter2.py

chapter2.py
0.00MB

 

print(type(12))
print(type("hello"))

a=12.3
print(type(a))
#문자열
print('나는 파이썬을 배웁니다.\n파이썬은 생각보다 훨씬 쉽습니다.')
print('Name: 문유정\tAge: 51')
print('긴 문장은 공간에 비해 너무 길어 쓰기가 힘듭니다. \
그래서 \\Enter키를 이용해 문장을 다음줄과 연속되도록 했습니다.')
print('''긴 문장은 공간에 비해 너무 길어 쓰기가 힘듭니다. 
그래서 \\Enter키를 이용해 문장을 다음줄과 연속되도록 했습니다.''')
print('작은따옴표(\')와 큰 따옴표(")는 문자열을 정의할 때 사용합니다.')
print("작은따옴표(')와 큰 따옴표(\")는 문자열을 정의할 때 사용합니다.")

# indexing
li = [0, 1, 2, 3]
li[1]
li[3]
li[-1]
# Slicing
li[:]
li[:2]
li[:-1]
li[0:]
li[1:]
li[0:-1]
li[::-1]
#문자열의 길이 
print(len("hello"))
print(len(10))
#숫자의 종류
print(type(12))
print(type(12.3))
print(type(12.0))
#연산자 우선순위 
10+3*(5-2)
#변수 만들기
num = 12
strName = "Konan"
#복합 대입 연산자 
num += 1
num -= 2
num *= 3
num /= 2
num %= 2
num **= 2
num //= 3
strName += "Boy"
strName *= 2
#사용자 입력 
print(type(input("User Input : ")))
#문자열을 숫자로 바꾸기 
int("7")
int("10.2")
float("20")
#숫자를 문자열로 바꾸기 
str(12)
str(10.7)

num1 = 10.7
print("Value : "+num1)
print("Value : "+str(num1))
#문자열 지정(%s , %d , %f , %c , %%) 
txt1 = 'JAVA';txt2='Python'
num1=2; num2=4
print('우리는 %s와 %s을 배웁니다.' %(txt1, txt2))
print('%s는 %s보다 %d배는 더 쉬운것 같습니다.' %(txt2, txt1, num1))
print('%d + %d = %d' %(num1, num2, num1+num2))
print('월급이 전년에 비해 %d%% 포인트 증가했다.' %num1)

#문자열의 format() 함수 
strName = "Konan {} is {}"
strName.format("Animation","funny")
strName
"{:d}".format(8)
"{:5d}".format(8)
"{:05d}".format(8)
"{:+d}".format(8)
"{: d}".format(8)
"{:+5d}".format(8)
"{:=+5d}".format(8)
"{:+05d}".format(8)
"{:=+05d}".format(8)
"{1} || {0}".format(8, 4)
"{1:05d} || {0:05d}".format(8, 4)
"{}".format(15.176)
"{:f}".format(15.176)
"{:10.4f}".format(15.176)
"{:10.3f}".format(15.176)
"{:10.2f}".format(15.176)
"{:10f}".format(15.176)
"{:5f}".format(15.176)
"{:g}".format(15.176)
"{:10g}".format(15.176)

"{:10.2g}".format(15.176)
"{:10.3g}".format(15.176)
"{:10.4g}".format(15.176)
"{:10.5g}".format(15.176)
#2,8,16진수 <-> 10진수
h1 = hex(97)       # h1은 문자열 ‘0x61’
h2 = hex(98)       # h2는 문자열 ‘0x62’
print(h1+h2)          # ‘0x610x62’ 가 출력됨
a = int(h1, 16)
b = int(h2, 16)
print(a + b)       # 10진수 195가 됨
print(hex(a + b))     # ‘0xc3’ 가 출력됨

b1 = bin(97)     # b1은 문자열 ‘0b11000001’
b2 = bin(98)     # b2는 문자열 ‘0b11000010’
print(b1+b2)       # ‘0b110000010b11000010’가 출력됨
a = int(b1, 2)
b = int(b2, 2)
print(a+b)
print(bin(a+b))   # ‘0b11000011’ 이 출력됨

bnum = 0b11111100; bstr = '0b11111100'
onum = 0o241; ostr = '0o241'
hnum = 0xf2; hstr = '0xf2'
b1 = int(bnum)
b2 = int(bstr, 2)   # b2 = int(bstr, 0)
o1 = int(onum) 
o2 = int(ostr, 8)   # o2 = int(ostr, 0)
h1 = int(hnum) 
h2 = int(hstr, 16)  # h2 = int(hstr, 0)
print(b1)
print(b2)
print(o1)
print(o2)
print(h1)
print(h2)
#대소문자 바꾸기
"Hello Python".upper()
"Hello Python".lower()
#문자열 양옆의 공백 제거하기
" Hello Python ".strip()
" Hello Python ".lstrip()
" Hello Python ".rstrip()
#문자열의 구성 파악하기
"HelloPython".isalnum()
"HelloPython1".isalnum()
"Hello Python1".isalnum()
"Hello Python".isalpha()
"HelloPython1".isalpha()
"HelloPython1".isdecimal()
"123".isdecimal()
"123".isdigit()
"123.4".isdecimal()
"123.4".isdigit()
"123.4".isalnum()
"Hello Python".lower().islower()
"HelloPython".count("o")
"HelloPython".replace('o', 'a')
#문자열 찾기 
"Hello Python".find("o")
"Hello Python".rfind("o")
#문자열과 in 연산자 
"o" in "Hello Python"
"llo" in "Hello Python"
"ol" in "Hello Python"
#문자열 자르기
"Hello Python".split(" ")
"Hello   Python".split(" ")

📝chapter3.py

chapter3.py
0.00MB

 

# 날짜/시간 활용하기
import datetime
datetime.datetime.now() # datatime 폴더 안의 datatime 클래스의 now함수 사용하

import datetime as dt
dt.datetime.now() 
dt. + TAB
dt._ + TAB
dt.__all__
dt.datetime. + TAB
dt.datetime.__dict__

from datetime import datetime  # dataetime 폴더

start = datetime.now()

import time
time.sleep()
print('1 ~ 백만')
ret = 0
for i in range(1000000):
   ret += i
print('1 ~ 백만 SUM : %d' %ret)
end = datetime.now()
elapsed = end - start
print('Total Time : ', end='')
print(elapsed)
elapsed_ms = int(elapsed.total_seconds()*1000)
print('Total Time : %dms' %elapsed_ms)

# False로 변환되는 값 
if 0:
    print("True")
else:
    print("False")

📝chapter4.py

chapter4.py
0.00MB

◾ 중복이 사라진 리스트를 만들기 위해서는 set()으로 감싸고, list()로 만든다.

# indexing
li = [0, 1, "Hell0", 3]
li[1]
li[3]
li[-1]
li[2]
li[2][1]
li[2][2:4]
li[2][2:4]+" !!"
li[2][2:4]*2
li[3]*4
# Slicing
li[:]
li[:2]
li[:-1]
li[0:]
li[1:]
li[0:-1]
#리스트에 요소 추가하기
li.append(4)
li.append("STATE")
li.insert(1,5)
li.insert(-1,"END")

a = [1,2,3]
b = [4,5,6]
a+b 
a.extend(b)
a
#리스트에 요소 제거하기 
del a[1]
del a
b.pop()
b.pop(0)
b = [4,5,6,7,5]
b.remove(5)
b.clear()
#리스트 내부에 있는지 확인하기
b = [4,5,6,7,5, "Sample01"]
5 in b
"Sample01" in b
"01" in b
"Sample01" not in b
"01" not in b
b.index(5)
b.index("Sample01")
# for 반복문
for idx in range(8):
    print(idx)
#for 반복문: 리스트와 함께 사용하기
li = [1,3,5]
for idx in li:
    print(idx)
#딕셔너리 선언하기 
dict_user = {
    "name":"홍길동",
    "age": 15,
    "item": ["dagger","sword","arrow"],
    "follower":[{"name":"Robin"},
                {"name":"임꺽정"},
                {"name":"문유정"}]
}
#딕셔너리의 요소에 접근하기 
dict_user["follower"] 
#딕셔너리에 값 추가하기/제거하기 
dict_user["follow"] = "NewOne"
dict_user["age"] = 19
dict_user
del dict_user["follow"]
del dict_user
dict_user
#딕셔너리 내부에 키가 있는지 확인하기 
dict_user = {
    "name":"홍길동",
    "age": 15,
    "item": ["dagger","sword","arrow"],
    "follower":[{"name":"Robin"},
                {"name":"임꺽정"},
                {"name":"문유정"}]
}
"age" in dict_user
"follow" in dict_user
dict_user["follow"] 
followVal = dict_user.get("follow") 
followVal
print(type(followVal))
#딕셔너리의 크기 : 키 갯수
print(len(dict_user))
print(len(dict_user.keys()))
#for 반복문: 딕셔너리와 함께 사용하기
for keyVal in dict_user:
    print(keyVal,dict_user[keyVal])
    print("Key : {} ==> Value : {}".format(keyVal,dict_user[keyVal]))
#범위
range(10)
range(5,10)
range(2,10,2)
#for 반복문: 범위와 함께 사용하기 
for i in range(10):
    print(i)
#for 반복문: 리스트와 범위 조합하기 
li = [0,1,2,3,4]
for i in range(len(li)):
    print(li[i])
#for 반복문: 반대로 반복하기 
li = range(4, 0-1, -1)
for i in range(len(li)):
    print(li[i])
    
li = [0,1,2,3,4]
for i in reversed(li):
    print(li[i])

li = [0,1,2,3,4]
for i in li[::-1]:
    print(li[i])

li = list(range(4, 0-1, -1))
    
li = [0,1,2,3,4]
li.reverse()
idx = 0
for i in li:
    print(li[idx])    
    idx += 1


#리스트에 적용할 수 있는 기본 함수
li = [13, 25, 77, 3, 66, 99, 11]
min(li)
max(li)
sum(li)
li2 = sorted(li) # 오름차순
li
li3 = sorted(li,reverse=True) # 내림차순
li
li.sort() # 오름차순
li
li.sort(reverse=True) # 내림차순
li
#reversed() 함수로 리스트 뒤집기
reversed(li) #iterator
for el in reversed(li):
    print(el)
#enumerate() 함수와 반복문 조합하기
li = [13, 25, 77, 3, 66, 99, 11]
for i,val in enumerate(li):
    print(i,val)
#딕셔너리의 items() 
dict_user = {
    "name":"홍길동",
    "age": 15,
    "item": ["dagger","sword","arrow"],
    "follower":[{"name":"Robin"},
                {"name":"임꺽정"},
                {"name":"문유정"}]
}
dict_user.items()
dict_user.keys()
dict_user.values()
#리스트 내포(list comprehensions)
li = [i*2 for i in range(6)]
li1 = [i*2 for i in range(10) if i<8]
dict_user.keys() # 키 가져오기
dict_user.values() # 값 가져오기

📝chapter5.py

# 함수에 매개변수 만들기
def print_n_times(value, n):
    for i in range(n):
        print(value)
        
print_n_times("안녕하세요", 5)
print_n_times("안녕하세요")
print_n_times("안녕하세요", 5, 10)

# 가변 매개변수
def print_n_times(n, *values):
    # n번 반복합니다.
    for i in range(n):
        # values는 리스트처럼 활용합니다.
        for value in values:
            print(value)
        # 단순한 줄바꿈
        print()

print_n_times(3, "안녕하세요", "즐거운", "파이썬 프로그래밍")
print_n_times("안녕하세요", "즐거운", "파이썬 프로그래밍", 3)

# 기본 매개변수 
def print_n_times(value, n=2):
    # n번 반복합니다.
    for i in range(n):
        print(value)

print_n_times("안녕하세요")
print_n_times("안녕하세요", 3)

# 키워드 매개변수
def print_n_times(*values, n=2):  # 기본 매개변수
    # n번 반복합니다.
    for i in range(n):
        # values는 리스트처럼 활용합니다.
        for value in values:
            print(value)
        # 단순한 줄바꿈
        print()

print_n_times("안녕하세요", "즐거운", "파이썬 프로그래밍", n=3) # 키워드 매개변수

# 리턴
def return_test():
    print("A 위치입니다.")
    return                      # 리턴합니다.
    print("B 위치입니다.")

return_test()

# None
def return_test():
    return

value = return_test()
print(value)

# 기본 피보나치
def fibonacci(n):
    if n == 1:
        return 1
    if n == 2:
        return 1
    else:
        return fibonacci(n - 1) + fibonacci(n - 2)


print("fibonacci(1):", fibonacci(1))
print("fibonacci(2):", fibonacci(2))
print("fibonacci(3):", fibonacci(3))
print("fibonacci(4):", fibonacci(4))
print("fibonacci(5):", fibonacci(5))

# global
counter = 0

def fibonacci(n):
    # 어떤 피보나치 수를 구하는지 출력합니다.
    print("fibonacci({})를 구합니다.".format(n))
    global counter
    counter += 1
    # 피보나치 수를 구합니다.
    if n == 1:
        return 1
    if n == 2:
        return 1
    else:
        return fibonacci(n - 1) + fibonacci(n - 2)
        
fibonacci(10)
print("---")
print("fibonacci(10) 계산에 활용된 덧셈 횟수는 {}번입니다.".format(counter))

# 메모화 
dictionary = {
    1: 1,
    2: 1
}

def fibonacci(n):
    if n in dictionary:
        # 메모가 되어 있으면 메모된 값을 리턴
        return dictionary[n]
    else:
        # 메모가 되어 있지 않으면 값을 구함
        output = fibonacci(n - 1) + fibonacci(n - 2)
        dictionary[n] = output
        return output

print("fibonacci(10):", fibonacci(10))
print("fibonacci(20):", fibonacci(20))
print("fibonacci(30):", fibonacci(30))
print("fibonacci(40):", fibonacci(40))
print("fibonacci(50):", fibonacci(50))

# 조기 리턴
dictionary = {
    1: 1,
    2: 1
}

def fibonacci(n):
    if n in dictionary:
        # 메모가 되어 있으면 메모된 값을 리턴
        return dictionary[n]
    # 메모가 되어 있지 않으면 값을 구함
    output = fibonacci(n - 1) + fibonacci(n - 2)
    dictionary[n] = output
    return output

print("fibonacci(10):", fibonacci(10))
print("fibonacci(20):", fibonacci(20))
print("fibonacci(30):", fibonacci(30))
print("fibonacci(40):", fibonacci(40))
print("fibonacci(50):", fibonacci(50))

# 평탄화
def flatten(data):
    output = []
    for item in data:
        if type(item) == list:
            output += flatten(item)
        else:
            output.append(item)
    return output

example = [[1, 2, 3], [4, [5, 6]], 7, [8, 9]]
print("원본: ", example)
print("변환: ", flatten(example))

# 튜플
[a, b] = [10, 20]
(c, d) = (10, 20)

tuple_test = 10, 20, 30, 40  # 괄호가 없는 튜플
type(tuple_test)

a, b, c = 10, 20, 30   # 괄호가 없는 튜플

a, b = 10, 20
a, b = b, a  # 값을 교환

def test():
    return (10, 20)
a, b = test()  # 여러 개의 값을 리턴

# 함수 매개변수
def call_10_times(func):
    for i in range(10):
        func()

def print_hello():
    print("안녕하세요")

call_10_times(print_hello)

# map(함수명, 리스트)
def power(item):
    return item * item
#power = lambda x: x * x  #람다 

list_input_a = [1, 2, 3, 4, 5]
output_a = map(power, list_input_a)
#output_a = map(lambda x: x * x, list_input_a)

# filter(함수명, 리스트) 
def under_3(item):
    return item < 3
#under_3 = lambda x: x < 3  #람다 

list_input_a = [1, 2, 3, 4, 5]
output_b = filter(under_3, list_input_a)
#output_b = filter(lambda x: x < 3, list_input_a)

# 파일 처리
file = open("basic.txt", "w")
file.write("Hello Python Programming...!")
file.close()

with open("basic.txt", "w") as file:
    file.write("Hello Python Programming...!")

with open("basic.txt", "r") as file:
    contents = file.read()
print(contents)
#######
import random
hanguls = list("가나다라마바사아자차카타파하")
with open("info.txt", "w") as file:
    for i in range(1000):
        name = random.choice(hanguls) + random.choice(hanguls)
        weight = random.randrange(40, 100)
        height = random.randrange(140, 200)
        file.write("{}, {}, {}\n".format(name, weight, height))
################
with open("info.txt", "r") as file:
    for line in file:
        (name, weight, height) = line.strip().split(", ")
        if (not name) or (not weight) or (not height):
            continue
        bmi = int(weight) / ((int(height) / 100) **2)
        result = ""
        if 25 <= bmi:
            result = "과체중"
        elif 18.5 <= bmi:
            result = "정상 체중"
        else:
            result = "저체중"
        print('\n'.join([
            "이름: {}",
            "몸무게: {}",
            "키: {}",
            "BMI: {}",
            "결과: {}"
        ]).format(name, weight, height, bmi, result))
        print()
############

# 제너레이터 
def test():
    print("A 지점 통과")
    yield 1
    print("B 지점 통과")
    yield 2
    print("C 지점 통과")
	
output = test()
print("D 지점 통과")
a = next(output)
print(a)
print("E 지점 통과")
b = next(output)
print(b)
print("F 지점 통과")
c = next(output)
print(c)
next(output)

# key 키워드 매개변수
books = [{
    "제목": "혼자 공부하는 파이썬",
    "가격": 18000
}, {
    "제목": "혼자 공부하는 머신러닝 + 딥러닝",
    "가격": 26000
}, {
    "제목": "혼자 공부하는 자바스크립트",
    "가격": 24000
}]

def 가격추출함수(book):
    return book["가격"]

print("# 가장 저렴한 책")
print(min(books, key=가격추출함수))
print(min(books, key=lambda book: book["가격"]))
print()

print("# 가장 비싼 책")
print(max(books, key=가격추출함수))
print(max(books, key=lambda book: book["가격"]))

print("# 가격 오름차순 정렬")
books.sort(key=lambda book: book["가격"])
for book in books:
    print(book)

# 메모리(스택,힙)
a = 10
def 함수(b):
    b = 20
print(a)
함수(a)
print(a)

c = [1,2,3]
def 함수(d):
    d.append(4)
print(c)
함수(c)
print(c)

e = [1,2,3]
def 함수(f):
    f = [4,5,6]
print(e)
함수(e)
print(e)

a = 10
def 함수():
    print(a)
    a = 20
함수()

a = [1,2,3]
def 함수():
    print(a)
    a.append(4)
함수()

a = [1,2,3]
def 함수():
    print(a)
    a = [4,5,6]
함수()

📝chapter6.py

🔸숫자 추가 예외처리

◾ 에러가 발생하면 append하지 않고 pass한다.
 숫자만 추가하고, "스파이" 문자열은 추가되지 않는다.

# try except 구문
try:
    # 숫자로 변환합니다.
    number_input_a = int(input("정수 입력> "))
    # 출력합니다.
    print("원의 반지름:", number_input_a)
    print("원의 둘레:", 2 * 3.14 * number_input_a)
    print("원의 넓이:", 3.14 * number_input_a * number_input_a)
except:
    print("무언가 잘못되었습니다.")

# try except pass 구문
list_input_a = ["52", "273", "32", "스파이", "103"]
list_number = []
for item in list_input_a:
    try:
        float(item) # 예외가 발생하면 알아서 다음으로 진행은 안 되겠지?
        list_number.append(item) # 예외 없이 통과했으면 리스트에 넣어줘!
    except:
        pass
print("{} 내부에 있는 숫자는".format(list_input_a))
print("{}입니다.".format(list_number))

# try except else 구문
try:
    number_input_a = int(input("정수 입력> "))
except:
    print("정수를 입력하지 않았습니다.")
else:
    print("원의 반지름:", number_input_a)
    print("원의 둘레:", 2 * 3.14 * number_input_a)
    print("원의 넓이:", 3.14 * number_input_a * number_input_a)
    
# finally 구문 1
try:
    number_input_a = int(input("정수 입력> "))
    print("원의 반지름:", number_input_a)
    print("원의 둘레:", 2 * 3.14 * number_input_a)
    print("원의 넓이:", 3.14 * number_input_a * number_input_a)
except:
    print("정수를 입력하지 않았습니다.")
else:
    print("예외가 발생하지 않았습니다.")
finally:
    print("일단 프로그램이 어떻게든 끝났습니다.")

# finally 구문 2
def test():
    print("test() 함수의 첫 줄입니다.")
    try:
        print("try 구문이 실행되었습니다.")
        return
        print("try 구문의 return 키워드 뒤입니다.")
    except:
        print("except 구문이 실행되었습니다.")
    else:
        print("else 구문이 실행되었습니다.")
    finally:
        print("finally 구문이 실행되었습니다.")
    print("test() 함수의 마지막 줄입니다.")
test()

# finally 구문 3
print("프로그램이 시작되었습니다.")
while True:
    try:
        print("try 구문이 실행되었습니다.")
        break
        print("try 구문의 break 키워드 뒤입니다.")
    except:
        print("except 구문이 실행되었습니다.")
    finally:
        print("finally 구문이 실행되었습니다.")
    print("while 반복문의 마지막 줄입니다.")
print("프로그램이 종료되었습니다.")
    
# 예외 객체 1
try:
    file = open("info.txt", "w")
    예외.발생해라()
    file.close()
except Exception as e:
    print(e)
print("# 파일이 제대로 닫혔는지 확인하기")
print("file.closed:", file.closed)

# 예외 객체 2
try:
    file = open("info.txt", "w")
    예외.발생해라()
except Exception as e:
    print(e)
finally:
    file.close()
print("# 파일이 제대로 닫혔는지 확인하기")
print("file.closed:", file.closed)

# 예외 객체 3
try:
    file = open("info.txt", "w")
    예외.발생해라()
except Exception as e:
    print(e)
file.close()
print("# 파일이 제대로 닫혔는지 확인하기")
print("file.closed:", file.closed)

# 예외 구분하기
list_number = [52, 273, 32, 72, 100]
try:
    number_input = int(input("정수 입력> "))
    print("{}번째 요소: {}".format(number_input, list_number[number_input]))
except ValueError as exception:
    print("정수를 입력해 주세요!")
    print("exception:", exception)
except IndexError as exception:
    print("리스트의 인덱스를 벗어났어요!")
    print("exception:", exception)

# 모든 예외 잡기
list_number = [52, 273, 32, 72, 100]
try:
    number_input = int(input("정수 입력> "))
    print("{}번째 요소: {}".format(number_input, list_number[number_input]))
    예외.발생해주세요()
except ValueError as exception:
    print("정수를 입력해 주세요!")
    print(type(exception), exception)
except IndexError as exception:
    print("리스트의 인덱스를 벗어났어요!")
    print(type(exception), exception)
except Exception as exception:
    print("미리 파악하지 못한 예외가 발생했습니다.")
    print(type(exception), exception)
728x90
반응형

댓글