관리 메뉴

Jerry

[python] 기본 다지기 #1 본문

etc/python

[python] 기본 다지기 #1

juicyjerry 2021. 12. 22. 01:02
반응형

vscode language change (한국어/영어로 언어 변경하기)

- ctrl + shift + P로 커맨드 팔레트 실행 후 'language'를 검색한다.

- 표시 언어 구성(Configure Display Language)를 선택합니다.

- 나타난 언어를 선택하거나 희망하는 언어를 설치 후 설정한다.

 

print 라는 함수

 

    print(name + "이는" + age + "살이며, " + hobby + "을 아주 좋아해요")
TypeError: can only concatenate str (not "int") to str

오직 str로 str를 연결할 수 있다.

print문 안에서 '+'를 이용해 정수를 출력하기 위해선 정수를 str로 감싸줘 문자로 바꿔줘야한다. 

print문 안에서 ','를 이용해 정수를 출력하기 위해선 정수를 str로 안 감싸줘도 된다. 대신 ,가 들어가면 한 칸씩 빈칸이 생긴다.

 

 

ctrl + / : 주석 처리

 

 

print('helloWorld')

# 숫자 자료형
print(5)
print(-10)
print(3.14)
print(100000000000000000000000000000000000000000000000000000000000000)
print(5+3)
print(5 + 3)
print(5 * 4)
print(3 * (3 + 1))

# 문자열 자료형
print('풍선')
print('ball')
print("zz*9")
print("ㅗ"*9)

# 불린 자료형
print(3 > 5)
print(3>=3)
print(True)
print(False)
print(not True)
print(not False)
print(not ( 5 > 10))

# 변수
# 반려동물을 소개해 주세요
animal = "강아지"
name = "미미"
age = 6
hobby = "산책"
is_adult = age >= 3

print("우리 집 " + animal + "의 이름은 " + name + "이에요")

hobby = "낮잠"
#print(name + "이는 " + str(age) + "살이며, " + hobby + "을 아주 좋아해요")
print(name, "이는 ", age, "살이며", hobby, "을 아주 좋아해요")
print(name + "는 어른일까요? " + str(is_adult))

 

 

#연산자
print(1+1) 
print(3-2)
print(5*2)
print(3/3)

