본문 바로가기

python

5. 시퀀스 자료

728x90
반응형

26. 시퀀스 자료형 이해하기

문자열 'abcde' a,b,c,d,e 순서대로 나열되어있는

 시퀀스 자료형이다

 

예제:

 strdata = 'abcde'          #a b c d e

print(strdata[0])           #0 1 2 3 4

 

listdata = ['a', 'b', 'c', 'd', 'e' ]

                    0    1    2    3    4

print(listdata[0])

결과: a

 

| |

 

 strdata = 'abcde'          #a b c d e

print(strdata[0])           #0 1 2 3 4

 

listdata = ['a', 'b', 'c', 'd', 'e' ]

                   -5  -4   -3   -2   -1

 

 

 

문제73. 이름의 끝글자가 T 끝나는 사원들의 이름을

출력하시오

 

파이썬으로

import csv

file=open("d:\\csv\\emp2.csv", 'r')

emp=csv.reader(file)

for emp_list in emp:

    if str(emp_list[1][-1])=='T':

        print(emp_list[1])

 

 

 

 

 

 

 

27. 시퀀스 자료 인덱싱 이해하기

예제:

strdata = 'Time is money!!'    #문자열 변수

listdata=[1,2,[4,5,6 ] ]    #리스트 변수

                           #리스트 안에 리스트가 있는 경우

 

 

[삼중 리스트에서 인덱싱하기]

조금 복잡하지만 다음의 예를 따라 해보자.

>>> a = [1, 2, ['a', 'b', ['Life', 'is']]]

리스트 a안에 ['a', 'b', ['Life', 'is']]라는 리스트가 포함되어 있고, 그 리스트 안에 다시 ['Life', 'is']라는 리스트가 포함되어 있다. 삼중 구조의 리스트이다.

이 경우 'Life'라는 문자열만 끄집어내려면 다음과 같이 해야 한다.

>>> a[2][2][0]
'Life'

 

 

문제74. 위의 예제에서 strdata 문자열 변수에서

철자 i 출력하시오.

strdata = 'Time is money!!'    #문자열 변수

 

strdata='Time is money!!'

print(strdata[1,5])

 

 

문제75.  아래의 listdata 변수에서 숫자 2 출력하시오

listdata=[1,2,[4,5,6 ] ] 

 

print(listdata[1])

 

설명

listdata=[   1,   2,   [   4,   5,   6 ] ] 

                    0    1               2

            

 

 

문제76. 아래의 listdata 변수에서 숫자4 출력하시오

listdata=[1,2,[4,5,6 ] ] 

 

listdata=[1,2,[4,5,6 ] ] 

print(listdata[2][0])

 

 

 

 

 

28. 시퀀스 자료 슬라이싱 이해하기

예제:

strdata='Time is money'

 

print(strdata[1:5])

 


 

설명

strdata='T i m e     i  s    m o n    e    y'

                01 2  3  4 56 78  910  11  12

 

 이것의 의미  :  1 <=  strdata[1:5]  <  5

 

 

**

strdata='Time is money'

print(strdata[:])

                      

      처음부터 끝까지 뽑아라

 

 

 

 

 

문제77. strdata 에서 아래의 문자만 출력하시오

---->>  Time is

 

strdata='Time is money'

 

print(strdata[0:7])

이렇게 처음부터 시작 하는 것은

--> print(strdata[:7])  가능합니다.

 

 

 

*****번외문제

 

a='20181120rainy'

 

year=a[:4]

day=a[4:8]

weather=a[8:]

 

print(year,'',day,'',weather)

 

 

 

a='pythan'

if b==a[4]:                ====> 안됨. 튜플, 문자열은 immutable 자료.

    b='o'

    print(a)

   

print(a[:4]+'o'+a[-1])  ---> 이렇게 slice 해서 하면 된다.

 

**************************

 

 

문제78. strdata 문자열 변수값에서 짝수번째 철자만 출력하시오

strdata='Time is money'

 

결과: Tm smny

 

print(strdata[::2])

      ||

print(strdata[ 0   :    12    :          2])

                     시작  전체길이  시작지점부터 2개씩 퐁당퐁당

 

 

홀수번째 뽑으려면

strdata='Time is money'

 

print(strdata[1:12:2])

 

 

 

 

문제79. 이름을 출력하고

이름의 첫번째 철자부터 세번째 철자까지 아래와 같이 출력되게 하시오!

 

import csv

file=open("d:\\csv\\emp2.csv", 'r')

