leejhstory

if 문 / LIST(배열) / Random함수 본문

공부자료/파이썬

if 문 / LIST(배열) / Random함수

LeeJHstory 2017. 4. 12. 09:27

if 명령어 / 홀,짝 구하기

파이썬에서는 입력함수인 input()이고

정수형을 입력하려면 int.input()으로 형변환을 시켜줘야한다.


a = int(input(": "))
if a%2 == 0:
print ( "{} is even number".format(a))

else:
print ("{} is odd number".format(a))

or / and 연산자

print (12 or 15) # C언어와다르게 앞의 것먼저 판단한다.(앞의 수를 출력)
print (15 and 13) # 앞뒤를 같이 보고 판단한다.(뒤의 수를 출력)



~연산자 (비트 바전)

print(~5)

0101

1010

-8 2 =-6


2개의 정수를 입력 받아 비교

X, Y = map(int, input("").split())
if X == Y:
print("{}={}".format(X, Y))
else:
if X > Y:
print("{}>{}".format(X,Y))
else:
print("{}<{}".format(X,Y))


비트연산자 OR

print(5|3)

=> 7

비트연산자 XOR

print(10^3)

=> 9


AND / OR / NOT

def main():
#and
print("{} and {} = {}".format(True, True, True and True))
print("{} and {} = {}".format(True, False, True and False))
print("{} and {} = {}".format(False, True, False and True))
print("{} and {} = {}".format(False, False, False and False))

#or
print("{} or {} = {}".format(True, True, True or True))
print("{} or {} = {}".format(True, False, True or False))
print("{} or {} = {}".format(False, True, False or True))
print("{} or {} = {}".format(False, False, False or False))

#not
print("not {} => {}".format(True, not(True)))
print("not {} => {}".format(False, not (False)))

if __name__ == "__main__":
main()


리스트에 있는 값 확인

a = [1,2,3,4]
for k in range(1,10):

if k in a:
print ("리스트에 있습니다.")

else:
print ("리스트에 없습니다.")



콜 바이 벨류(call by value) 는 값을 복사해서 넘겨주는 방식

콜 바이 레퍼런스(call by reference)는 주소값을 넘겨주는 방식


Python에서는 

>>> a=3

>>> b=4

>>> a is b

False

>>> b=3

>>> a is b

True


a 와 b가 동일한 3을 가르키고 있는 것이다. (3이 들어있는 방을 가리키고있다)


메모리에서 3을 가리키고 있는 변수들의 개수를 출력하는 함수

import sys

a=3

b=3

c=3

sys.getrefcount(3)

166

d=3

sys.getrefcount(3)

167

e=3

sys.getrefcount(3)

168


----------------------------------------------------------------------------------------------------------


LIST

1. 값의 나열

2. 순서가 존재

3. 0부터 시작하는 인덱스

4. 슬라이싱(slicing)

5. 리스트의 수정, 변경과 삭제

6. 관련함수





a.sort() 아스키값으로 문자 정렬(문자열이면 제일 앞 문자 아스키값)

a=['a','kitri','b','1']
a.sort()

print(a)

['1', 'a', 'b', 'kitri']

아스키 값순으로 문자열이 정리된다.



for문을 list 하기

n = [a for a in range(1,10)]

print(n)

[1, 2, 3, 4, 5, 6, 7, 8, 9]


하나씩 건너뛰어서 출력하기

n = [a for a in range(1,10,2)]

print(n)

[1, 3, 5, 7, 9]



Python에서 stack 용어

push : append

pop : pop

L=[1,2,3,4,7,10]
L.append(10)
print(L)
L.pop(4)
print(L)

[1, 2, 3, 4, 7, 10, 10] : 10을 append 해서 넣어 줬다.

[1, 2, 3, 4, 10, 10] : 4를 pop 하여 스택에서 빼내었다.


리스트 내 삭제(del)

num = [1,2,3,5]
del num[2]
print(num)
[1, 2, 5]

