Python Programming [Exercise 10]

 Published On

[문제 1번]

(숫자 빈도수 세기) 사용자가 입력하는 정수를 읽고 이 중에 가장 많이 나온 숫자를 찾아 출력하는 프로그램을 작성하시오. 예를 들어, 2 3 40 5 4 -3 3 3 2 0을 입력하면, 숫자 3이 가장 많이 나온 숫자이다. 사용자는 한 행에 모든 숫자들을 입력하며 입력하는 정수의 개수에 제한은 없다. 가장 많이 나온 숫자의 개수가 여러 개일 경우, 이들 숫자 모두를 찾아야 한다. 예를 들어, 9 30 3 9 3 2 4를 입력했을 경우 9와 3이 두 번씩 가장 많이 나온다. 이 경우, 9와 3을 모두 찾아 결과로 출력해야만 한다.

user_lst = list(map(int, input("숫자 입력:").split())) # 입력받은 문자열을 split() 메소드와 map 메소드를 이용하여 정수형 리스트 형태로 바꿔줌
user_dic = {} # 빈 딕셔너리 생성

for digit in user_lst: 
    # 만약 단어를 저장하는 딕셔너리에 단어가 포함되어 있다면(중복되면)
    if digit in user_dic:
        # 개수를 하나 더 추가
        user_dic[digit] += 1
    # 만약 단어가 포함되어 있지 않다면(처음이라면)
    else:
        # 개수를 1로 만든다
        user_dic[digit] = 1
        
maxNum = [] # 최대 빈도수를 가진 key값을 넣어줄 리스트

maxCnt = max(user_dic.values()) # 가장 큰 빈도수는 딕셔너리의 값 중 가장 큰 수

for key in user_dic: # 딕셔너리 원소 중 key값에서 
    if maxCnt == user_dic[key]: # maxCnt와 같은 값이면
        maxNum.append(key) # 최대 빈도수 리스트에 추가
        
print("가장 많은 빈도수를 가진 숫자:", end = ' ')
for x in maxNum:
    print(x, end = ' ')

[문제 2번]

(자음과 모음 수 세기) 사용자로부터 텍스트 파일명을 입력받고 이 파일 내에 있는 영문자 자음과 모음의 수를 각각 출력하는 프로그램을 작성하시오. 모음 A, E, I, O, U를 저장하기 위해 세트를 사용하라.

# 예외처리를 이용하여 파일 입출력 확인
try:
    fileName = input("파일 이름 입력:").strip()
    openFile = open(fileName, "r")
except IOError:
    print("File open fail")
else:
    print("File open success")
finally:
    print("finally절이 실행되었습니다")
    
copyString = openFile.read().upper() # 모든 문자열 대문자로 변환

StringList = list(copyString.split()) # 문자열 리스트 생성

StringSet = set() # 문자열 리스트를 세트로 변환해주기 위한 빈 세트 생성

collection = set(['A', 'E', 'I', 'O', 'U']) # 모음 집합

StringCollectionCnt = 0  # 모음의 개수를 세주는 변수

for word in StringList: # 문자열 리스트의 원소 중에서
    for char in word: # 그 원소의 문자 중에서
        StringSet.add(char) # 세트의 원소에 문자를 추가
        if char == 'A' or char == 'E' or char == 'I' or char == 'O' or char == 'U': # 만약 문자가 모음이면
            collectionCnt += 1 # 모음의 개수 1씩 증가
            
print("모음의 수:", collectionCnt)
print("모음 집합:", StringSet.intersection(collection)) # 파일 내에 있는 모음의 집합

[문제 3번]

(인접 문자 출력) 문자열을 지정하면 한 문자 또는 두 개의 인접 문자 다음에 문자열을 분할하고 한 문자 또는 두 문자로만 구성된 문자열을 만들 수 있습니다. 가능한 모든 결과를 출력하시오.

stringList = list(input(""))

def func1(stringLst):
    lst1 = []
    lst2 = []
    
    for i in range(len(stringList)):
        for j in range(len(stringList)):
            lst2 = []
            if i == j:
                continue
            else:
                if j == i + 1 and j <= len(stringList):
                    lst2.append(stringList[i] + stringList[j])
                    for i in range(len(stringList)):
                        lst2.append(stringList[i])
                else:
                    continue
            lst1.append(lst2)    
    return lst1

func1(stringList)

Tags: Language

Comments:

comments powered by Disqus

© 2021 - MH.Ji. All rights reserved
Built using Jekyll