emp=csv.reader(file)

for emp_list in emp:

    print(emp_list[1][:3])

 


 

 

 

문제80. 위의 결과를 pandas 이용해서

 출력하시오

 

import pandas as pd

emp = pd.read_csv("d:\\csv\\emp.csv")

result=emp['ename']

print(result.apply(lambda x:x[:3]) )

 


 

 

29. 시퀀스 자료 연결하기 (+)

 

예제:

strdata1 = 'I love '

strdata2 = 'Python '

print(strdata1 + strdata2)

 


 

 

 

문제81. 이름을 출력하는데 전부 소문자 출력하시오

import csv

file=open("d:\\csv\\emp2.csv", 'r')

emp=csv.reader(file)

for emp_list in emp:

print(emp_list[1]. lower() )

                            

                컴마 아님!

 

 

 

문제82. 이름을 출력하는데 이름의 첫철자는 대문자 출력하고

나머지는 소문자 출력하는 아래의 SQL 구현하시오

 

SQL> select initcap(ename)

           from emp;

              

import csv

file=open("d:\\csv\\emp2.csv", 'r')

emp=csv.reader(file)

for emp_list in emp:

    a=emp_list[1][0].upper()

    b=emp_list[1][1:].lower()

    print(emp_list[1], a+b)

 


 


 

30. 시퀀스 자료 반복 이해하기 (*)

예제:

a=int(input('숫자를 입력'))

for i in range(1, a+1):

print(''*i)

숫자를 입력   ~   7

 



 

31. 시퀀스 자료 크기 이해하기 (len)

strdata1= 'I love python'

print(len(strdata1))

   ||

오라클의 length 함수와 같은 기능.

 

 

문제83. 아래의 sql 파이썬으로 구현하시오

SQL> select ename, length(ename)

        from emp;

        ||

import csv

file=open("d:\\csv\\emp2.csv", 'r')

emp=csv.reader(file)

for emp_list in emp:

    print(emp_list[1], len(emp_list[1]))

 

 

 

 

32. 문자열의 멤버체크 이해하기 (in)

예제:

listdata = [1,2,3,4]

 

result1 = 5 in listdata

result2 = 4 in listdata

 

print(result1)

print(result2)

 



설명:

result1 = 5 in listdata

                  

           'listdata 안에 숫자 5 있다' 뜻함.

 

 

 

 

문제84. 겨울왕국 대본에는 elsa 나오는지 확인하기 위해서 겨울왕국 스크립트 한라인 한라인을 각각 list 변수에 담으시오

 winter.txt (텍스트) ------------------> list 변수

                                                   

 script                      ['repaired', 'with', 'a', 'ice.\n']

 

 

:

file = open("d:\\winter.txt", 'r')

for winter_list in file:

a=winter_list.split(' ')

print(a)               

                  공백으로 쪼개겠다.

 

 

 

문제85. 아래의 리스트에서 단어를 하나씩

뽑아내서 출력하시오

 ['repaired', 'with', 'a', 'ice.\n']

 

for i in ['repaired', 'with', 'a', 'ice.\n']

print(i)

            | |

a= ['repaired', 'with', 'a', 'ice.\n']

for i in  a:

    print(i)

 

 


 

문제86.

                                       for loop             for loop

 winter.txt (텍스트) --------> list 변수-------------->한단어

                                       

 script           ['repaired', 'with', 'a', 'ice.\n']

 

문제85 처럼 한단어씩 쪼개져서 나오게 하시오.

 

file = open("d:\\winter.txt", 'r')

for winter_list in file:

    a=winter_list.split(' ')

    for b in a:

        print(b)

 


   

 

문제87. 쪼개진 단어들이 소문자로 출력되게 하시오

 

file = open("d:\\winter.txt", 'r')

for winter_list in file:

    a=winter_list.split(' ')

    for b in a:

        print(b.lower())

 

 

 

 

문제88. 아래의 list 에서 단어 aaa 있는지

count 하시오

 

word=['bbb', 'ccc', 'aaa', 'ddd', 'aaa']

For i in word:

Cnt=0

Cnt=cnt+i.count('aaa')  #cnt+=i.count('aaa')

print(cnt)

 

:2

 

 

심플답:

Word=['bbb', 'ccc', 'aaa', 'ddd', 'aaa']

Print(word.count('aaa') )

 

 

 

***********

번외문제

word=['bbb', 'ccc', 'aaa', 'ddd', 'aaa\n']

