본문 바로가기

언어/Python

문자열~리스트~조건,반복문

#2중 for문으로 별찍기

for i in range(1,6):
    for j in range(1,6):
        if (j==i):
         print('*', end=' ')
        else:
         print(' ', end=' ')
    print(' ')
#print() 줄바꿈 없는함수 
print("my ", end=' ')
print("dream ", end=' ')
print("is ", end=' ')
print("Programming ", end= ' ')

#키보드로부터 글자입력받기
'''
message=input("글자를 입력하세요 ")
print(message)

numStr=input("숫자를 입력하세요")
num=int(numStr)
print(num*2)
'''

#for (초기화; 조건; 증감) 이런 형태가 없음 

for i in range(10):
    print(i)

for i in range(1,100):
    print(i)

for i in range(1,100,2): #2씩 증가 
    print(i)

for i in range(100,0,-1):
    print(i)

for i in reversed(range(10)):
    print(i) 


#이중 for문으로 구구단을 출력하자 
for i in range(2,10):
    for j in range(1,10):
        print(i*j, end=' ')
    print(' ')


#for 문으로 배열(리스트) 출력 

myArray=[10,20,30]

#for i in range(3):
#    print(myArray[i])

for num in myArray:
    print(num)


#for 문으로 튜플 출력 

myTuple=(10,20,30)


#for i in range(3):
#    print(myTuple[i])

for num in myTuple:
    print(num)


#for 문으로 딕셔너리 출력 

myDic={1:'hong',2:'tom',3:'hana'}

#for i in range(3):
#    print(myDic[i+1])

for key,value in myDic.items():
    print(key,value)
# 조건문 if 문 

num=10
if num==10:
    print("num=10임")
else:
    print("10이 아님")

if num==10:
    print("num=10")
    print("num=10")

#논리 연산자를 사용한 if문

num=10
if num%2==0 and num%5==0  :
    print("2의 배수이면서 5의 배수이다")
else :
    print("그 외의 수 ")

#if else if 구문 
if num%2==0:
    print("2의배수")
elif num%3==0:
    print("3의배수")
elif num%4==0:
    print("4의 배수")
else:
    print("그외의 수")


#연습문제
import random
randomNum = random.randrange(1,100)
if(randomNum<=20):
    print("20이하임")
elif(randomNum<=50):
    print("50이하임")
elif(randomNum <=70):
    print("70이하임")
else:
    print("그외 의수임")


#10~90까지 랜덤 수를 발생시켜서 
#20이하이면 "20이하임"
#50이하이면 "50이하임"
#70이하이면 "70이하임"
#그 외의 수이면 "그외의 수 임 "
if[] :
    print("True")
else:
    print("False")

if 0:
    print("True")
else:
    print("False")

if "":
    print("True")
else:
    print("False")
    
#집합 자료형 set

#수학의 집합 합집합 교집합 차집합 개념
#요소의 중복을 허락하지 않음 같은 값의 요소는 딱 한개만 존재
#순서가 없음 . 인덱스 없음 
mySet = set([1,2,3])
print(mySet)

mySet=set("abcde")
print(mySet)

#인덱스 순서가 없다 
#인덱스로 접근하고 싶으면 리스트로 변환 
mySet=set([1,2,3,4,5])
print(mySet)

myList=list(mySet)
print(myList)

#교집합 :서로 중복된 집합
set1=set([1,2,3,4,5])
set2=set([4,5,6,7,8])
print(set1 &set2)
print(set1.intersection(set2))

#합집합 : 중복제거 하고 서로 합한 집합 
print(set1 | set2)
print(set1.union(set2))

#차집합 : 집합에서 집합을 뺀 집합 
print(set1-set2)
print(set1.difference(set2))

#요소 추가하기
set1={1,2,3,4,5}
set1.add(6)
print(set1)


#여러요소 추가
set1={1,2,3}
set1.update({4,5,6})
print(set1)


#특정값 제거
set1.remove(3)
print(set1)












#딕셔너리 자료형 (키워드- 설명)
#키와 값(key-value)로 되어진 데이터 자료형이다 
#자바: 콜랙션 map key-value
#js : key-value객체 
#형식 {key1:value1, key2:value2}

dic={'key1':'hong', 'key2':1000}
print(dic['key1'])
print(dic['key2'])

