20221128, 1129 List, String, Tuple, File

    strMethod02.py

    s3 = 'i like programming, i like swimming.'
    print("s3.startswith('i like')  ", s3.startswith('i like'))     # 'i like'로 시작하는 문자열인지 판단
    print("s3.startswith('I like')  ", s3.startswith('I like'))     # 대소문자 구별
    
    print("s3.endswith('swimming.'  ", s3.endswith('swimming.'))    # 'swimming.'로 끝나는 문자열인지 판단
    print("s3.startswith('progr', 7)  ", s3.startswith('progr', 7)) # 7번째 문자열이 'progr'로 시작하는지 판단

     

    strMethod03.py

    print ("-------------------------------------")
    print ("----   join -> 연결한 문자열 반환     ")
    print ("-------------------------------------")
    u = 'spam ham\tegg\ncheese'
    
    t = u.split()  # 문자열 내의 단어 리스트
    print("u.split 99 -->", t)
    
    t2 = ':'.join(t)    # 리스트 t 내부의 각 원소들을 ':'로 연결한 문자열 반환
    print("type(t2)", type(t2))
    print("':'.join(t)-->", t2)
    print()
    
    t3 = ",".join(t)    # 리스트 t 내부의 각 원소들을 ','으로 연결한 문자열 반환
    print("t3->", t3)

     

    strMethod04.py

    print ("---------------------- Character -------------------")
    print('1234'.isdigit())
    print('abcd'.isalpha())
    print('1abc234'.isalnum())
    print('abc'.islower())
    print('ABC'.isupper())
    print('\t\r\n'.isspace())
    print('This Is A Title'.istitle())

     

    strMethod05.py

    print ("---------------------------------------------------------------------")
    print ("---  문자열 포매팅  튜플을 이용한 포매팅                             --")
    print ("---  포맷팅 문자 : 문자열 내에 존재하는 %                            --")
    print ("---  포맷팅을 활용한 문자열 변환:포맷팅 문자를 포함하는 문자열 % 튜플 --")
    print ("----------------------------------------------------------------------")
    print ()
    print('version2 방식 : name = %s, age = %s' % ('한창훈', 24))
    print("version3 방식 : name = {}, age = {}".format('허유나', 34))
    print('version3(index) 방식 : name = {1}, age = {0}'.format('손신효', 19))
    
    letter = '''
    안녕하세요 %s님
    오늘 밤 파티에 참석해 주실 수 있나요?
    그럼 ..
    최혜선 드림
    '''
    
    name = '공현지'
    print("---- 111 letter % name ----", letter %name)
    print("===================================")
    names = ['오태우', '신동호', '이례영', '김우석', '김건희']
    for name in names:
        print(" letter % name ", letter %name)
        print('-' * 40)
        print()
    
    print ("--------------------------------------------------------")
    print ("-----  문자열 포매팅  튜플을 이용한 포매팅            ----")
    print ("-----  사전(Dictionary)을 이용한 포매팅               ----")
    print ("-----  사전형태이기 때문에 순서가 바뀌어도 괜찮음      ----")
    print ("-----  주소 항목은 % 앞에 없기 때문에 무시            ----")
    print ("--------------------------------------------------------")
    print('%(이름)s -- %(전화번호)s' %{'이름':'장제환', '전화번호':1234})
    print('%(이름)s -- %(전화번호)s' %{'전화번호':5678, '이름':'최지웅'})
    print('%(이름)s -- %(전화번호)s' %{'전화번호':2345, '이름':'김현진', '주소':'안시성'})
    print('Version 3 {}       -- {}'.format(5678, '장하영'))   
    print('Version 3 index {0} -- {1}'.format(5678, '임재우'))

     

    append.py

    # 리스트에 요소 추가하기 ( append() 함수 )
    
    listdata = []               # 빈 리스트를 listdata로 정의
    
    for i in range(3):
        txt = input('리스트에 추가할 값을 입력하세요[%d/3]: ' %(i+1))
        listdata.append(txt)
        print(listdata)

     

    del.py

    # 리스트의 특정 위치의 요소 제거하기 ( del 키워드 )
    # del 키워드로 리스트 특정 위치의 요소를 제거할 수 있다.
    
    solarsys = ['태양', '수성', '금성', '지구', '화성', '목성', '토성', '천왕성', '해왕성']
    
    del solarsys[0]
    print(solarsys)
    
    del solarsys[-2]
    print(solarsys)

     

    index1.py

    # 리스트 특정 위치에 요소 삽입하기( insert() 함수 )
    
    solarsys = ['태양', '수성', '금성', '지구', '화성', '목성', '토성', '천왕성', '해왕성']
    
    pos = solarsys.index('목성')          # '목성' 의 index번호를 구함 :  pos = 5
    solarsys.insert(pos, '소행성')        # index 5번 위치에 '소행성' 을 삽입함
    
    print(solarsys)

     

    index2.py

    # 리스트에서 특정 위치의 요소를 변경하기
    
    
    solarsys = ['태양', '수성', '금성', '지구', '화성', '목성', '토성', '천왕성', '해왕성']
    
    planet = '화성'
    
    pos = solarsys.index(planet)            # index번호 4
    solarsys [pos] = 'Mars'                 # '화성' 을 'Mars'로 변경
    print(solarsys)

     

    insert1.py

    # 리스트에서 특정 요소의 위치 구하기 ( index() 함수 )
    # index()함수는 리스트 요소의 index번호를 구해주는 역할
    
    
    solarsys = ['태양', '수성', '금성', '지구', '화성', '목성', '토성', '천왕성', '해왕성', '지구']
    planet = '지구'
    
    pos = solarsys.index(planet)                # index번호 3
    print('%s은(는) 태양계에서 %d번째에 위치하고 있습니다.' %(planet, pos))
    
    pos = solarsys.index(planet, 5)             # index번호 9
    print('%s은(는) 태양계에서 %d번째에 위치하고 있습니다.' %(planet, pos))

     

    len.py

    # 리스트에 있는 모든 요소 갯수 구하기 ( len() 함수 )
    
    listdata = [2, 2, 1, 3, 8, 5, 7, 6, 3, 6, 2, 3, 9, 4, 4]
    
    listsize = len(listdata)
    print(listsize)                     # 15가 출력됨

     

    listData.py

    #리스트에서 특정 위치의 요소 구하기
    
    
    listdata = [1, 2, 'a', 'b', 'c', [4, 5, 6]]
    
    val1 = listdata[1]          # 1번 index번호값을 구함   2
    val2 = listdata[3]          # 3번 index번호값을 구함   b
    val3 = listdata[5][1]       # 5번 index번호에 또 1번 index번호를 구함   5
    
    
    
    print(val1)                 # 2가 출력됨
    print(val2)                 # 'b’가 출력됨
    print(val3)                 # 5 가 출력됨

     

    listPlus.py

    # 리스트 데이터 합치기 ( + )
    
    
    listdata1 = ['a', 'b', 'c', 'd', 'e']
    listdata2 = ['f', 'g', 'h', 'i', 'j']
    
    listdata3 = listdata1 + listdata2
    listdata4 = listdata2 + listdata1
    
    print(listdata3)            # ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
    print(listdata4)            # ['f', 'g', 'h', 'i', 'j', 'a', 'b', 'c', 'd', 'e']

     

    range.py

    # 순차적인 정수 리스트 만들기 ( range() 함수 )
    # range() 함수는 특정 범위의 순차적인 정수 리스트를 만들게 해준다.
    
    range1 = range(10)          # 0 ~ 9
    range2 = range(10, 20)      # 10 ~ 19
    
    print(list(range1))         # [0 ,1, 2, 3, 4, 5, 6, 7, 8, 9]가 출력됨
    print(list(range2))         # [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]가 출력됨
    
    # 5부터 10까지 합을 구하는 프로그램
    sum=0
    for i in range(5,11):       # 1 ~ 10 까지 loop가 돌아감
        sum += i
    
    print('sum=', sum)

     

    reverse.py

    # 리스트의 요소 순서를 역순으로 만들기 ( reverse() 함수 )
    # reverse() 함수는 리스트의 모든 요소 순서를 거꾸로 만들어 주는 함수
    # reverse() 함수는 원본 리스트 자체가 변경됨
    
    listdata = list(range(5))       # [0,1,2,3,4]
    listdata.reverse()              # 리스트의 요소 순서를 역순으로 바꿔줌
    
    print(listdata)                 # [4, 3, 2, 1, 0]이 출력됨

     

    shuffle.py

    # 리스트의 요소 무작위로 섞기 ( shuffle() 함수 )
    # random 모듈의 shuffle() 함수는 리스트 요소를 무작위로 섞어주는 함수
    # 실행 결과는 매번 달라짐
    # from  모듈명  import  함수명
    from random import shuffle
    
    listdata = list(range(1, 11))           # 1 ~ 10
    for i in range(3):                      # i는 0 ~ 2까지 3번 loop가 돌아감
       shuffle(listdata)                    # shuffle() 함수는 무작위로 섞어줌
       print(listdata)                      # 출력 결과는 실행할 때마다 달라짐

     

    slice.py

    # 리스트에서 특정 구간에 있는 요소 추출하기
    # [1 : 4]   index번호 1번 부터 3번까지 추출
    # [4 : ]    index번호 4번 부터 끝까지 추출
    
    solarsys = ['태양', '수성', '금성', '지구', '화성', '목성', '토성', '천왕성', '해왕성']
    rock_planets = solarsys[1:4]
    gas_planets = solarsys[4:]
    print('태양계의 암석형 행성: ')
    print(rock_planets)
    print('태양계의 가스형 행성: ');print(gas_planets)

     

    slice2.py

    # 리스트에서 홀수.짝수번째 요소만 추출하기
    
    listdata = list(range(1, 21))       # 1 ~ 20 까지 순차적인 정수 리스트를 생성
    print(listdata)
    
    evenlist = listdata[1::2]           # index번호 1번부터 step 2로 슬라이싱
    print(evenlist)                     # [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
    
    oddlist = listdata[::2]             # index번호 0번부터 step 2로 슬라이싱
    print(oddlist)                      # [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

     

    sort.py

    # 리스트 요소 정렬하기 ( sort() 함수 )
    # sort() 함수는 리스트에 있는 요소를 오름차순으로 정렬해주는 역할을 함
    # 내림차순 정렬을 하기 위해서는 sort(reverse = True)
    
    
    namelist = ['Mary', 'Sams', 'Aimy', 'Tom', 'Michale', 'Bob', 'Kelly']
    
    namelist.sort()                     # 리스트에 있는 요소를 오름차순으로 정렬함
    print(namelist)
    
    namelist.sort(reverse = True)       # 리스트에 있는 요소를 내림차순으로 정렬함
    print(namelist)

     

    sorted.py

    # 리스트 요소 정렬하기 ( sorted() 함수 )
    # 파이썬 내장함수 sorted() 함수는 리스트의 모든 요소를 정렬한 결과 리스트를 리턴함
    
    
    namelist = ['Mary', 'Sams', 'Aimy', 'Tom', 'Michale', 'Bob', 'Kelly']
    
    ret1 = sorted(namelist)                         # 리스트의 요소를 오름차순 정렬함
    ret2 = sorted(namelist, reverse=True)           # 리스트의 요소를 내림차순 정렬함
    
    print(ret1)
    print(ret2)

     

    sum.py

    # 리스트의 모든 요소의 합 구하기 ( sum() 함수 )
    # sum() 함수는 리스트의 모든 요소의 합을 구하고 리턴함
    
    
    listdata = [2, 2, 1, 3, 8, 5, 7, 6, 3, 6, 2, 3, 9, 4, 4]
    
    ret = sum(listdata)
    print(ret)                          # 65가 출력됨

     

    listIn01.py

    print ("---------------------------------------------------------------")
    print ("--- 리스트 내포                                                --")
    print ("--- 일반적인 리스트 생성법                                       --")
    print ("---------------------------------------------------------------")
    L = [] # 0,1, 4, 9....81
    #         0,1,2,3,4,5,6,7,8,9
    for k in range(10):
        L.append(k*k)
    
    print (L)
    
    print ("--- <<<  위 코딩은 리스트 내포 리터럴 방식을 활용해서 아래와 같이 변경   >>>      --")
    print ("--- for 의 변수가 식으로 들어간 변수와 동일해야함                              --")
    print ("--- 0, 1, 2, 3…이 k에 할당될 때마다 식을 진행하여 리스트의 원소로 할당          --")
    L = [k * k for k in range(10)]
    print ('리스트 내포 리터럴 방식->', L)

     

    listIn02.py

    print ("--- <<<  리스트 내포 리터럴 방식  >>>                                       --")
    print ("--- k=0 → 0 % 2 = 0 → if 0 → 결과가 false로 expression 수행 X            --")
    print ("--- k=1 → 1%2 = 1 → if 결과가 true로 expression 수행                      --")
    print ("--- k=2 → 2 % 2 = 0 → if 0 → 결과가 false로 expression 수행 X            --")
    print ("--- k=3 → 3%2 = 1 → if 결과가 true로 expression 수행                      --")
    L = [k * k for k in range(10) if k % 2] # 홀수의 제곱만 리스트로 형성
    print (L)

     

    listIn03.py

    print ("------------------------------------------------------------------------------")
    print ("--- 리스트 내포                                                                --")
    print ("--- 20보다 작은 2의 배수와 3의 배수에 대해 그 두 수의 합이 7의 배수인 것들에 대해      --")
    print ("--- 그 두 수의 곱을 출력하는 코드                                                --")
    print ("--- 1) range(2, 20, 2) = [2, 4, 6, 8, 10, 12, 14, 16, 18]                   --")
    print ("--- 2) range(3, 20, 3) = [3, 6, 9, 12, 15, 18]                               --")
    print ("--- 3) i ← 20보다 작은 2의 배수, j ← 20보다 작은 3의 배수                       --")
    print ("--- 4) 2 + 12 = 14 ← 7의 배수                                                 --")
    print ("--- 5) 4 + 3 = 7 ← 7의 배수                                                   --")
    print ("--- 6) 18 + 3 = 21 ← 7의 배수                                                 --")
    print ("-------------------------------------------------------------------------------")
    
    L = [(i, j, i*j) for i in range(2, 20, 2) for j in range(3, 20, 3) if (i + j) % 7 == 0]
    print (L)

     

    listIn04.py

    print ("--------------------------------------------------------------------------------")
    print ("--- 리스트 내포                                                                --")
    print ("--- 문장을 공백상태로 잘라오면서 대문자,소문자,길이를                                --")
    print ("--- 리스트에 저장하는 코드                                                       --")
    print ("--- split ()→ 공백을 기준으로 문자열 잘라 리스트 만들기                            --")
    print ("--- stuff는 리스트 내포 문법 형태                                                --")
    print ("--- 리스트 내포 안의 원소는 3개의 원소를 가진 리스트 형태로 하나                      --")
    print ("--- upper : 대문자로 변환, lower: 소문자로 변환, len: 단어의 길이                  --")
    print ("--- i 자체가 리스트                                                            --")
    print ("------------------------------------------------------------------------------")
             # The quick brown fox jumps over the lazy dog
    words = 'The quick brown fox jumps over the lazy dog'.split()
    print('words->' , words)
    
    #                                           ['The', 'quick', 'brown', 'fox', 'jumps', 'over', 'the', 'lazy', 'dog']
    stuff = [[w.upper(), w.lower(), len(w)] for w in words]
    for i in stuff:
        print (i)

     

    tuple01.py

    print ("-------------------------------------------------------------------------")
    print ("---      <<   튜플 연산        >>                                        --")
    print ("---  1) t = (정수, 정수, 문자열)                                          --")
    print ("---  2) u = t, (1, 2, 3, 4, 5) → 2개의 원소를 가진 튜플 → 원소로 튜플 가능  --")
    print ("---  3) u2 = t2, (1, 2, 3) → 원소로 리스트 가능                           --")
    print ("---  4) 원소로 사전도 가능                                                 --")
    print ("--------------------------------------------------------------------------")
    
    t = (12345, 54321, 'hello!')
    u = t, (1, 2, 3, 4, 5) # 튜플 내부 원소로 다른 튜플을 가질 수 있음
    print ("t, (1, 2, 3, 4, 5) -->", u )

     

    tuple02.py

    # 튜플 내부 원소로 리스트 가질 수 있음
    # 튜플 내부 원소로 사전 가질 수 있음
    t2 = [1, 2, 3] # 튜플 내부 원소로 리스트 가질 수 있음
    u2 = t2, (1, 2, 4)
    print ("t2, (1, 2, 4) -->", u2 )
    
    t3 = {1:"abc", 2:"def"} # 튜플 내부 원소로 사전 가질 수 있음
    u3 = t3, (1, 2, 3)
    print ("t3, (1, 2, 3) -->", u3)

     

    tuple03.py

    # list()와 tuple()내장 함수를 사용하여 리스트와 튜플을 상호 변환할 수 있음
    T = (1,2,3,4,5)
    
    print('T->', T)
    #  T[0] = 100  --> Tuple은 변환 안 됨
    
    L = list(T)
    L[0] = 100
    print('L->', L)

     

    del.py

    # 사전의 특정 요소 제거하기 ( del 키워드 )
    
    names = {'Mary':10999, 'Sams':2111, 'Aimy':9778, 'Tom':20245,
             'Michale':27115, 'Bob':5887, 'Kelly':7855}
    
    del names['Sams']       # names 요소중 키가 'Sams'인 요소를 사전에서 제거
    print(names)

     

    dict01.py

    #딕셔너리(dictionary)
    # 문제 각 Row(행)을 리스트외 Dictionary를 사용 작성
    address3 = {
        '1': { 'name': '이순신', 'email':'hong@gmail.com',  'hp-num': '010-2234-9678'},
        '2': {'name': '대조영', 'email': 'dae@gmail.com',  'hp-num': '010-1234-5679'},
        '3': { 'name': '강감찬', 'email': 'kang@gmail.com', 'hp-num': '010-6783-3670'},
        '4': {'name': '김유신', 'email': 'kim@gmail.com',  'hp-num': '010-7823-3578'},
    }
    print("address3->" , address3)
    
    for key in address3:
        addr_dict = address3[key]
        print("addr_dict->" , addr_dict)

     

    dict_change.py

    # 사전의 특정 요소값 변경하기
    # 아기이름 : 출생아수
    
    
    names = {'Mary':10999, 'Sams':2111, 'Aimy':9778, 'Tom':20245,
             'Michale':27115, 'Bob':5887, 'Kelly':7855}
    names['Aimy'] = 10000
    print(names)

     

    dict_in.py

    # 사전에 특정 key가 존재하는지 확인하기 ( in 키워드 )
    # in 키워드를 이용하여 특정 값이 사전의 key로 존재하는지 확인할 수 있다.
    
    names = {'Mary':10999, 'Sams':2111, 'Aimy':9778, 'Tom':20245,
             'Michale':27115, 'Bob':5887, 'Kelly':7855}
    
    k = input('이름을 입력하세요: ')
    
    if k in names:       # 입력한 이름 k가 사전 names의 키로 존재하면... True 리턴
       print('이름이 <%s>인 출생아수는 <%d>명 입니다.' %(k, names[k]))
    else:
       print('자료에 <%s>인 이름이 존재하지 않습니다.' %k)

     

    dict_items.py

    # 사전 요소를 모두 추출하기 ( items() 함수 )
    # items() 함수는 사전에서 key:value 를 모두 추출하여 리턴
    names = {'Mary':10999, 'Sams':2111, 'Aimy':9778, 'Tom':20245,
             'Michale':27115, 'Bob':5887, 'Kelly':7855}
    
    items = names.items()
    print(items)
    
    for item in items:
       print(item)

     

    dict_keys.py

    # 사전에 key만 추출하기 ( keys() 함수 )
    # key() 함수는 사전의 key만 추출하여 리턴
    
    names = {'Mary':10999, 'Sams':2111, 'Aimy':9778, 'Tom':20245,
             'Michale':27115, 'Bob':5887, 'Kelly':7855}
    
    ks = names.keys()
    print(ks)
    
    #        ['Mary', 'Sams', 'Aimy', 'Tom', 'Michale', 'Bob', 'Kelly']
    for k in ks:
       print('Key:%s \tValue:%d' %(k, names[k]))

     

     

     

    댓글