데이터 입력 받아 출력하기
=============================================================
print("Enter your name:")
somebody = input()
print ("Hi", somebody, "How are you today?")
-> 줄여서
somebody = str(input("Enter your name: "))
print ("Hi", somebody, "How are you today?")
* input 을 받을땐 data type 은 string 으로 들어온다
연습 문제
=============================================================
온도 변환 (화씨 -> 섭씨)
print("본 프로그램은 섭씨를 화씨로 변환해주는 프로그램입니다.")
ondo = float(input("변환하고 싶은 섭씨 온도를 입력해 주세요: "))
changeondo = (ondo*1.8)+38
print('섭씨온도:',ondo)
print('화씨온도:',changeondo)
리스트 강의
============================================================
len = 리스트 길이 출력
ex - len(변수)
in = 해당 리스트 안에 값이 있는지 확인
ex - 값 in 변수
# 추가
변수.append("값") 리스트에 새로운 값 추가
변수.extend("값","값2") 리스트 값을 추가하여 확장
변수.insert(0,"값") 리스트 값을 추가하여 확장
# 삭제
변수.remove("whilte") 리스트에 white 삭제
del 변수[0] 리스트 내 특정 주소 값 삭제
element -> 리스트 안에 객체
일반적으로 컴파일러 언어들은 메모리확보를 위해 하나의 리스트 안에 다양한 데이터(타입) 을 담지 않는다.
# 리스트의 메모리 저장 방식
a=[5,4,3,2,1]
b=[1,2,3,4,5]
b=a <- a 와 같은 메모리 주소를 보게 됨
print(b)
[5,4,3,2,1]
따라서 a.sort() 를 하면 print(b) 도 결과가 같아짐
[1,2,3,4,5]
# 패킹/언패킹
>>>t=[1,2,3]
>>>a,b,c = t
>>>a
1
>>>b
2
>>>c
3
#조건문
if 조건 < 30:
명령어
else:
명령어
x == y (값이 같다)
x is y (메모리 주소가 같다)
부정 !, is noet
#기타 사용법
조건절에 True(1), False(0) 이 사용 가능
if "abc" 참
if "" 거짓
# 반복문 (for)
for looper in range(0,5):
print(looper)
- for 문 안에 list 사용
test_list = list(range(5))
for i in test_list:
print(i)
sequence type
> 한 글자씩 순서대로 출력
> for문 뒤에 입력 가능
range(1,10,2) 1부터 10까지 2씩 증가, 역순도 가능
# 반복문 (while)
i=1
while i<20:
print(i)
i+=1
# 역순으로 글자 출력
sentence = "I love You"
reverse_sentence=''
for char in sentence:
reverse_sentence = char + reverse_sentence
print (reverse_sentence)
# 2진수 변환
decimal = 10
result = ''
while (decimal > 0):
remainder = decimal % 2
decimal = decimal/2
result = str(remainder) + result
print(result)
# 가변적인 중첩 반복문(variable nested loops)
두 개 이상의 반목문이 중첩되어 만들어진 반복문
# 라이브러리
import random # 난수 발생 함수 호출
-> random.randint(1, 100) # 1~100 사이 정수 생성
import random
guess_number = random.randint(1,100)
print ("숫자를 맞춰보세요 (1~100)")
user_input = int(input())
while (user_input != guess_number):
if user_input > guess_number:
print ("숫자가 너무 큽니다")
else:
print ("숫자가 너무 작습니다")
user_input = int(input())
else: print ("정답입니다. " , "입력한 숫자는", user_input ,"입니다.")
kor_socre = [49,79,20,100,80]
math_score = [43,59,85,30,90]
eng_score = [49,79,48,60,100]
midterm_score = [kor_socre,math_score,eng_score]
#print(midterm_score)
student_core = [0,0,0,0,0]
i = 0
for subject in midterm_score:
for score in subject:
print(score)
student_core[i] += score
print(student_core)
i += 1
i = 0
else:
a,b,c,d,e = student_core
student_average = [a/3,b/3,c/3,d/3,e/3]
#print(student_average)
# 사각형 넓이를 구하는 함수
def calculate_rectangel_area(x,y):
return x*y
rectangle_x=10
rectangle_y=20
print("사각형 x의 길이:", rectangle_x)
print("사각형 y의 길이:", rectangle_y)
print("사각형의 넓이:", calculate_rectangel_area(rectangle_x,rectangle_y))
# 변수가 사용되는 범위
> 지역변수 : 함수내에서만 사용
> 전역변수 : 프로그램 전체에서 사용
def test(t):
print(x)
t=20
print("In Function:", t)
x=10
test(x)
print(t)
# 지역변수와 전역변수에 같은 값을 주려면 변수 앞에 global 을 입력한다.
def f():
global s
s="I love London!"
print(s)
s="I love Paris!"
f()
print(s)
# 재귀함수
> 자기자신을 호출하는 함수
> 점화식과 같은 재귀적 수학 모형을 표현할 때 사용
> 재귀 종료 조건이 있고, 종료 조건까지 함수호출 반복
> 대표적 재귀식 : 팩토리얼 계산
> 너무 큰 숫자를 일렵하거나 잘못 활용하면, 메모리를 과도하게 많이 차지
# 예시
def factorial(n):
if n ==1:
return 1
else:
return n*factorial(n-1)
print(factorial(int(input("input number for factorial calcualtion:"))))
# 파이썬 디벙기
if __name__='__main__':
import <모듈> 실행 시, 메모리에 바로 적재
name 사용 시, 해당 과정을 생략 가능
- 점프 투 파이썬
https://wikidocs.net/book/1
- 코드카데미
https://www.codecademy.com
- 코드파이트
https://codefights.com/
- 생활코딩
https://opentutorials.org/course/1750
#코딩 검사
flake8 모듈로 체크 - flake8 <파일명>
cmd 창에서.
conda install flake8
# 메모리 사용 확인
하나의 변수 안에 있는 값이 메모리주소를 얼마만큼 차지하는지 확인
import sys
sys.getsizeof('a')
string은 1byte 크기로, 한 글자 당 메모리 공간이 할당됨
# 문자열 처리
\e -> esc
\b -> backspace
# 파일 안에 글자수 찾기
f = open("test.txt", 'r') #파일 열기
yesterday_lyric = ""
while 1:
line = f.readline() # 1줄씩 파일 읽기
if not line:
break
yesterday_lyric = yesterday_lyric + line.strip() + "\n"
f.close()
n_of_yesterday = yesterday_lyric.upper().count("YESTERDAY")
print("Number of a Word 'Yesterday'", n_of_yesterday)
# 스택과 큐
스택 : 나중에 넣은 데이터를 먼저 반환
LIFO (LAST IN FIRST OUT)
append(),pop() 구문 사용
>> a = [1,2,3]
>> a.append(4)
[1,2,3,4]
마지막에 들어온 데이터부터 차례대로 빠져나감
>> a.pop()
4
word = input("Input a word : ")
word_list = list(word)
for i in range(len(word_list)):
print(word_list.pop())
// pop()end='' 모든 수가 한줄에서 연속 출력 됨
append(),pop() 사용하여 구현
>>test_test = [1,2,3,4,5]
>>test_test.append(6)
>>test_test
[1,2,3,4,5,6]
>>test_test.pop(0)
1
# 튜플
리스트와 동일하나 값의 변경이 불가능(새로운 값 할당 불가)
선언 시 [] 가 아닌 ()를 사용
리스트의 연산,인덱싱,슬라이싱 등을 동일하게 사용
a = (1,2,3)
type(a)
<class 'tuple'>
목적 : 프로그램을 작동하는 동안 변경되지 않는 데이터를 저장하기 위함
a = (1)
-> int type
a = (1,)
-> tuple type
# 셋 (set)
값을 순서 없이 저장하는 자료형
* 중복을 불허 하는 자료형
set 객체 선언을 이용하여 객체 생성
수학에서의 집합 연산들을 동일하게 사용 가능
set_1 = set([1,2,3,4,5])
set_1.add(6)
set_1.remove(1)
set_1.update([1,2,3])
set_1 | set_2 (union, 합집합)
set_1.union(set_2)
set_1 - set_2 차집합
set_1 & set_2 교집합
> 문자로도 표현 가능(intersection,difference)
#사전 (dictionary)
데이터를 저장 할 때 데이터의 값(key)과 함께
그 값을 구분 지을 수 있는 특지 값을 함께 저장하는 방식
key 값을 활용하여, 데이터 값을 관리
student_info = {20140012:'tt',20140059:'ss'}
student_info[20140012]
-> 해당 사번의 이름 출력
student_info[20151191] = "sungmin"
-> 추가
country_code = {}
country_code = {82:"korea", 1:"usa"}
country_code.keys()
-> key 값만 출력
country_code.items()
-> items 값만 출력
country_code.values()
-> 값만 출력
for k, v in country)code.times():
print(k,v)
# 소스코드
import csv
def getkey(item): #정렬을 위한 함수
return item[1]
command_data = [] #파일 읽어오기
with open("command_data.csv", "r", encoding="utf-8") as csvfile:
spamreader = csv.reader(csvfile, delimiter=',', quotechar='"')
for row in spamreader:
command_data.append(row)
command_counter = {} #dict 생성, 아이디를 key 값
for data in command_data: # list 데이터를 dict 로 변경
if data[1] in command_counter.keys():
command_counter[data[1]] += 1 # 기존 출현한 아이디
else:
command_counter[data[1]] = 1 # 처음 나온 아이디
dictlist = []
for key, value in command_counter.items():
temp = [key,value]
dictlist.append(temp)
sorted_dict= sorted(dictlist, key=getKey, reverse=True)
???
# join
list 에 있는 글자를 붙여 줌
colors=['red','blue','green']
result=".join(colors)
result
'redbluegreen'
# split
string type 의 값을 나눠서 list 형태로 변환하는 함수
빈칸,콤마,문자 등을 기준으로 데이터를 나눔
example = 'python,jqeury,javascript'
print(example.split(","))
example = 'sungmin.co.kr'
subdomain, domain, tld = example.split('.')
print(subdomain, domain, tld)
# join
기준값을 중심으로 값을 합치는 함수
split 함수와 마찬가지로 빈칸, 콤마 문자 등을 기준으로 데이터를 합침
colors = ["RED","BLUE","GREEN"]
",".joint(colors)
print("\n".join(colors)
# list comprehensions
파이썬에서 필수적인 기법
기존 list 를 사용하여 간단히 다른 list를 만드는 기법
(for 문 없이 새로운 list생성 가능)
포괄적 리스트, 지능리스트, 포함되는 리스트 등으로 표현
파이썬에서 가장 많이 사용되는 기법 중 하나
일반적으로 for + append 보다 빠른 속도의 기법
for 문을 2개 이상 활용해서 사용 가능
result = []
for i in range(10):
result.append(i)
result
[i for i in range(10)]
text_1 = "hello"
text_2 = "world"
[a+b for a in text_1 for b in text_2]
[a+b for a in text_1 for b in text_2 if a==b]
[[a+b for a in text_1] for b in text_2 if a==b]
- 밖에 있는 for 문이 먼저 진행 됨.
- if 문은 괄호안에
.sort()
set() <- 중복값 삭제
# Enumerate
list 타입에서 주로 사용하는 기법
인덱스와 밸류 값을 함께 추출하는 기법
test = "bcde"
list(enumerate(test)
-> 어떤 문장속 단어들의 인덱스를 뽑을때
test = "Hello world python"
onehot = test.split()
for i, v in enumerate(onehot):
print(i, v)
# ZIP
같은 길이의 list 2개가 있을 때
같은 위치에 있는 값들을 추출하는 기법
a = [1,2,3]
b = [10,20,30]
>>> for c in zip(a,b):
... print(c)
...
(1, 10)
(2, 20)
(3, 30)
>>> [sum(x) for x in zip((1,2,3), (10,20,30), (100,200,300))]
[111, 222, 333]
>>> for c in enumerate(zip(a,b)):
... print(c)
...
(0, (1, 10))
(1, (2, 20))
(2, (3, 30))
#모듈에서 특정 함수 또는 클래스만 호출
from <함수명> import <모듈명>
#alias 설정 - 모듈명을 별칭으로 지정
import <함수명> as <별칭>
#모듈에서 모든 함수 또는 클래스 호출
import <모듈명> import *
response = urllib.request.urlopen("주소")
response.read()
> 웹페이지 소스를 보는 함수
가상환경 관리도구
virtualenv
conda
conda create -n 가상환경이름 python=3.4
# matplotlib
import matplotlib.pyplot as plt
plt.plot([1,2,3,4])
plt.ylabel('some sumbers')
plt.show()
#파일핸들링
f=open("파일이름","접근모드")
> 접근모드
R 일기
W 쓰기 - 기존 파일을 덮어써버림
A 추가 - 파일의 마지막에 새로운 내용을 추가할 때
f_read = f.read()
print(f_read_
f.close()
> colse 없이 파일을 열때 사용
with open("파일이름") as f:
> readlines 함수
파일을 리스트 형태로 읽음
.read().splt("\n") 함수와 동일 기능
#파일 쓰기
f=open("txt",'w',encoding="utf8")
for i in range(1,11):
data = "%d번째 줄입니다.\n" % (i)
f.write(data)
f.close()
#파일 일기
with open("txt","r") as myfile:
i = 0
while 1:
line = myfile.readline()
if not line:
break
line = line.replace("\n","")
if line.strip() == "":
continue
print (str(i) + " === " + line)
i = i + 1
# 폴더가 없는지 확인하고 만들기
if os.path.isdir("폴더") == False:
os.mkdir("ddd")
python 주식정보 가져오기 (0) | 2019.02.08 |
---|---|
xen 호스트 아이피 정보 가져오기 (0) | 2018.06.15 |