Post

python 과제 2024.03.26

연습문제

for문 합계 출력

3333부터 9999수 중 1234배수이고 현재 합계가 100000미만이라면 계속더하고 그 합계 출력

1
2
3
4
5
6
7
8
9
10
11
12
13
# 변수 초기화
num = 0
# 3333부터 9999까지 반복
for i in range(3333, 10000):
    # 만약 현재 숫자가 1234의 배수가 아니고, 현재까지의 합계가 100000을 넘지 않는다면
    if i % 1234 != 0 and num + i < 100000:
        num += i  # 현재 숫자를 합계에 더함
        # for 반복문 처음으로 돌아감 
        continue
    else:
        break  # 100000을 넘기거나 1234의 배수를 만나면 반복 중단

print(num)  # 계산된 합계 출력

소수 구하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 빈 리스트를 초기화. 이 리스트는 찾은 소수들을 저장하기 위해 사용.
list1 = []

# 3부터 100까지의 수에 대해 반복.
# 여기서 i는 현재 검사하고 있는 숫자.
for i in range(3,101):
    # num을 1로 초기화. num은 i가 소수인지 아닌지를 나타내는 플래그 변수.
    # num이 1이면 소수로 간주하고, 0이면 소수가 아니라고 간주.
    num = 1
    
    # 2부터 (i-1)까지의 수에 대해 반복하여 i가 나누어 떨어지는지 검사.
    # 여기서 j는 i를 나눌 수 있는 후보
    for j in range(2,i):
        # i가 j로 나누어 떨어지면, i는 소수가 아님.
        if i % j == 0:
            # num을 0으로 설정하여 i가 소수가 아님을 표시.
            num = 0 
    
    # 내부 반복문이 끝난 후, num이 여전히 1이면 i는 소수.
    if num != 0:
        # i를 소수 목록에 추가.
        list1.append(i)

# 리스트에 저장된 소수들을 공백으로 구분하여 하나의 문자열로 변환하고 출력.
# map 함수는 리스트의 각 요소를 문자열로 변환하고, join 함수는 이를 공백으로 연결.
print(' '.join(map(str,list1)))  

문자 형 개수

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
input_data = input()
a = ""
b = ""
c = ""
d = ""
e = ""

for i in input_data:
    if ord(i) >= 65 and ord(i) <= 90:
        a += i
    elif ord(i) >= 97 and ord(i) <= 122:
        b += i
    elif ord(i) >= 48 and ord(i) <= 57:
        c += i
    else:
        if ord(i) >= 127:
            d += i
        elif ord(i) == 32:
            continue
        else:
            e += i
print("대문자: %s \n소문자: %s \n숫자: %s \n한글: %s \n기타: %s" %(a, b, c, d, e))

응용예제

1. 윤년 계산

1
2
3
4
5
6
7
8
9
10
11
## 변수 선언 부분 ##
year = 0

## 메인 코드 부분 ## 
if __name__ =="__main__":
    year = int(input("연도를 입력하세요 : "))
    # year이 4와 나눠서 0이면서 100으로 나눠서 0이 아니거나 400으로 나눠서 0이라면 그것은 윤년
    if ((year % 4 == 0) and (year % 100 != 0)) or (year % 400 == 0):
        print("%d년은 윤년입니다." %year) 
    else:
        print("%d년은 윤년이 아닙니다." %year)

2. 하트모양출력

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 변수 선언 부분
i, k, heartNum = 0, 0, 0
numStr, ch, heartStr = "", "", ""

# 메인 코드 부분
if __name__ == "__main__":
    # 숫자를 여러 개 입력받음
    numStr = input("숫자를 여러 개 입력하세요: ")
    print("")

    i = 0
    ch = numStr[i]

    while True:
        # 입력받은 숫자를 int형으로 변환
        heartNum = int(ch)

        # 하트 문자열 초기화
        heartStr = ""

        # 입력받은 숫자만큼 하트 문자열에 추가
        for k in range(0, heartNum):
            heartStr += "\u2665"

        # 하트 문자열 출력
        print(heartStr)

        # 다음 숫자로 이동
        i += 1

        # 입력받은 숫자열의 끝에 도달하면 종료
        if (i > len(numStr) - 1):
            break

        # 다음 숫자를 가져옴
        ch = numStr[i]

3. 숫자정렬(?)1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import random

# ## 변수 선언 부분 ##
data = []
i, k = 0, 0

# ## 메인 코드 부분 ##
if __name__ == "__main__":
    for i in range(0, 10):  # 원본의 데이터 10개 생성
        tmp = hex(random.randrange(0, 100000))
        data.append(tmp)

    print('정렬 전 데이터 : ', end='')
    [print(num, end=' ') for num in data]

    for i in range(0, len(data) - 1):
        for k in range(i + 1, len(data)):
            if int(data[i], 16) > int(data[k], 16):
                tmp = data[i]
                data[i] = data[k]
                data[k] = tmp

    print('\n정렬 후 데이터 : ', end='')
    [print(num, end=' ') for num in data]

4. 숫자정렬(?)2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import random

# ## 함수 선언 부분 ##
def getNumber(strData):
    numStr = ''
    for ch in strData:
        if ch.isdigit():
            numStr += ch
    return int(numStr)

# ## 정렬 부분 선언 부분 ##
data = []
i, k = 0, 0

# ## 메인 코드 부분 ##
if __name__ == "__main__":
    for i in range(0, 10):  # 원본의 데이터를 10개 생성
        tmp = hex(random.randrange(0, 100000))
        tmp = tmp[2:]  # 앞의 '0x'를 제거
        data.append(tmp)

    print('정렬 전 데이터 : ', end='')
    [print(num, end=' ') for num in data]

    for i in range(0, len(data) - 1):
        for k in range(i + 1, len(data)):
            if getNumber(data[i]) > getNumber(data[k]):
                tmp = data[i]
                data[i] = data[k]
                data[k] = tmp

    print('\n정렬 후 데이터 : ', end='')
    [print(num, end=' ') for num in data]
This post is licensed under CC BY 4.0 by the author.