-
22-08-25 python _draft notemain 2022. 8. 25. 19:28
메모리를 많이 먹는다고 해서
for문에 i가빠지는추세가... for each문...
##개발자의 무기는 if문과 for문이에요. 이 두개가 있으면 자동화가 되어요 (반복문과 조건문)
- 새로운 기술이 더 발전해서, 더 기깔나게 하면 이제 까리하게 되는거지
==> 배열은 for문을 넣기위한 첫번째 조건인거지.
각 요소는 규칙이 없는데, 배열에 넣음녀 규칙이 생김 -> for문 돌릴 수 있게 됨
==> 기계화가 되면서 자동화가 되면 배열을 쓸 수 밖에 없음
*** 모든 들어오고 나가는 문자는 String으로 웬만한건 다 들어옴. 문자로. 숫자로오면 막 a가 숫자로 오고 벌써 어지러움
##같은 소스를 봐도 10년이상 일하면, 소스를 짤 때 자기 철학이 들어감...
소스를 봤을 때, 저 사람이 저 소스를 왜 저렇게 짰을까? 하고 고민해 봐야 함.
-------------------------
+++++[배열]++++
#값 입력
자바의 배열은 우리가 추가할 수 있음.. 배열 크기가 고정적임.
그래서 우리가 arraylist를 씀,
javascript로 넘어옴.
push, pop 같은 거 있음.
# append() : 뒤에다가 붙여줌
# insert(index, object) 앞에다가 붙일 수 있음
: insert는 append의 역할도 할 수 있다. ㅎㅎ
-----------------#정해진 위치를 출력 arr = ['이순신','홍길동','전우치'] print(arr[0]) -- 0~2 -- -1~ -3 실행됨 -- 3, -4 이런 거는 out of range
#필요한 만큼 짜르기
arr = ['이순신','홍길동','전우치']
arr_sub = arr[2:3]--------------------------------
#배열을 붙여보자
arr1 = ['이순신','홍길동','전우치']
arr2 = ['전지현','박은빈','김새론']
arr = arr1+arr2
print(arr)-------------------------
-------------------------
+++++[반복문]++++
#반복문으로 배열의 요소를 출력해보자
arr = ['이순신','홍길동','전우치']
for i in arr:
print(i)
-- i는 item (배열의 요소)# range() 메소드 : 숫자만큼의 인덱스.. 0부터 출력 arr = range(5) for i in arr: print(i)
--(입력)
arr = range(10) print(arr) for i in arr: print(i)
--(출력) ==> 부모에 0을 추가해서 해준거.
range(0, 10)
0
1
2
3
4
5
6
7
8
9-------------------------
--(입력)arr = range(5,11) print(arr) for i in arr: print(i)
--(출력)
range(5, 11)
5
6
7
8
9
10-------------------------
강제 형변환 cast
--print(list(arr))
-- [5, 6, 7, 8, 9, 10]# 1~10까지 더해보세용 arr = range(1,10+1) print(list(arr)) sum=0 for i in arr: sum += i print(sum)
-- sum에 0을 두는건 +-의 항등원은 0이라서
-- 마찬가지로 곱하기, 나누기의 항등원은 1임.
가우스정리
--어려운게 있으면 작은것부터 검증해서, 맞으면 큰 것도 맞다고 본다# 몇번째인지 같이 뽑아보자 arr = ['이순신','홍길동','전우치'] cnt=0; for i in arr: print(str(cnt) + "번째" + " : " + i) cnt+=1
--(출력)
0번째 : 이순신
1번째 : 홍길동
2번째 : 전우치
--------이게 많이 쓰이는데, 하나하나 쓰기 귀찮죠? 이미 함수로 나와버림arr = ['이순신','홍길동','전우치'] cnt=0; for idx, i in enumerate(arr) : print(idx,i)
--(출력)
0 이순신
1 홍길동
2 전우치
---------------------------------
--> 와... 파이썬은 print에 여러개가 출력이 되네... 쉼표 넣으면 한칸 공백 주고 출력해줌..
--자바스크립트에서 console.log에도 여러개 넣을 수 있는데 동일함..
=========================#입력 a = input("좋아하는 수를 넣으세요") print("a", a)
-->콘솔에서 입력하면서 바로 출력이 됨...
-------------------------------------------------------#test01 a= input("첫째 수를 입력하세요") b = input("둘째 수를 입력하세요") aa = int(a) bb = int(b) sum = aa+ bb #print(a+"와"+ b+"의 합은"+ str(sum)+"입니다.") #print(a, "와", b, "의 합은", sum, "입니다.") print("{}와 {}의 합은 {}입니다".format(a, b, sum)) # preparedStatement랑 비슷한거임 모든 String은format메서드가 있음
#test02 # 예) 입력받은 수 a에서 입력받은 수 b까지의 합은 a+b입니다를 만들기 print("입력한 첫번재 숫자부터 두번째 숫자까지의 합을 구합니다.") print() a=input("첫번째 수를 입력하세요") b=input("두번째 수를 입력하세요") aa=int(a) bb=int(b) arr = range(aa, bb+1) sum= 0 for i in arr: sum +=i print("{}부터 {}까지의 합은 {}입니다".format(aa,bb,sum))
#test03 # 예) 출력할 단수를 입력하시오. 구구단. print("출력한 구구단 단수를 입력하세요") print() a=input("수를 입력하세요") print("----------------") aa=int(a) arr = range(1, 9+1) print("구구단 {}단".format(aa)) print() for i in arr: sum=i*aa print("{} X {} = {}".format(i,aa,sum)) # 우리는 사람이랑 일하는거니까, 딱 보면 구구단이구나 하고 알 수 있게 # 기계랑도 일하지만 사람이랑도 일하니까. # # print("{} X {} = {}".format(aa,1,aa*1)) # print("{} X {} = {}".format(aa,2,aa*2)) # print("{} X {} = {}".format(aa,3,aa*3)) # print("{} X {} = {}".format(aa,4,aa*4)) # print("{} X {} = {}".format(aa,5,aa*5)) # print("{} X {} = {}".format(aa,6,aa*6)) # print("{} X {} = {}".format(aa,7,aa*7)) # print("{} X {} = {}".format(aa,8,aa*8)) # print("{} X {} = {}".format(aa,9,aa*9)) # 이렇게 짜 놨어도 for문 돌릴 준비가 이미 되어있는 코드임. # 쌤은 경계가 9개라고. 9개까지는 for문 안 돌리고 이렇게 정리한다고 함.
#########################
야바위법... 같이 랜덤으로 섞어버리면 중복이없지
*** 어려운 function을 가져다가 쓰지 마라
*** 단순한 로직으로 짜 놓으면 언어가 달라져도 짜기 쉬움.
*** 가장 좋은 프로그램은 가장 기본적인것들로 노는거
@@@많으면 줄여서 작게 해 보고, 나중에 키우면 됨.
############################test04~05 # 예) 로또 임의의 중복없는 숫자 6개 출력하기 #작은 숫자로 시작함. 잘 되면 규모를 늘림 import random arr = [1,2,3,4] for i in range(10): rnd = int(random.random()*4) a = arr[0] b = arr[rnd] arr[0] = b arr[rnd] = a print(arr)
# 예) 로또 임의의 중복없는 숫자 6개 출력하기
import random
#길이가 45개인 배열 만들기
arr = range(1,45+1)
#로또번호를 저장할 배열 선언
lottoNum = []
# 45개의 로또번호를 반복문으로 입력해줌
for i in arr:
lottoNum.append(i)
#45개의 배열요소 순서를 무작위로 지정
for i in range(1000):
rnd = int(random.random()*45)
a = lottoNum[0]
b = lottoNum[rnd]
lottoNum[0] = b
lottoNum[rnd] = a
# print(lottoNum)
#로또번호를 출력할 6개 길이의 배열 선언
arr2 = range(0,6)
selectNum =[]
#lottoNum 배열에서 6개의 숫자를 선택
for i in arr2:
selectNum.append(lottoNum[i])
#출력
print(selectNum)
----------------------------------------------
쌤이 하신 배열요소는 --직관적
arr = list(range(1,45+1))
#로또번호 45개 배열 만들기
arr = [
1,2,3,4,5, 6,7,8,9,10,
11,12,13,14,15, 16,17,18,19,20,
21,22,23,24,25, 26,27,28,29,30,
31,32,33,34,35, 36,37,38,39,40,
41,42,43,44,45
]
--------------------------------------------========================
로또번호 만드는 다른 방법
* 뽑아오되 뽑아온거 중복 안되게 표식 남기기#test07 # 예) 배열 요소 꺼내오고 다른 요소로 표시해주고, 중복되지 않게 꺼내올 수 있도록 반복문에서 탈출하기 import random arr4 = [1,2,3,4] arr2 =[] while True: rnd = int(random.random()*4) if arr4[rnd] == -1: print("skip") else: arr2.append(arr4[rnd]) arr4[rnd] = -1 if len(arr2) >= 2: break print (arr2)
# 로또번호 출력하는 다른 방법 # 예) 배열 요소 꺼내오고 다른 요소로 표시해주고, 중복되지 않게 꺼내올 수 있도록 반복문에서 탈출하기 import random arr45 = [ 1,2,3,4,5, 6,7,8,9,10, 11,12,13,14,15, 16,17,18,19,20, 21,22,23,24,25, 26,27,28,29,30, 31,32,33,34,35, 36,37,38,39,40, 41,42,43,44,45 ] arr6 =[] while True: rnd = int(random.random()*45) if arr45[rnd] == -1: print("skip") else: arr6.append(arr45[rnd]) arr45[rnd] = -1 if len(arr6) >= 6: break print (arr6)
##더 쉬운바업. pop 쓰면..!... # 로또번호 출력하는 다른 방법 # 예) 배열 요소 꺼내오고 다른 요소로 표시해주고, 중복되지 않게 꺼내올 수 있도록 반복문에서 탈출하기 import random #뽑아올 변수와 뽑아서 넣을 변수 선언 arr4 = [1,2,3,4] arr2 = [] #뽑아올 변수의 원래 값 확인 print("original arr4",arr4) #뽑아올 변수의 인덱스를 랜덤으로 설정해서 뽑아서 임시 변수 a, b에 저장 #뽑아와서 arr2에 넣기 a = arr4.pop(int(random.random()*len(arr4))) arr2.append(a) b = arr4.pop(int(random.random()*len(arr4))) arr2.append(b) #확인 print("modified arr4", arr4) print("arr2", arr2) print() print("----------------") print() print("lotto Number extraction") arr45 = [ 1,2,3,4,5, 6,7,8,9,10, 11,12,13,14,15, 16,17,18,19,20, 21,22,23,24,25, 26,27,28,29,30, 31,32,33,34,35, 36,37,38,39,40, 41,42,43,44,45 ] arr6=[] num1 = arr45.pop(int(random.random()*len(arr45))) arr6.append(num1) num2 = arr45.pop(int(random.random()*len(arr45))) arr6.append(num2) num3 = arr45.pop(int(random.random()*len(arr45))) arr6.append(num3) num4 = arr45.pop(int(random.random()*len(arr45))) arr6.append(num4) num5 = arr45.pop(int(random.random()*len(arr45))) arr6.append(num5) num6 = arr45.pop(int(random.random()*len(arr45))) arr6.append(num6) print(arr6)
------------------------------------------------------
##test5의 가장 원시적인 방법을 추천함. C언어같은데에도 그냥 그대로 들고가면 작동하기때문에.
코드 가독성은 마지막 꺼가 제일 좋지만.
-----------------------------------------------------## 홀짝 게임
test10
@@내가 한거1#홀/짝을 고르시오 #나 : 홀 # 컴: 홀 # 결과 : 승리 import random #나 : 홀 #컴 : 짝 #결과 : 패배 myChoice = input("홀/짝을 입력하세요") comChoiceArr = ['홀','짝'] comChoice = comChoiceArr.pop(int(random.random()*2)) if myChoice == "홀" or myChoice =="짝": print() print("myChoice : ", myChoice) print("comChoice : ",comChoice) print() if myChoice == comChoice : print("결과 : 승리") print('축하합니다!') else : print("결과 : 패배") print("다음 기회에...") else : print("눈이 없으신가요? 다시하세요")
@@내가한거2 배열 안쓰고
#홀/짝을 고르시오 #나 : 홀 # 컴: 홀 # 결과 : 승리 import random #나 : 홀 #컴 : 짝 #결과 : 패배 myChoice = input("홀/짝을 입력하세요") if ((int(random.random()*2)/2 == 0)) : comChoice ="홀" else : comChoice = "짝" if myChoice == "홀" or myChoice =="짝": print() print("myChoice : ", myChoice) print("comChoice : ",comChoice) print() if myChoice == comChoice : print("결과 : 승리") print('축하합니다!') else : print("결과 : 패배") print("다음 기회에...") else : print("눈이 없으신가요? 다시하세요")
'main' 카테고리의 다른 글
22-09-06_파이썬 (0) 2022.09.06 살려주세요 (0) 2022.09.05 220905_파이썬 (0) 2022.09.05 22-08-26_python Day03 (0) 2022.08.26 22-08-25_web programming draft note (0) 2022.08.25