리스트로 삭제
num = ['a','b','c','d']
#print(num[1:3])
#del num[1]
num[1:3]=[]
print(num)

list 관련함수

- append : 데이터 추가

- insert(삽입할 위치, 삽일할 데이터) : append는 제일뒤에 추가를 하지만 insert는 원하는 위치에 데이터를 추가할 수 있다.

a=['c','d','g','1']
a.insert(1,'Z')
print(a)
['c', 'Z', 'd', 'g', '1']
a=[10,20,100,-10]
a.insert(-3,'Z')
print(a)
[10, 'Z', 20, 100, -10]

음수 인덱스 값을 넣으면 -1를 더한 위치에 삽입이 된다.

- extend : append는 list가 추가가 되지만 extend는  리스트 안에 index값으로 추가가 된다.

L=[1,2,3,4]
L.append([5,6,7])
print(L)
L=[1,2,3,4]
L.extend([5,6,7])
print(L)
[1, 2, 3, 4, [5, 6, 7]]
[1, 2, 3, 4, 5, 6, 7]


L=[1,2,3,4]
L.append([5,6,7])
print(L[4])
[5, 6, 7]

2차원 배열

L=[1,2,3,4]
L.append([5,6,7])
print(L[4][1])
6

- index : 위치확인 함수(인덱스 '0'부터 시작하여 값을 찾고 위치 반환)

L=[1,2,3,1,2,4]
print(L.index(2))
1

첫 번째 있는 '2'의 인덱스 값은 1이다.


2 부터 시작하여 element가 나오면 위치반환(햇갈림)

L=[1,2,3,1,2,4]
print(L.index(4,2))
5

L.index(앞의 값이 찾을 대상, 값의 인덱스값)

인덱스에 없는 값을 적으면 -1이 출려된다.(에러가 뜸)


- count : 특정 요소의 수를 확인

- pop : 리스트의 맨 마지막 요소 삭제

- remove : 리스트에서 첫 번쨰로 나오는 target을 삭제하는 함수

listName.remove(Target)


- sort : 오름차순으로 정렬

L=[111,20,31,14,15]
L.sort()
print(L)
[14, 15, 20, 31, 111]

내림차순 정렬

L=[111,20,31,14,15]
L.sort(reverse=True)
print(L)
[111, 31, 20, 15, 14]

- reverse : 거꾸로 출력

L=[111,20,31,14,15]
L.reverse()
print(L)
[15, 14, 31, 20, 111]


- del



insert : listName.insert(index, value)




RANDOM 함수

import random
numBer = [] # empty list

for i in range(0,10):
numBer.append(random.randint(54,2349))
TargetNum = int(input(": "))
if TargetNum in numBer:
print("Exist ... !!!")
else:
print("Not Exist ... !!!")

54~2349 사이의 랜덤값을 입력

입력한값이 랜덤값과 같으면/다르면 출력




import random
for i in range(2):
print(random.randint(3,4))

random.shuffle(시퀀스데이터(sequence)) : 입력받은 시퀀스 객체를 섞는다.

import random
nList = [5,2,12,9]
random.shuffle(nList)
print(nList)
[9, 12, 2, 5]



numpy 모듈 : 행렬 풀기 쉽게 해주는 모듈


import random
L = random.sample(m,10) # 10개만 중복없이 뽑는다.



로또 번호 생성(1~45중 6개 입력,보너스 1자리)

리스트, sort로 오른차순 정렬, 랜덤 몇번할지 선택(중복x), 선택하는 횟수 및 선택번호 입력

 -1을 입력시 다시입력, 몇등인지(랜덤,선택)

'공부자료 > 파이썬' 카테고리의 다른 글

해시 / 시저 암호  (0) 2017.04.13
SETS(집합)  (0) 2017.04.13
lotto 복권  (0) 2017.04.12
문자열 관련  (0) 2017.04.11
파이써언  (0) 2017.04.10
Comments