dic={1:'hong', 2:'tom'} #key값으로 정수를 줄 수도 있다 
print(dic)

#딕셔너리 value로 배열을 넣을 수 있따 
dic= {'array' : [1,2,3]}
print(dic)

#딕셔너리 value로 딕셔너리를 넣을 수도 있다
dic2={'dic':dic}
print(dic2)

#딕셔너리 key-value 쌍 추가
dic={1: 'hong'}
dic[2]='tom'
print(dic)

#딕셔너리 요소 삭제 
dic= {1: 'hong',2: 'tom', 3:'hana'}
del dic[2]
print(dic)

#딕셔너리 관련 함수들

dic={'name':'hong', 'age':30, 'address': ' 한양'}

#키만 리스트로 얻어옴 
keys=dic.keys()
for key in keys:
    print(key)

#키리스트 객체를 리스트로 형변환 
list_keys=list(keys)
print(list_keys)
for key in list_keys:
    print(key)


#값만 벨류 리스트로 가져옴 
values=dic.values()
print(values)

list_values=list(values)
for value in list_values:
    print(value)

#키-값을 모두 가져온다
key_values=dic.items()
print(key_values)
list_key_values=list(key_values)
for t in list_key_values:
    print(t)

#해당 키가있는지 조사
dic={'name' : 'hong' ,'age':30, 'address': '한양'}
print('name' in dic)
print('age' in dic)
print('address' in dic)

#딕셔너리 삭제
dic.clear()












#튜플 자료형 tuple

#튜플 : 리스트랑 비슷, 딕셔너비(키-값)과 비슷
#함수의 반환 값으로 쓰면 좋음 . 함수의 반환값은 ㅏㅇ상 1개 
# 여러 값을 반환하고 싶을 때 쓰면 좋음

#특징
#소괄호로 둘러 쌈 (요소1, 요소 2)
#생성, 삭제, 수정은 가능한데, 값을 바꿀 수는 없음 

#빈 튜플
myTuple= ()
print(myTuple)

myTuple=(1,2,3)
print(myTuple)

myTuple=1,2,3
print(myTuple)

#다중 튜플
myTuple=(1,2,3,('hong','tom'))
print(myTuple)

#튜플은 삭제불가
#del myTuple[0] 에러 

#튜플은 변경 불가
#myTuple[0]=4  에러

#튜플의 인덱싱
myTuple =(1,2,3)
print(myTuple[0])
print(myTuple[1])
print(myTuple[2])

#일부분만 가져올 때 
myTuple =(1,2,3,4,5)
print(myTuple[:2])
print(myTuple[3:])
print(myTuple[1:3])

#튜플끼리 더하기 
myTuple1 =(1,2,3)
myTuple2 =(4,5,6)
myTuple3 = myTuple1+ myTuple2
print(myTuple3)

#튜플 곱하기 
myTuple=(1,2,3)
print(myTuple*2)


#함수 선언 
def myFunc():
    return (10,20,30)

myTuple=myFunc()
print(myTuple)


#리스트 list

#파이썬의 리스트는 java array+ arraylist(linked list)
#결합된것 

#빈배열 만들기 

array= []
print(array)

array=[10,20,30,40,50]
print(array)


#다른 타입의 데이터도 추가 가능 
array=[10,20,'hong','tom']
print(array)


#리스트 안에 리스트 추가 가능 
array=[10,20,['hong','tom']]
print(array)


#리스트 인덱싱
array=[10,20,30]
print(array[0])
print(array[1])
print(array[2])
print(array[-1]) # 끝에서 첫번째 
#print(array[3])) #인덱스 벗어남 에러 index out of range


#2중 리스트 인덱싱 
array =[10,20,['hong','tom']]
print(array[0])
print(array[1])
print(array[2][0])
print(array[2][1])

#3중 리스트 인덱싱
array=[10,20,['hong','tom',[30,40]]]
print(array[2][2][0])
print(array[2][2][1])

#리스트에서 부분 요소 가져오기 
array=[10,20,30,40,50]
print(array[:2])
print(array[3:])
print(array[1:4])

#중첩 리스트에서 부분 요소 가져오기 
array=[10,20,30,['hong','tom','hava'],40,50,60]
print(array[3][:2])
print(array[3][1:])
print(array[3][1:2])

