TIL-no.17 Python Basic(자료형,함수,반복문)

sanghun Lee·2020년 6월 30일
0

Today I Learned

목록 보기
15/66

끝이안날파이썬 공부를 시작해보겠다.

1. 자료형

  • int, float, complex로 숫자를 나타내는 세가지

  • str, list, tuple set, dictionary 군집을 나타내는 세가지

  • Boolean 참 거짓을 나타내는 한가지가 존재한다.

    1.1 int, float ,complex

int:정수형
Float:실수형
complex:복소수형
  • 연산자
    + 	더하기
    -	빼기
    *	곱하기
    **	제곱
    / 	나누기
    //	나누기 정수부분(몫)
    % 	나머지

아래는 예시이다.
변수를 선언해서 각자 더하고 빼고 다 할 수 있다.

1.2 str, list ,tuple, set, dictionary

일단 예제부터 보자

1.2.1 list

아래 예제에서 볼 수 있듯 list는 string, tuple, list ,int, float , boolean 등 대부분의 자료형이 들어갈 수 있다고 생각하면 되며 list[0]과 같이 해당 부분을 직접 indexing 할 수도 있으며 범위를 지정하여 slicing도 가능하다.

예제를 보면 thisislist[3:5]를 선언했는데 3번째와 4번째에 해당하는 숫자가 나온것을 알 수 있다. slicing 시 마지막 숫자 전까지 해당하는 친구가 선택되는것을 알 수 있다.


그리고 sort 기능을 통하여 오름차순으로 나열할 수 있으며
thisislist2.sort(reverse=True)로 선언시 역방향(내림차순)으로 나열된다.
그리고 sort는 list 내부에 str , tuple등이 존재할 시 사용할 수 없다(당연한이야기인가 ..)

그리고 pop을통해 필요부분을 제거하며 나타낼 수 있다. (떼어내온다는말이 맞을까)

1.2.2 Dictionary

