Ssa!
파이썬 실강 3일차! 본문
아래의 내용은 잘 생각이 나지않는 것만 작성한다
1. for문(반복문 엄청 중요함)
- enumerate와 for문의 리스트의 다양한 range활용
##for문과 리스트안에 튜플로 바꿔 요소를 불러냄
members = [
("lee", 24),
("kim", 25),
("park", 29)
]
for name, age in members:
print(f'이름은{name}, 나이는 {age}')
##for문과 리스트 비교
#tip) set은 순서는 어느정도 정해지지만 순서가 안될 때 순서가 list로 감싸서 순서를 설정한다.
members = [
"lee",
"kim",
"park"
]
ages = [
30,
20,
16
]
phone = [
"010",
"011",
"018"
]
for i, member in enumerate(members): # members에 있는 요소를 실행할 수 있다
print(f"{member}의 나이는 {ages[i]}살 이며 휴대폰 번호는 {phone[-i-1]}입니다")#phone[-i-1]으로 하면 역순으로 돌릴 수 있다
# enumerate의 정확한 뜻 리스트가 있는 경우 순서와 리스트의 값을 전달하는 기능을 가진다
# 열거하다라는 뜻이다
# 이 함수는 순서가 있는 자료형(list, set,tuple,dictionary,string)을 입력으로 받아 인덱스 값을 포함하는 enumerate 객체를 리턴한다
##for문과 리스트와 딕셔너리의 활용
members = [
{"key":"values1"},
{"key":"values2"},
{"key":"values3"}
]
for member in members:
print(member.items())
- (1, 10)와 같이 1은 포함하지만 10은 포함하지 않는다
다른 파트부분) list[1:10]와 같이 1은 포함하지만 10은 포함하지 않는다. / 인덱스도 동일 - continue활용
numbers = [24, 75, 12, 54, 30, 70, 99]
for number in numbers:
if number <= 50: # number가 50보다 작거나 같은 경우
continue # 아무런 동작도 하지 않고 다음으로 넘어감 (스킵!!!!)
print(f"{number}는 50보다 큰 숫자입니다!")
- break활용
numbers = [1, 2, 3, 4, 5, 6, 7, 8]
for number in numbers:
if number >= 4: # number가 4보다 크거나 같은 경우
break # 반복문을 중지
print(number)
2. While문(반복문 엄청 중요함)
- 반복할 횟수가 정해져 있지 않을 때 사용한다!
- i를 지정하여 넘버링할 때도 많이 쓰인다.
3. 자주 사용되는 모듈 및 패턴
- join() / list를 string으로 변환하기
# join은 "사이에 들어갈 문자".join(리스트) 로 구성되어 있습니다.
string_list = ["hello", "python", "world"]
string = "!! ".join(string_list)
print(string) # hello!! python!! world
- replace() / 문자 바꾸기
string = "hello world"
string = string.replce(" ","/")
print(string)
- pprint() / 코드 예쁘게 출력하기(데이터가 복잡하게 왔을 때 쓰면 편리하다 ex)크롤링할 때 많이 쓰인다)
# pprint는 pretty print의 약자이며, 데이터를 더 예쁘게 출력해 준다.
from pprint import pprint
sample_data = {
"id": "0001",
"type": "donut",
"name": "Cake",
"ppu": 0.55,
"batters":
{
"batter":
[
{ "id": "1001", "type": "Regular" },
{ "id": "1002", "type": "Chocolate" },
{ "id": "1003", "type": "Blueberry" },
{ "id": "1004", "type": "Devil's Food" }
]
},
"topping":
[
{ "id": "5001", "type": "None" },
{ "id": "5002", "type": "Glazed" },
{ "id": "5005", "type": "Sugar" },
{ "id": "5007", "type": "Powdered Sugar" },
{ "id": "5006", "type": "Chocolate with Sprinkles" },
{ "id": "5003", "type": "Chocolate" },
{ "id": "5004", "type": "Maple" }
]
}
pprint(sample_data) # print로 출력했을 때와 결과 비교해 보기!!
tip) tab과 공백은 인자가 달라서 오류가 발생한다. 그러므로 잘 구분해서 쓰자
- random / 랜덤한 로직이 필요할 때(활용:비밀번호 랜덤 생성기)
# 난수 생성, 임의의 번호 생성 등 랜덤한 동작이 필요할 때 사용된다.
import random
numbers = [1, 2, 3, 4, 5, 6, 7, 8]
random.shuffle(numbers) # numbers를 무작위하게 섞기
print(numbers) # [2, 8, 6, 4, 3, 7, 1, 5]
random_number = random.randint(1, 10) # 1 ~ 10 사이의 무작위 번호 생성 (포함함)
print(random_number) # 4
random_number = random.randrange(1, 10) # 1 ~ 9 사이의 무작위 번호 생성 (포함안함)
print(random_number)
- 비밀번호 랜덤 생성기!
import random
STRING = "abcdefghijklmnopqrstuvwxyz1234567890"
def random_password_generator(length):
password = ""
for _ in range(length):
password += STRING[random.randrange(0, len(STRING))] # 파이썬에서 _는 이 변수를 사용하지 않겠다 라는 뜻!
#randint를 사용하면 out of range가 되어 별로 안좋아 randrange를 사용하는 것이 맞음!
return password
def main():
length = int(input("비밀번호 길이를 입력해 주세요!: "))
password = random_password_generator(length)
print(password)
main()
tip) 파이썬을 더 자세하게 배우고 싶으면??https://wikidocs.net/book/1
점프 투 파이썬
** 점프 투 파이썬 오프라인 책(개정판) 출간 !! (2019.06) ** * [책 구입 안내](https://wikidocs.net/4321) 이 책은 파이썬 ...
wikidocs.net
- time / 시간 다루기
# 함수의 실행 시간을 측정하는 등 시간을 다룰 때 사용되는 모듈이다.
import time
start_time = time.time() # 현재 시간 저장
time.sleep(1) # 1초간 대기
end_time = time.time()
# 코드가 종료된 시간 - 코드가 시작된 시간으로 실행 시간 구하기 (단위 : 초)
print(f"코드 실행 시간 : {end_time-start_time:.5f}") # 코드 실행 시간 : 1.00100
tip)code runner라는 vscode의 확장자로 코드 전체의 시간을 확인할 수 있다
- datetime / 날짜 다루기(예를 들어 댓글 시간/예약을 받기/게시글작성)
from datetime import datetime, timedelta
# 현재 날짜 및 시간 출력
print(datetime.now()) # 2022-09-04 03:55:32.277095
# datetime의 format code, 더 제세한건 여기
'''
%y : 두 자리 연도 / 20, 21, 22
%Y : 네 자리 연도 / 2020, 2021, 2022
%m : 두 자리 월 / 01, 02 ... 11 ,12
%d : 두 자리 일 / 01, 02 ... 30, 31
%I : 12시간제 시간 / 01, 02 ... 12
%H : 24시간제의 시간 / 00, 01 ... 23
%M : 두 자리 분 / 00, 01 ... 58, 59
%S : 두 자리 초 / 00, 01 ... 58, 59
'''
#작업순서
#사용자 입력을 string -> datetime으로 변경
#datetime 포맷에서 날짜 계산
#datetime 포맷을 원하는 string으로 변경
# string을 datetime 날짜로 변경하기
string_datetime = "22/12/25 13:20"
datetime_ = datetime.strptime(string_datetime, "%y/%m/%d %H:%M")
print(datetime_) # 2022-12-25 13:20:00
# datetime 날짜를 string으로 변환하기
now = datetime.now()
string_datetime = datetime.strftime(now, "%y/%m/%d %H:%M:%S")
print(string_datetime) # 22/09/04 04:04
# 3일 전 날짜 구하기
three_days_ago = datetime.now() - timedelta(days=3)
print(three_days_ago) # 2022-09-01 04:07:48.526502
tip)내부 라이브러리를 보려면 ctrl 누르고 함수를 눌러라 그러면 구조를 볼 수 있다
- 이때까지 한 것 종합하여 로또 번호 생성기 만들기
import random
from pprint import pprint
def lotto_number_generator(count):
result = []
if count < 1:
print("1 이상의 값을 입력해 주세요")
return False
for _ in range(count):
lotto_numbers = set() #SET으로 중복 값을 없애준다. 로또는 중복이 없으니까
while len(lotto_numbers) < 8:
lotto_numbers.add(random.randint(1, 45))
result.append(lotto_numbers)
return result
lotto_numbers = lotto_number_generator(10)
pprint(lotto_numbers)
느낀점)
기초 문법을 통해서 어렵다고 생각했던 시스템을 간단하게 만들 수 있다는 것이 놀라웠다. 내가 이렇게까지 활용을 못했구나 생각했다. 이번 주는 파이썬 강의가 끝이므로 활용할 수 있는 문제를 많이 풀어봐야겠다고 생각했다. 코드잇 일주일 동안 응용문제가 무료이니 이번 주말에야 말로 파이썬 기초문법을 정리하고 활용할 수 있는 능력을 키워야겠다!
파이썬 응용하기 - 파이썬 강의 | 코드잇
프로그래밍, 문법만 배운다고 끝이 아닙니다! 문법 그 자체보다는 상황에 맞게 코드를 짤 수 있는 능력이 더 중요하죠. 파이썬으로 데이터 분석도 해보고, 로또 번호 생성기나 영어 단어장 같은
www.codeit.kr
'언어 > python' 카테고리의 다른 글
| 파이썬 계산기 튜터님이 하신 것!!! (0) | 2022.09.07 |
|---|---|
| 파이썬 계산기 과제 (0) | 2022.09.07 |
| 파이썬 실강 2일차! (0) | 2022.09.06 |
| 파이썬 실강 1일차! (0) | 2022.09.05 |
| 파이썬 스타일 가이드! PEP 8 (0) | 2022.09.05 |