#리스트 연산자 사용하기
array1=[10,20,30]
array2=[40,50,60]

#리스트 합치기
array3=array1+array2
print(array3)

#리스트 곱하기 
print(array1 *2)

#리스트 길이 구하기
array =[10,20,30]
print(len(array))

#리스트 요소 수정
array[0]=40
print(array)

#요소 삭제
del array[1]
print(array)

#요소 추가 
array=[10,20,30]
array.append(40)
print(array)

#리스트 안에 리스트 추가 
array.append(['hong','tom'])
print(array)

#정렬
array=[20,10,30,50,40]
array.sort()
print(array)

#역정렬
array=[20,10,30,50,40]
array.reverse()
print(array)

array=['나','다','가']
array.sort()
print(array)
array.reverse()
print(array)

#리스트 요소 인덱스 찾기
array=[10,20,30]
print(array.index(20))

#리스트 요소 삽입
array=[10,20,30]
array.insert(1,40)
print(array)

#리스트 요소 삭제
array.remove(30)
print(array)

#마지막 요소 가져오기
array=[10,20,30]
print(array.pop()) #마지막 요소를 반환하고, 마지막 요소는 삭제 된다 
print(array) 

#요소가 몇개인지 세기 
array=[10,20,30,20,30]
print(array.count(20))

#배열 추가하기, +  연산과 동일
array=[10,20,30]
array.extend([40,50])
print(array)


#리스트 연습문제 
#   [10,20,30,40,50] 리스트를 생성하고 
array=[10,20,30,40,50]
#1. 리스트의 개수를 출력하시오
print(len(array))
#2. 맨끝에 60을 추가하시오
array.extend([60])
#3. 모든 요소의 값을 출력하시오 
print(array)
#4. 20부터 40까지만 출력하시오 
print(array[1:4])
#5. 30을 삭제후 출력하시오 
del array[2]
print(array)
#6. 세번째 요소로 70, 네번째 요소로 80을 추가하시오
array.insert(3,70)
array.insert(4,80)
print(array)
#7. ['hong','tom','hana'] 를 중첩 리스트로 추가하시오
array.extend([['hong','tom','hana']])
print(array)
#8. 중첩리스트로 추가된  ['hong','tom','hana']을 출력하시오
print(array[7:])
























#문자열 관련 함수들
string ="python programming"
#문자열 길이
print(len(string))

#같은 문자 몇개 있는지 세기
print(string.count('p'))


#문자 찾기- 첫번째 n의 위치를 찾는다
print(string.find('n'))
print(string.find('x')) #못찾으면 -1을 리턴
print(string.find('programming')) #문자열로 찾기 

#문자 찾기 : index()
print(string.index('n'))
#print(string.index('x')) #못찾으면 에러 발생


#문자열 중간에 삽입하기 
indicator=','
string =indicator.join('abcde')
print(string) 

#전체를 대문자로 
string="python programming"
print(string.upper())

#전체를 소문자로 
print(string.lower())


#공백 지우기
#왼쪽 공백 지우기
string="python"
print(string.lstrip())
#오른쪽 공백 지우기
print(string.rstrip())
#양쪽 공백 지우기
print(string.strip())

#문자열 바꾸기
string="python programming"
print(string.replace("programming","Coding"))

#문자열 나누기 
arrayString=string.split() #공백을 기준으로 나눠서 배열로 리턴
for str in arrayString:
    print(str)

string="john, tom , hana"
arrayString=string.split(',') #구분자를 넣어서 split
for str in arrayString:
    print(str)

#연습문제  
#"python programming " 이라는 문자열을 만들고
string ="python programming"
#1 문자열의 길이를 출력하시오 
print(len(string))
#2 'o'라는 문자가 몇개 있는지 출력하시오 
print(string.count('o'))
#3 "python Cool Programming" 으로 만들어서 출력하시오 
print(string.replace(" "," Cool "))
string=string.replace(" "," Cool ")
#$ 3번 문자열을 공백으로 나누어서 split 한 후 for 문으로 출력하시오
arrayString=string.split()
for str in arrayString:
    print(str)
#5 "Cool" 을 "Nice" 로 바꿔서 출력하시오 
print(string.replace("Cool","Nice"))
string=string.replace("Cool","Nice")
#6 "python Nice programming"에서 N의 위치를 출력하시오 
print(string.find('N'))