print(2**3)
print(5%3)
print(555//3)

print(10 > 3)
print(4 >= 7)

print(3 == 3)
print(4 == 16/4)
print(4 == 16//4)

print(1 != 3)
print (not(1 != 3))

# and 조건은 a와 b 둘 다 참이어야 조건 성립
print((3 > 0) and (3 < 5))
print((3 > 0) & (5 < 8))
print((3 > 0) & (5 > 8))

# or 조건은 a와 b 둘 중 하나라도 참이면 조건 성립
print((3 > 0) or (3 < 0))
print((4 > 0) | (3 < 5))

print(5 > 4 > 3)
print(5 > 4 > 7)

 

 

# 연산자 간단한 수식
print(2 + 3 * 4)
print((2 + 3) * 4)

number = 2 + 3 * 4
print(number)

number = number + 2
print(number)

number += 2
print(number)

number -= 2
print(number)

number /= 2
print(number)

 

 

# 숫자처리 함수
print(abs(-5)) # 절대값
print(pow(4, 2))
print(4^2)
print(max(5, 21, 55))
print(min(5, 12, 33, -11))

# 반올림
print(round(3.14))
print(round(4.99))

# math 라이브러리
from math import *
#내림
print(floor(4.99))

#올림
print(ceil(3.14))

#제곱근
print(sqrt(16))


# 랜덤함수
from random import *
print(random()) # 0.0 ~ 1.0 미만의 임의의 값 생성
print(random() * 10) # 0.0 ~ 10.0 미만의 임의의 값
print(int(random() * 10)) # 0 ~ 10 미만의 정수 값
print(int(random() * 10)) # 0 ~ 10 미만의 정수 값
print(int(random() * 10) + 1) # 1 ~ 10 이하의 정수 값


# 로또
print("로또")
r = random()
print(r)
print(int(r))
print(r*45)
print(int(r * 45))
print(int(r * 45) + 1) # 1 ~ 45 이하의 임의의 값 생성

print(randrange(1, 46)) # 1 ~ 65 미만의 임의의 값 생성
print(randrange(1, 46)) # 1 ~ 65 미만의 임의의 값 생성
print(randrange(1, 46)) # 1 ~ 65 미만의 임의의 값 생성
print(randrange(1, 46)) # 1 ~ 65 미만의 임의의 값 생성
print(randrange(1, 46)) # 1 ~ 65 미만의 임의의 값 생성
print(randrange(1, 46)) # 1 ~ 65 미만의 임의의 값 생성

print(randint(1))

from random import *
# print(int(random() * 28) + 1)
randomDate = randrange(4, 29)

print("오프라인 스터디 모임 날짜는 매월 " + str(randomDate) + "일로 선정되었습니다.")

 

 

 

 

 

# 문자열
sentence = '나는 소년입니다'
print(sentence)
sentence2 = '파이썬은 쉬워요'
print(sentence2)
sentence3 = '''
나는 소년이고,
파이썬은 쉬워요.
'''
print(sentence3)


# 슬라이싱
jumin = "920221-1234567"

print("성별 : " + jumin[7])
print("연 : " + jumin[0:2])
print("월 : " + jumin[2:4])
print("일 : " + jumin[4:6])
print("생년월일 : " + jumin[0:6])
print("생년월일 : " + jumin[:6])
print("생년월일 : " + jumin[7:14])
print("뒤 7자리 : " + jumin[7:])
print("뒤 7자리(뒤에부터) : " + jumin[-7:])


# 문자열 처리 함수
python = "Python is Amazing"
print(python.lower())
print(python.upper())
print(python[0].isupper())
print(len(python))
print(python.replace("Python", "Java"))

index = python.index("n")
print(index)
index = python.index("n", index + 1)
print(index)


print("주석은 ctrl + / or triquotes")
'''
index = python.index("x/", index + 1)
print(index)
'''

# index = python.index("x/", index + 1)
# print(index)


print(python.find("n"))
# 원하는 값이 없을 경우 find는 -1, index는 에러 발생
print(python.find("Java"))
# print(python.index("Java"))

# python이란 변수에서 n이 몇 번 찍히는지 확인
print(python.count("n"))


# 문자열 포맷
# %d 정수값
print("나는 %d살입니다." % 20)

# %s 문자열값
print("나는 %s살입니다." % "Python")

# %c 한 글자만 받겠다
print("Apple은 %c로 시작해요" % "a")

print("나는 %s살입니다." % "20")

print("나는 %s색과 %s색을 좋아해요." % ("파란", "빨간"))

print("나는 {}살입니다.".format(20))
print("나는 {}색과 {}색을 좋아해요.".format("파란", "빨간"))
print("나는 {0}색과 {1}색을 좋아해요.".format("파란", "빨간"))
print("나는 {1}색과 {0}색을 좋아해요.".format("파란", "빨간"))


print("나는 {age}살이며, {color}색을 좋아해요.".format(age = 20, color = "red"))
# print("나는 {0}살이며, {1}색을 좋아해요.".format(age = 20, color = "red"))

# version 3.6 이상
age = 20
color = "빨간"
print(f"나는 {age}살이며, {color}색을 좋아해요.")


# 탈출 문자 \' \""
print("백문이 불여일견\n백견이 불여일타")

print("저는 '나도코딩'입니다")
print('저는 "나도코딩"입니다.')
print("저는 \"나도코딩\"입니다.")
print("저는 \'나도코딩\'입니다.")


# \\ : 문장내에서 하나의 \
print("C:\\Users\\Nadocoding\\Desktop")

# \r : 커서를 맨 앞으로 이동
print("Red Apple\rPine")
print("Re Apple\rPine")
print("Red Apple\rPine\rseed")

# \b : 백스페이스 (한 글자 삭제)
print("Red\bApple")

# \t : 탭
print("Red\tApple")

ex = "http://naver.com"

# 내 코드
appliedEx = ex[7:][:-4]

print(appliedEx[:3] + str(len(appliedEx)) + str(appliedEx.count("e")) + "!")


# 강사 코드
url = "http://daum.com"
my_str = url.replace("http://", "")
my_str = my_str[:my_str.index(".")]

password = my_str[:3] + str(len(my_str)) + str(my_str.count("e")) + "!"

print("{0}의 비밀번호는 {1}입니다.".format(url, password))
print("{0} 의 비밀번호는 {1} 입니다.".format(url, password))


url = "http://daum.com"
url = url[7:]
url1 = url.replace("http://", "")
print(url, url1)
print(url == url1)

 

 

 

 

 

# 리스트 []

from typing import Callable


subway = [10, 20, 30]
print(subway)

subway = ["유재석", "박명수", "조세호"]
print(subway)
print(subway.index("조세호"))
# print(subway.find("조세호"))

subway.append("하하")
print(subway)

subway.insert(1, "정형돈")
print(subway)

print(subway.pop())
print(subway)

num_list = [5, 2, 3, 4, 1]
num_list.sort()
print(num_list)

num_list.reverse()
print(num_list)

num_list.clear()
print(num_list)

num_list = [5, 2, 3, 4, 1]
mix_list = ["조세호", 1, True]
print(mix_list)
num_list.extend(mix_list)
print(num_list)


# 사전;딕셔너리;사전 자료형
cabinet ={3:"유재석", 100:"김태호"}
print(cabinet)
print(cabinet[3])
print(cabinet[100])
print(cabinet.get(3))


# get과 그냥 사용했을 때 차이
print(cabinet.get(5))
print(cabinet.get(5, "사용가능"))
# print(cabinet[5])
# print(cabinet(5))
print("hi")

print(3 in cabinet)
print(5 in cabinet)

cabinet = {"A-3":"유재석", "B-100":"김태호"}
print(cabinet["A-3"])
print(cabinet["B-100"])

# 새 손님
print(cabinet)
cabinet["A-3"] = "김종국"
cabinet["B-100"] = "조세호"
print(cabinet)

# del cabinet["A-3"]
# print(cabinet)

print(cabinet.keys())
print(cabinet.values())
# key, value 쌍으로 출력
print(cabinet.items())

cabinet.clear()
print(cabinet)



# 튜플: 변경되지 않는 목록을 사용할 때 사용 가능
menu = ("돈까스", "치즈까스")
print(menu[0])
print(menu[1])

# menu.add("생선까스") : 튜플은 add 기능 제공하지 않고 값을 추가 변경은 불가, 고정된 값을 사용할 수 있음

name = "김종국"
age = 20
hobby = "코딩"

name, age, hobby = "김종국", 20, "코딩"
(name, age, hobby) = ("김종국", 20, "코딩")
print(name, age, hobby)



# 세트 : 중복이 안 되고 순서가 없음 (순서 보장 없음)
my_set = {1,2,3,3,3}
print(my_set)

java = {"유재석", "조세호", "양세형"}
python = set(["유재석", "박명수"])

# 교집합 (jave와 python 모두 할 수 있는 개발자)
print(java & python)
print(java.intersection(python))

# 합집합 (java를 할 수 있거나 python을 할 수 있는 개발자)
print(java | python)
print(java.union(python))

# 차집합 (java를 할 수 있지만 python 은 할 줄 모르는 개발자)
print(java - python)
print(java.difference(python))

print(java, python, "checkpoint")

# python 할 줄 아는 사람이 늘어남
python.add("김태호")
print(python)

# java를 까먹었어요
java.remove("조세호")
print(java)




# 자료구조의 변경
menu = {"커피", "우유", "쥬스"} # 집합
print(menu, type(menu))

menu = list(menu)
print(menu, type(menu))

menu = tuple(menu)
print(menu, type(menu))

menu = set(menu)
print(menu, type(menu))


from random import *
# list = int(random() * 20) + 1
# id_list = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
id_list = range(1, 21)
print(type(id_list))
id_list = list(id_list)
print(type(id_list))


shuffle(id_list)
print("id_list", id_list)

first = sample(id_list, 1)
print('1등 당첨 번호: ', first )

first_index = id_list.index(first[0])
print("1등 당첨 번호 인덱스: ", first_index)

# remove_first = id_list.remove(first)
del id_list[first_index]
print("1등 당첨 번호를 제외한 아이디 목록: ", id_list)

last = sample(id_list, 3)
print("나머지 3명 당첨 번호: ", last)

del id_list[last[0]]
del id_list[last[1]]
del id_list[last[2]]
print("나머지 당첨 번호를 제외한 아이디 목록: ", id_list)
print(len(id_list))


print("-- 당첨자 발표 --\n치킨 당첨자 : {0}\n커피 당첨자 : {1}\n-- 축하합니다 --".format(first[0], last))

 

 

 

 

# weather =input("오늘 날씨는 어때요? ")
# if weather == "비" or weather == "눈":
#     print("우산을 챙기세요")
# elif weather == "미세먼지":
#     print("마스크를 챙기세요.")
# else:
#     print("준비물 필요 없어요.")

# temp = int(input("기온은 어때요? "))
# if 30 <= temp:
#     print("너무 더워요. 나가지 마세요")
# elif 10 <= temp and temp < 30:
#     print("괜찮은 날씨에요")
# elif 0 <= temp and temp < 10:
#     print("외투를 챙기세요")
# else:
#     print("너무 추워요. 나가지 마세요")




# 반복문 for, while
# for waiting_no in [1,2,3,4,5]: 
# for waiting_no in range (1, 6): 
#     print("대기번호 : {0}".format(waiting_no))


# starbucks = ["아이언맨", "토르", "아이엠 그루트"]
# for customer in starbucks:
#     print("{0}, 커피가 준비되었습니다.".format(customer))


# customer = "토르"
# index = 5
# while index >= 1:
#     print("{0}, 커피가 준비되었습니다. {1}번 남았어요.".format(customer, index))
#     index -= 1
#     if index == 0:
#         print("커피는 폐기처분되었습니다.")


# customer = "아이언맨"
# index = 1
# while True:
#     print("{0}, 커피가 준비되었습니다. 호출 {1} 회".format(customer, index))
#     index += 1

# customer = "토르"
# person = "Unknown"

# while person != customer :
#     print("{0}, 커피가 준비 되었습니다.".format(customer))
#     person = input("이름이 어떻게 되세요?  ")






# continue, break
from random import shuffle


absent = [2, 5]
no_book = [7]

for student in range(1, 11):
    if student in absent:
        continue
    elif student in no_book:
        print("오늘 수업은 여기까지. {0}은 교무실로 따라와".format(student))
        break
    print("{0}, 책 읽어봐".format(student))

    




# 한 줄 for문
student1 = range(1, 6)
student1 = list(student1)
student1 = [i+100 for i in student1]
print(student1)


student = ["아이언맨", "토르", "아이엠그루트"]
student = [len(i) for i in student]
print(student)



name = ["Iron man", "Thor", "I am groot"]
name = [i.upper() for i in name]
print(name)



# customers= list(range(5, 51))
# shuffle(customers)
# print(customers)


# permit_customers = 0
# permit_customers_list = []
# for customers in range(1, 51):
#     print(customers)
#     if (customers >= 5 | customers <= 15):
#         permit_customers += 1
#         permit_customers_list.append(customers)
# print("마지막: ", permit_customers)
# print(permit_customers_list)

from random import *
cnt = 0
for i in range(1, 51):
    time = randrange(1, 51) # 정수 중 하나를 무작위로 얻으려 할 때 유용한 함수
    # print(time) 
    if 5 <= time <= 15:
        print("[0] {0}번째 손님 (소요시간: {1}분)".format(i, time))
        cnt += 1
    else: 
        print("[ ] {0}번째 손님 (소요시간 : {1}분)".format(i, time))
print("총 탑승 승객 : {0}분".format(cnt))

 

 

 

 

 

 

# 함수 : 어떤 역할을 하는 박스
def open_account():
    print("새로운 계좌가 생성되었습니다.")


def deposit(balance, money):
    print("입금이 완료되었습니다. 잔액은 {0}원 입니다.".format(balance + money))
    return balance + money

def withdraw(balance, money):
    if balance > money : 
        print("출금이 완료되었습니다. 잔액은 {0}원입니다.".format(balance - money))
        return balance - money
    else: 
        print("출금이 완료되지 않았습니다. 잔액은 {0} 원입니다.".format(balance))
        return balance


def withdraw_night(balance, money): 
    commission = 100
    return commission, balance - money - commission

balance = 0 # 은행 잔고
balance = deposit(balance, 1000)
# balance = withdraw(balance, 2000)
# balance = withdraw(balance, 500)

print(balance)

commission, balance = withdraw_night(balance, 500)
# commission = withdraw_night(balance, 500)
print(commission, balance)
print("수수료는 {0} 원이며, 잔액은 {1} 원입니다.".format(commission, balance))

'''
안녕하세요!

withdraw_night 함수의 리턴 부분을 보시면

두 개의 결과값을 반환해주고 있습니다!

def withdraw_night(balance, money):

  ...

  return comission, balance-money-comission

파이썬에서 여러 개의 리턴값을 반환할 때는

실제로는 튜플 ( (a, b) 와 같은 형태) 타입이 반환됩니다.

튜플을 변수에 할당할 때, 순서에 맞게 각각 값을 할당할 수 있습니다.

이를 unpacking 한다고 합니다.

(예시)

val1, val2 = (10, 20)

질문해주신 것 처럼 튜플 형태로 하나의 변수에 할당 할 수도 있습니다.

하나의 변수로 함수 리턴값을 받고, 이후에 각각 원하는 변수에 할당 할 수도 있겠죠?
'''

 

 

 

 

 

 

 

 

ㅇunpacking에 대해서 이해가 부족하다.

ㅇ 여러 개의 값을 리턴할 때, 해당 리턴값에 해당하는 만큼의 변수로 unpacking을 하는 건 알겠다.

ㅇ하지만, 여러 개의 값을 리턴할 때, 해당 리턴 변수만큼 대칭이 안 될시 발생하는 현상에 대해 이해가 안 된다.

 

 

반응형

'etc > python' 카테고리의 다른 글

python #3  (0) 2021.12.23
python #2  (0) 2021.12.23