리스트를 가지고 'aaa' 갯수를 세는데,

Sum  count  모두 이용해서 print  하고

차이점을 확인하시오

 

오답:

word=['bbb', 'ccc', 'aaa', 'ddd', 'aaa']

Cnt=0     #count 함수 쓸거라서 0으로 해줘야 한다.

S.cnt=0    # sum 마찬가지, '' 하면 에러난다.

For i in word:

Cnt=cnt+i.count('aaa')

If i=='aaa':

S.cnt=sum+i

Print(cnt, sum)

 

 

:

word=['bbb', 'ccc', 'aaa', 'ddd', 'aaa']

cnt=0    

if_cnt=0   

for i in word:

cnt=cnt+i.count('aaa')

if i=='aaa':

if_cnt=if_cnt+1

print(cnt, if_cnt)

 

*******if i=='aaa':

            if_cnt=if_cnt+1

     정확히 이해 하고 있는가?

 

 

 

 

문제89. 겨울왕국 대본에는

elsa라는 단어가 나오는가?

anna 라는 단어는 나오는가?

 

준하

file = open("d:\\winter.txt","r")

b=0

c=0

for winter_list in file:

    a=winter_list.split(' ')

    for i in a:

        j=i.lower()

        b+=j.count('elsa')

        c+=j.count('anna')

 

print(b,c)

 

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

선혜 [리스트로 뽑아서 anna.\n 같은건 제껴짐]

elsa = 0

anna = 0

file = open('c:\\데이터\\winter.txt','r')

for winter_list in file:

    winter_list = winter_list.lower()

    a=winter_list.split(' ')

    elsa+=a.count('elsa')

    anna+=a.count('anna')

   

print('elsa %d, anna %d' %(elsa, anna))

 

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

한솔

elsa = 0

anna = 0

file = open('d:\\winter.txt','r')

for winter_list in file:

    winter_list = winter_list.lower()

    a=winter_list.split(' ')

    elsa+=a.count('elsa')

    anna+=a.count('anna')

   

print('elsa %d, anna %d' %(elsa, anna))

 

 

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

소현[증명]

word = ['bbb','ccc','aaa','bbb','aaa.\n']

cnt = 0

cnt_if =0

for i in word:

    cnt += i.count('aaa')     #'aaa' count 한거 더해라.(그룹화)

    if i == 'aaa':

        cnt_if +=1

print(cnt, cnt_if)   # (2,1)

 

**count sum 차이

 -->count aaa.\n 센다.

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

서일[증명]

word = ['bbb','ccc','aaa','bbb','야아아aaa']

cnt = 0

cnt_if =0

print (word.count('aaa'), ' for 이전의 색적')   #0

 

for i in word:

    print(i)  #word 값이 하나씩 세로로 출력 ㅇㅈ?

    cnt += i.count('aaa')   #'aaa' 들어간거 카운트한거 더하셈

    if i == 'aaa':        # i 문에서 'aaa' 일치하는거

        cnt_if +=1       # if 지정-> 더해

print(cnt, 'for 이후의 색적')

 

*리스트에서 출력할 때와

  for 이용해서 단어로 쪼개진거 출력할 때가 다르다.

리스트는 anna\n anna 인식  X

For     anna\n anna 인식  O

 

 

 

 

 

160. 주어진 숫자를 천단위 구분하기

 

num = input('아무 숫자를 입력하세요: ')

 

if num.isdigit():

   num = num[::-1]

   ret = ''

   for i, c in enumerate(num):

      i += 1

      if i != len(num) and i%3 == 0:

         ret += (c + ',')

      else:

         ret += c

   ret = ret[::-1]

   print(ret)

else:

   print('입력한 내용 [%s]: 숫자가 아닙니다.' %num)

 

 



 

 

161. 문자열의 문자를 다음 문자로 변경하기

 

text = input('문장을 입력하세요: ')

 

ret = ''

for i in range(len(text)):

    if i != len(text)-1:

        ret += text[i+1]

    else:

        ret += text[0]

       

print(ret)

 

 


728x90
반응형

'python' 카테고리의 다른 글

7. 리스트, 튜플, dictionary  (0) 2019.03.25
6. 문자열, escape  (0) 2019.03.24
파이썬vs오라클vs판다스 연산자  (0) 2019.03.24
4. 연산자, TRUE/FALSE  (0) 2019.03.24
3. None, 정수형, 실수형, 복소수형  (0) 2019.03.24