ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 22-08-25 python _draft note
    main 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
Designed by Tistory.