별의별 이야기

for esle, sort, 다중 for, 문자열 본문

3./Python

for esle, sort, 다중 for, 문자열

Hailey Han 2024. 12. 23. 23:14
728x90

for~else

for-else 구조는 while 구조에도 사용가능하다. 

연습문제1.

#for else 연습문제
num=[1,3,9,2,11]

for i in num:
    if num>=12: 
        print(num)
else: 
    print()

#교수님 풀이
num=[1,3,9,2,11]

for i in num:  #num을 i변수에 넣음.
    if i>12: 
        print(i)
        break
else: 
    print("12보다 큰 수는 리스트에 없습니다. ")

 sort

점점 크게

#sort
num=[5,4,1,3,9,2,15]
for i in range(0,7): #외부:정렬패스 수
    for j in range(0,6): #내부: 요소비교
        if num[j]>num[j+1]: #현재 값이 다음 값보다 크면
            temp=num[j] #두 값을 교환
            num[j] = num[j+1];
            num[j+1]=temp
print(num)
                                                           

[점점 크게 비교]: 15가 뒤로 고정 즉 뒤에서 부터 15,9 ,,, 이런식으로 고정된다. (뒤에서 부터 정렬!)
=> 두개씩 계속 비교. 한번 비교시 [4,1,3,5,2,9,15] 식으로 계속 자기 옆에꺼랑 비교 
=> [1,4,3,5,2,9,15] 이런 식으로 비교 

#sort
num=[5,4,1,3,9,2,15]
for i in range(0,len(num)): #외부:정렬패스 수
    for j in range(0,len(num)-1): #내부: 요소비교
        if num[j]>num[j+1]: #현재 값이 다음 값보다 크면
            temp=num[j] #두 값을 교환
            num[j] = num[j+1];
            num[j+1]=temp
print(num)

=> 리스트의 크기가 변할 수 있기에
for i in range(0, 7): 라고 쓰기보다는
for i in range(0, len(numbers)): 이렇게 list의 길이로 넣어주는 형태가 더 좋은 형태의 코드이다. 

점점 작게(내림차순 정렬)

#sort 내림차순
num=[5,4,1,3,9,2,15]
for i in range(0,len(num)-1): #외부:정렬패스 수
    for j in range(0,len(num)-1-i): #내부: 요소비교
        if num[j]<num[j+1]: #현재 값이 다음 값보다 크면
            temp=num[j] #두 값을 교환
            num[j] = num[j+1];
            num[j+1]=temp
print(num)

예제

#예제
num01=int(input("첫번째 수 입력: "))
num02=int(input("두번째 수 입력: "))
num03=int(input("세번째 수 입력: "))
num04=int(input("네번째 수 입력: "))
num05=int(input("다섯번째 수 입력: "))
num=[num01,num02,num03,num04,num05]

for i in range(0,len(num)):
    for j in range(0, len(num)-1):
        if num[j] > num[j+1]:
            temp = num[j] #현재 값을 temp에 저장
            num[j]=num[j+1]; #다음 값을 현재 위치로 복사
            num[j+1]=temp #temp값을 다음 위치로 이동 
print(num)

=> 오름차순 문제
=>num[j]=num[j+i]로 오타 : 이상한 숫자 나옴 => num[j]=num[j+1]로 바꿔야 함!

다중 for 연습하기

###다중 for 연습하기
#입출력문제-혼자풀기
word=input("단어를 입력하세요: ")
word2 =input("위치를 찾을 한 글자를 입력하세요: ")
for i in word:
    count = count+1
    print(f'{word2}는 {word}의 index는 {count}입니다.')
    for j in word:
        print(f'{word2}는 {word}에 들어있지 않는 글자입니다.')

#답: 냅다비교
word=input("단어를 입력하세요: ")
letter =input("위치를 찾을 한 글자를 입력하세요: ")
count = 0

for i in word:      #i를 word에서 비교해서 줌 
    if i == letter: #같으면? 
        break 
    count= count+1  #같으면 break 후 count 해줌 

if letter not in word: 
    print(f'{letter}는 {word}에 들어있지 않는 글자입니다.')
else: 
    print(f'{letter}는 {word}의 index는 {count}입니다.')

#교수님 답: 있을 때 비교
word=input("단어를 입력하세요: ")
letter =input("위치를 찾을 한 글자를 입력하세요: ")
count = 0

if i in word: 
    for i in word:
        if i ==1:
            break
        count+=1 
    print(f'{letter}는 {word}의 index는 {count}입니다.')
else: 
    print(f'{letter}는 {word}에 들어있지 않는 글자입니다.')
##예제2: a 개수 확인해서 출력하기
word = input("input message: ")
count = 0 

if i in word: 
    for i  in word: 
        if i == 'a': 
            break
        count +=1
        print("count of a: ", )
else: 
    print("there is no 'a'")

##같이 풀기
msg = input("input message: ") #메시지 입력받기 
count=0 #a몇개인지 확인하는 변수

for i in msg: 
    if 'a' == i: #같다면? 카운트 증가
        count+=1
