다중 반복문5 (+문자열)

2022. 9. 30. 01:39파이썬(Python)

반응형

1. 알파벳 출력

● 아스키코드(ASCII)

- 파이썬 언어에서 사용할 수 있는 모든 문자들하나의 숫자와 대응.

- 알파벳 대문자, 소문자끼리연속한 숫자들로 매칭

- 아스키코드 값ord()를 사용.

- ord('A') = 65  =>  A의 아스키코드 값은 65

- 아스키코드 값을 알고 있을 때 대응되는 문자를 알아내려면?  =>  chr()

- chr(65) = A

 

print(ord('A'))
print(chr(65))
65
A

 

만약 입력한 알파벳의 다음 알파벳을 구하려면?  =>  chr(ord(x)+1)

x=input()
print(chr(ord(x)+1))
>> a
b

Q) 정사각형 알파벳

- 자연수 n 입력.

- n*n개의 정사각형 모양A~Z까지 출력

- Z 다음엔 A

 

n=int(input())

k=ord('A')
for i in range(n):
    for j in range(n):
        print(chr(k),end='')
        k+=1
        if k==ord('Z')+1:
            k=ord('A')
        
    print()

결과

>> 7
ABCDEFG
HIJKLMN
OPQRSTU
VWXYZAB
CDEFGHI
JKLMNOP
QRSTUVW

Q) 직각삼각형 알파벳

- 자연수 n을 입력

- A~Z 순으로 출력. Z 다음은 A

 

예시)

>> 3
A B C
  D E
    F

 

n=int(input())

blank=0
cnt=ord('A')

for i in range(n):
    for j in range(n):
        if j<blank:
            print(' ',end=' ')
        else:
            print(chr(cnt),end=' ')
            cnt+=1
            if cnt==ord('Z')+1:
                cnt=ord('A')
    blank+=1
    print()

2. n번 반복하기

Q) a+b n번

- 자연수 n을 입력

- 두 수 a, b 입력 (n번)

- a부터 b까지 합을 출력. (n번)

 

n=int(input())

for i in range(n):
    inp=input().split()
    a,b=int(inp[0]),int(inp[1])

    sum_val=0
    for j in range(a,b+1):
        sum_val+=j
    print(sum_val)

결과

>> 3
>> 1 4
10
>> 2 6
20
>> 1 3
6

Q) 완전수

- 완전수 : 자기 자신을 제외모든 양의 약수들을 더해 자기 자신이 되는 수

- 예) 6 = 1+2+3  =>  6은 완전수

- 두 수 a, b 입력.

- a부터 b까지 완전수의 개수를 출력

 

inp=input().split()
a,b=int(inp[0]),int(inp[1])

cnt=0
for i in range(a,b+1):
    sum_val=0
    for j in range(1,i):
        if i%j==0:
            sum_val+=j
    if sum_val==i:
        print(f'{i}는 완전수')
        cnt+=1

print(f'완전수 개수는 {cnt}개')

결과

>> 1 500
6는 완전수
28는 완전수
496는 완전수
완전수 개수는 3개

 

● 문제 접근

- a부터 b까지 반복 (변수 i)

- i의 약수를 구하기 위해 1부터 i-1까지 반복. (자기 자신을 제외한 약수를 구하기 위해) (변수 j)

- i를 j로 나눠 나머지가 0이면 약수

- 약수인 j를 sum_val에 더함

- sum_val이 i와 같으면 완전수


Q) 소수

- 소수는 약수1과 자기 자신만 있는 수

- 두 수 a, b 입력

- a부터 b까지 소수를 출력

 

inp=input().split()
a,b=int(inp[0]),int(inp[1])

for i in range(a,b+1):
    isprime=True
    for j in range(2,i):
        if i%j==0:
            isprime=False
            break
    if isprime==True:
        print(i,end=' ')

결과

>> 10 50
11 13 17 19 23 29 31 37 41 43 47

 

● 문제 접근

- a부터 b까지 반복문 (변수 i)

- isprime이라는 bool 타입의 변수 설정

- isprime이 True : i가 소수

- isprime이 False : i는 소수가 아님

- 소수는 약수가 1과 자기 자신만 있는 수 

- 약수가 2~(자기 자신-1) 중에 하나라도 있으면 소수가 아님

- 위의 조건을 반복문 (변수 j)을 처리하여 만족하면 isprime을 False로 바꿈

- isprime이 True인 수만 출력

 


 

'파이썬(Python)' 카테고리의 다른 글

리스트와 인덱스  (0) 2022.10.10
리스트 (list)  (0) 2022.10.01
다중 반복문4  (0) 2022.09.29
다중 반복문3  (0) 2022.09.25
다중 반복문2  (0) 2022.09.24