#문자열 중간에 추가
string[:5] + "문자열" + string[5: ]
 
#중간 문자열 가져오기
string[5:10]









#문자열 데이타

print('python programming')
print("python programming")

print("""python programming""")
print('''python programming''')

print('python "cool" programming')
print("python 'cool' programming")

print("python\'s programming")
print('python\"s programming')

#여러줄 문자열
multiLine='''
여러줄
문자열
'''

print(multiLine)

multiLine="""
여러줄 
문자열
"""

print(multiLine)

#문자열 연결
str1="pytyon"
str2="programming"
str3=str1+str2
print(str3)
print(str1, str2)
print(str1*2)

print("="*20)
print(str1 + " "+ str2)
print("=" *20)

#문자열 길이
print(len(str1))

#문자열 인덱싱
string ="python programming"
print(string[0])
print(string[1])
print(string[2])
print(string[-1]) #g
print(string[-2]) #n

#문자열 순환 : {} 중괄호 없는 대신에 들여쓰기/ 내어쓰기로 블록 처리 
for ch in string :
    print(ch)

#부분 문자열 가져오기
print(string[0:6])
print(string[:6]) #0생략 가능 
print(string[:]) #모든 문자열 출력 
print(string[7:]) #마지막은 생략 가능 

#문자열 포맷팅
string ="%s programming" % "swift"
print (string)

string="%d years old" %20
print(string)


#정렬과 공백
string="%10s" % "hi"
print(string) #오른쪽으로 정렬 '    hi'

string="%-10stom" % "hi"
print(string) #왼쪽으로 정렬 'hi    tom'

#소숫점 표현 
string ="%0.2f" % 3.141592 #소숫점 2자리 까지 표현 
print(string)

string="%10.4f" %3.141592 #소숫점 4자리. 자릿수 10개로 표현 
print(string)

string="%010.4f" %3.141592 #소숫점 4자리. 자릿수 10개로 표현 (0으로 공백 채움 )
print(string)

#포맷 심볼
# %d : decimal 십진 정수
# %s : string 문자열 
# %c : char 문자 한자 
# %f : float 부동 소수 (실수)
# %o : octor 8진수 
# %x : hex 16진수
# %% : '%' 문자 자체 출력시 



#문자열 포매팅
string= "%s programming" % "python"
print(string)

string="%d count" %10
print(string)

#포맷 함수를 사용한 포매팅
#{0} 첫번째 인자 
#{1} 두번째 인자 

string ="{0} {1}".format("python","programming")
print(string)

a=10
string="{0} strike count ".format(a)
print(string)

#이름으로 넣기 
string="first:{name1}, second:{name2}".format(name1="john", name2="tom")
print(string)


#이름과 인덱스를 혼용
string ="bankname: {0}, accuont:{account}". format("hana bank",account=1000)
print(string)

#format 함수와 심볼의 혼용
str='str1'
num1=100
num2=200
num3=300
num4=400
print('{0} {1} %d {2} {3} %s'.format('test','111',num1,num2) % (num3, str1))

#정렬 기능
#왼쪽 정렬
string ="'{0:<10}".format("hi")
print(string)

#오른쪽 정렬
string ="'{0:>10}".format("hi")
print(string)


#가운데 정렬
string ="'{0:^10}".format("hi")
print(string)

#공백을 특정문자로 채우기
string="'{0:0^10}'".format("hi")
print(string)

string="'{0:!^10}'".format("hi")
print(string)

#소숫점 표현하기 
PI=3.141592
#F f 대소문자 구분없음
#소숫점 둘째 자리 까지 표현 
string ="{0:0.2f}".format(PI)
print(string)

#문자열 전체 길이 10, 소숫점 넷째자리까지 표현
string ="{0:10.4f}".format(PI)
print(string)

#{} 중괄호를 문자로 표현하기
string= "{{{0}}}".format(PI)
print(string)
















'언어 > Python' 카테고리의 다른 글

외장함수  (0) 2019.11.25
내장함수  (0) 2019.11.25
반복문~ 함수~ 예외처리  (0) 2019.11.22
자판기 프로그램 만들기 !  (0) 2019.11.22
변수~문자열  (0) 2019.11.20