print("count of \'a\':", count)
#예제3-구구단 2~4단 출력
#혼자풀기
word=int(input("구구단, 몇단까지 입력하실래요?: "))
count = 0 

for i in word: 
    if word == i:
        count +=1 
        for j in range(1,12):
            print(f'{count}*{word-j}')
##같이 풀기
num=int(input("구구단, 몇단까지 출력하실래요?: ")) #정수형 형변환
for i in range(2,num+1): #구구단 동작(2단~n단) : range로 범위 만들기
    print("="*20) # === 줄그어주는 퍼즐 만들어주기
    for j in range(1,10):
        print(f"{i}*{j}={i*j}")
##연습문제: list로 다섯개 단어 입력받고, 모음이 몇개있는지 출력해주는 코드 만들기
#혼자풀기
word1 = input("input word1: ")
word2 = input("input word2: ")
word3 = input("input word3: ")
word4 = input("input word4: ")
word5 = input("input word5: ")
word= [word1, word2, word3, word4, word5]
count = 0 

for i in range(0, len(word)-1):
   if i in 'aeiou': 
      count+=1
      print(f' item= {word1} aeiou count= {count} ')
#같이 풀기
fruit = ['a','b','c','d','e']
count = 0

for i in range(len(fruit)):
   fruit[i] = input("enrter word: ")

for word in fruit:
   count = 0  #count변수를 쓰고 지워야하기때문에 여기 들어올 때 0으로 설정
   for j in word: 
      if j in 'aeiou':
         count +=1 
         print(f" item= {word}, aeiou count= {count}")

=> 아직 해결 못함

문자열 

문자열과 문자는 다름.

'문자': character 하나, 보통 '' 사용
'문자열을 출력하시오': 글자들(characters)의 나열(sequence), 보통 ""사용, 구성되는 각 들자를 첨자 표현으로 따로 나누어서 활용 가능함

 

문자열의 구성

문자열에서 사용하는 연산자 

더하기와 곱하기는 문자열을 만났을 때 다르게 반응함
+: 문자열을 이어 붙이는 역할
* : 뒤에 오는 숫자만큼 문자열을 반복함 

관계연산자도 다르게 사용된다. 문자열은 크기 비교가 가능함. 
ASCII code 크기 순으로 비교 가능
사전 상 뒤에 나오는 문자열이 앞에 나오는 문자열보다 크기가 더 큼
소문자 > 대문자 

len()은 list에 있는 item의 개수를 반환해줌. 
예를들어 fruit = 'banana'를 list로 봐도 된다. 
나중에 len은 dictionary, tuple 모두 사용 가능하다.

연습문제(과제문제)

#문자열 예제1 
word = input("문자열을 입력하세요: ")
count = 0
for i in range(0, len(word)+1): 
    count +=1 
    print('count')
    
#답
word = input("문자열을 입력하세요: ")
count = 0
for i in str: 
    count = count +1 
    print('count')
    
#같이 풀기
#문제 해석: len()함수 만들어봐라
msg = input("문자열을 입력하세요: ")
count = 0
len(msg) #문자열의 길이를 바로 확인할 수 있음 
for i in msg: #msg에 있는 단어를 하나씩 가져올거임. count 필요
    count += 1
    print(count)

=>?

반복으로 문자열 처리, 문자열 자르기

반복문으로 문자열 처리 - for문 / 반복문으로 문자열 처리 - while문 

문자열 자르기

#연습문제: 문자열 입력받고, apple이라고 하면 한글자씩 점차 출력되게 
#혼자풀기
msg = input("문자열을 입력하세요: ")
count = 0
len(msg)

for i in msg: 
    count +=1 
    print(f" {i}*{i+1}")

#같이풀기 
msg = input("문자열을 입력하세요: ") #문자열 입력
for i in range(1, len(msg)+1): #그냥 msg로 하면 안됨....
    print(f"msg[0:{i}]={msg[0:i]}")#문자열 출력 구조, 1아니고 i 오타
#연습문제2. 2개 문자열 입력받고 문자열의 3번째 글자 출력 후 어떤 글자가 큰지 출력
#혼자풀기
s1 = input("문자열1을 입력하세요: ") #문자열1 입력
s2 = input("문자열2을 입력하세요: ") #문자열2 입력

for i in range(1, s1+1): 
    if s1[2] > s2[2]:
        print(f"{s1}의 {word}가 크다.")
    else s1[2] < s2[2]: 
        print(f"{s2}의 {word}가 크다.")

#같이 풀기
s1 = input("문자열1을 입력하세요: ") #문자열1 입력
s2 = input("문자열2을 입력하세요: ") #문자열2 입력

if s1[2]<s2[2]: 
    print(f"s2[2]의 {s2[2]}가 크다.")
else: 
    print(f"s1[2]의 {s1[2]}가 크다.")

'3. > Python' 카테고리의 다른 글

내장함수, math module, 사용자 정의 함수  (0) 2024.12.30
string methods  (0) 2024.12.24
Day5 복습: for문  (3) 2024.12.23
for loop의 활용: range 함수, 다중 for문, break  (0) 2024.12.20
반복문: while, for  (1) 2024.12.19