여러값을 저장해두고 필요한 값을 꺼내 쓰는 기능을 말하며 key 값을 이용하여 value값을 가져올 수 있다.
아래는 예제이다.

  • key 값을 이용한 value 값 호출.
     wintable = {
        '가위':'보',
        '바위':'가위',
        '보':'바위'
        }
     print(wintable['가위'])  # 보 가출력된다.
     words = ['a','b','c']
     print(words[0]) - > a가 출력된다

     #둘이 좀 유사하다. 숫자가아닌 앞에 있는 key값을 넣어주면 value값이 나옴.
  • 응용.1
     

     wintable = {
     	'가위':'보',
        '바위':'가위',
        '보':'바위',
        }

     def rsp(mine,yours):
     	if mine == yours:
        	return 'draw'
        elif wintable[mine] == yours:
        	return 'win'
        else:
        	return 'lose'
     result = rsp('가위','바위')

     messages = {
     	'win':'이겼다!',
        'draw':'비겼네..',
        'lose':'졌어...'

     print(messages[result])

Dictionary 수정하기.

먼저 아래의 list의 수정을 보고 비교해보자!
list 는 값을 추가 할시 append를 이용하여 추가할 수 있으며 순서를 불러와 호출할 수 있다.

    list = [1,2,3,4,5]
    list[2] = 33
    list = [1,2,33,4,5]
    list.append(6) #실행시
    list = [1,2,33,4,5,6]#으로 나타난다.
    

아래 그림과 같이 list 에서의 append 기능은 dictionary에 따로 없으며
변경하는 방식과 같이사용하면 된다.
pop 함수의 경우 제거하는 대상을 Print하며 제거할 수 있다.

dict['key'] = value 로 기입해주면 된다(변경도 추가도 똑같은 방식)

결론은 dictionary 와 listdml 수정과 삭제는 같은 문법을 사용하며 추가만 list와 다른문법을 사용한다아!

Dictionary in for

list vs Dictionary

1.2.3 Tuple

tuple 은 괄호가 없을때도 tuple로 선언이 되나 구별을위해 ()를 쓰는 것이 좋다.

따로 삭제나 추가가 안되며 부분적으로 값을 불러오는것은 가능하다!

패킹: 하나의 변수에 여러개의 값을 넣는것.
언패킹: 패킹된 변수에서 여러개의 값을 꺼내오는것.

2. 함수

함수란 코드의 덩어리에 이름을 붙이는 것!
(변수와 비슷, 변수는 복잡한 계산식에 이름을 붙여 저장하는 용도, 매개변수 이용시 값 전달받는 함수 만들 수 있다.)
f unction에서 return 뒤에는 실행이 안됨. 함수실행을 원하는 시점에 끝낼 수 있는 유용함이 있음.
함수는Return 을 이용해 값을 돌려줄 수 있다. 함수를 사용하는것은 함수안의 코드를 모두 실행한뒤 이 함수의 자리에 return에 있는 값을 넣은것과 같다.
여러값 반환을 원할 시 여러값을 쉼표로 나뉘어 넣으면 된다.

3. 반복문

3.1 for

for 문은 in을 이용하여 list내부에 있는 숫자들을 뽑아 올 수 있다.
여기서 segment와 같이 따로 변수 설정을 해주지 않아도 사용할 수 있는 번외가 있긴한다.

	#1.for in 은 아래와 같이 사용가능하다.
	list = [0,1,2,3,4,5]
    
	for segment in list:
    print(segment)
    
    #2.range의 응용
	for i in[0, 1, 2, 3, 4, 5]:
    	print(i)
        
    #아래와 같이 range를 이용하면 편하다.
    for i in range(0, 6, 1):  # -> [0,1,2,3,4,5]가 됨
		print(i)
        
    #응용
    names = ["lee","kim","jang","seo"]
	for i in range(len(names)):
    	name = names[i]
        print("{}번: {}".format(i+1, name))
        
    #응용2
    for i , name in enumerate(names): # enumerate는 한번에 순서와 list안의 값을 모두 만들기에 i, name두개의 변수를 for 반복문에 받아서 쉽게 사용 가능함.// 함수에서 값 두개를 돌려줄때 쉼표로 대입 쉼표로 리턴하는것과 똑같다고 보면됨.
    	print("{}번:{}".format(i+1, name))
        
    #응용3
    for i in range(11172):
    	print(chr(44032 + i),end = "")
        # ord -> character를 숫자로 나타내줌(askicode)
        # chr-> askicode to character
    
    #응용4
    rainbow = ["red","orange","yellow","green","blue","navy","purple"]
   	for i, colors in enumerate(rainbow):
    	print("NO.{} color is{}".format(i+1, colors))
    	
        ![](https://velog.velcdn.com/images%2Fcloudlee711%2Fpost%2F6eacccf2-07bc-44ec-a495-5c75701f92f7%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202020-06-30%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%201.15.16.png)

3.2 while

조건이 참인 경우 계속 실행하는 반복문이다. 그말인 즉슨 false가 되면 멈춘다는 것이니
중지 조건을 false로 둬야하는것을 계속 기억해야한다.
for 문으로 작성가능하면 while문도 작성 가능한데 상황에 따라 효율이 다르므로
일단 for문으로 시작하고 while문을 사용해보자.

numbers = [1,2,3]
length = len(numbers)
i = 0
while ( i <length):
	print(numbers[i])
    i=i+1
  • ETC

Shell 명령어(terminal in macos)
pwd: 현재 폴더 경로 출력 print working directory
ls: 현재 폴더 내용물 출력 list segments
cd <폴더명>: 다른 폴더로 이동 change directory
cd .. : 상위 폴더로 이동
cp: 파일을 다른 이름으로 복사
rm: 파일을 삭제

* Module

like print(), round(), input()와 같이 미리 만들어진 코드를 가져와 쓰는방법.

1. Math

#1
import math # 수학과 관련된 기능
r = 10
2*math.pi*r

math.ceil(2.5) #올림
math.floor(2.5) #내림

#2

import math
print("파이의 값은{}입니다".format(math.pi))

2. Random

candidates = ["rock","cyser","paper"]
selected = random.choice(cadidates)
print(selected)

random을 사용하면 무분별하게 추출을 해줌.

3. urllib

def get_web(url):
"""URL을 넣으면 페이지 내용을 돌려주는 함수"""
import urllib.request # 인터넷의 내용을 가져오는 기능
response = urllib.request.urlopen(url)
data = response.read()
decoded = data.decode('utf-8')
return decoded

url = input("web domain address")
content = get_web(url)
print(content)

4. Module 만들기

#ex 이 파일이름이 my_module
def random_rsp():
	"""무작위로 가위바위보"""
    import random
    return random.choice(["가위","바위","보"})
   
PAPER = "보"
SCISSOR= "가위"
ROCK= "바위" # 이렇게 변수지정 가능
    
# 다른 파일 이름이 int_module
여기서 위 함수를 모듈처럼 불러오고 싶으면

import my_module
print(my_module.random_rsp())와 같이 사용가능

#변수를 이용하면 이렇게도 사용가능

import my_module
selected = mymodule.random_rsp()
print(selected)
print('가위?',my_module.SCISSOR == selected)

이렇게하면 랜덤으로 셀렉트 된값중 SCISSOR와 같은 값이 나오면 True 아니면 False가 나옴.


Tip: 이렇게 모듈 사용하려면 같은 파일에서 사용해야한당!

Searching tip

	1. 검색은 구글에서
    	2. 파이썬에 대한 모든 검색은 파이썬 3(python3)를 기입해서 검색하자
     	Ex) 파이썬3 오늘날짜 - >날짜시간 모듈관련 글이 나올 것.
    	3. 영어를 못해도 되도록이면 영어로 기입하자 :)

출처 및 참고:프로그래머스

break, continue

  • break
    반복문 종료의 기능

  • continue
    반복문의 나머지부분을 보지 않고, 반복문의 처음으로 돌아가는 기능.

ex)

price =[100,20,30,50,20,20,20]

for i, pr in enumerate(price):
    if pr == 20:
        print("20dollar price is No {}".format(i+1))
        break
        
#Output- > 20dollar price in No2

ex)아래 두개는 같은것..

numbers = [ (1,2),(10,0) ]

for a,b in numbers:
    if b == 0:
        print("0으로 나눌 수는 없습니다.")
    else:
        # 이 부분이 else문에 들어있지 않도록 수정해야 합니다.
        print("{}를 {}로 나누면 {}".format(a,b,a/b))
numbers = [ (1,2),(10,0) ]

for a,b in numbers:
    if b == 0:
        print("0으로 나눌 수는 없습니다.")
        continue  
    print("{}를 {}로 나누면 {}".format(a,b,a/b))
profile
알고리즘 풀이를 담은 블로그입니다.

0개의 댓글