숭실대 프로그래밍 중간 고사(2024-1)

2024. 6. 20. 23:54python study

1. 다음과 같은 방식으로 코드를 완성하시오

  • 2~9 사이의 숫자를 입력받고 예시와 같은 형식으로 구구단을 출력해 준다.
  • 만약 2~9 사이의 숫자가 아니라면 "2~9 사이만 입력 가능합니다."를 출력해 준다.
  • 주의할 점은 정답을 출력할 때 등호 뒤의 숫자는 자릿수를 맞추어서 출력해야 한다.(예시 참고)
#예시
"""
단(2~9) 입력: 10
2~9 사이만 입력 가능합니다.

단(2~9) 입력: 2
=== 2단 ===
2 * 1 =  2
2 * 2 =  4
2 * 3 =  6
2 * 4 =  8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18
"""
"""
단(2~9) 입력: 4
=== 4단 ===
4 * 1 =  4
4 * 2 =  8
4 * 3 = 12
4 * 4 = 16
4 * 5 = 20
4 * 6 = 24
4 * 7 = 28
4 * 8 = 32
4 * 9 = 36
"""

 

정답 코드

n=int(input("단(2~9) 입력: "))
while(n<=1 or n>=10):
    print("2~9 사이만 입력 가능합니다.\n")
    n=int(input("단(2~9) 입력: "))
print(f"=== {n}단 ===")
for i in range(1,10):
    if(len(str(n*i))==1):
        print(f"{n} * {i} =  {n*i}")
    else:
        print(f"{n} * {i} = {n*i}")

 

2. 다음과 같은 방식으로 코드를 완성하시오

  • 정수 값을 입력받는다. 단 3 이상의 숫자가 아니라면 "3 이상의 숫자를 입력해 주세요."를 출력해 주고 다시 입력받고, 3의 배수일 경우에는 "3의 배수가 아닌 숫자를 입력하세요."를 출력한다.
  • 정수를 입력받은 후에는 1/1+1/2-1/3+1/4... 1/n의 패턴으로 소수점 첫쨰자리까지 출력해 준다.
"""
정수 입력: 2
3이상의 숫자만 입력해주세요.

정수 입력: 6
3의 배수가 아닌 숫자를 입력하세요.

정수 입력: 10
1/1 + 1/2 - 1/3 + 1/4 - 1/5 + 1/6 - 1/7 + 1/8 - 1/9 + 1/10 = 1.4
"""

 

정답 코드

n = int(input("정수 입력: "))
while (True):
    if (n < 3):
        print("3이상의 숫자만 입력해주세요.\n")
        n = int(input("정수 입력: "))
    elif (n % 3 == 0):
        print("3의 배수가 아닌 숫자를 입력하세요.\n")
        n = int(input("정수 입력: "))
    else:
        break
sum = 0
for i in range(1, n + 1):
    if (i == 1):
        print("1/1 ", end="")
        sum += 1
    elif (i % 2 == 0):
        print(f"+ 1/{i} ", end="")
        sum += 1 / i
    elif (i % 2 != 0):
        print(f"- 1/{i} ", end="")
        sum -= 1 / i
print(f"= %0.1f" % sum)

 

3. 다음과 같은 방식으로 코드를 완성하시오

  • 랜덤 한 두 개의 숫자 n1, n2를 발생시키는데 이때 주의할 사항은 n1이 n2보다 커야 한다.(만약 n1이 n2보다 작다면 정수를 서로 swap해도 상관없음)
  • 출력으로는 두 수의 나눗셈 결과 값과 나머지 값을 출력해 준다.
"""
랜덤 숫자 2개를 발생합니다.
n1 = 31, n2 = 10

31 / 10 = 3.1
31 % 10 = 1
"""

 

정답 코드

//n2보다 n1이 클때 까지 반복해줌
import random
n1=random.randint(10,40)
n2=random.randint(10,40)
while(n1<n2):
    n1=random.randint(10,40)
    n2=random.randint(10,40)
print("랜덤 숫자 2개를 발생합니다.")
print(f"n1 = {n1}, n2 = {n2}")
print()
print(f"{n1} / {n2} = ",end="")
print("%0.1f"%(n1/n2))
print(f"{n1} % {n2} = ",end="")
print("%d"%(n1%n2))
//큰 수를 n1 작은 수를 n2로 지정해줌(swap)
import random
n1=random.randint(10,40)
n2=random.randint(10,40)
if(n1<n2):
    t=n1
    n1=n2
    n2=t
print("랜덤 숫자 2개를 발생합니다.")
print(f"n1 = {n1}, n2 = {n2}")
print()
print(f"{n1} / {n2} = ",end="")
print("%0.1f"%(n1/n2))
print(f"{n1} % {n2} = ",end="")
print("%d"%(n1%n2))

 

4. 다음과 같은 방식으로 코드를 완성하시오

  • 정수를 입력받는다. 단 3자리 정수만 입력받고 만약 아니라면 "3자리 숫자만 입력하시오."를 출력해 주고 다시 입력받는다.
  • 3자리 정수를 입력받았다면 3자리 정수의 각 자릿수의 최댓값과 최솟값을 출력해 준다.
  • 이후 종료한다면 yes 아니면 no를 입력받아서 코드를 진행한다. 
"""
3자리 숫자 입력: 1234
3자리 숫자만 입력하시오.

3자리 숫자 입력: 12
3자리 숫자만 입력하시오.

3자리 숫자 입력: 123
최댓값은 3, 최솟값은 1입니다.
종료하시겠습니까? (yes/no) : no 

3자리 숫자 입력: 293
최댓값은 9, 최솟값은 2입니다.
종료하시겠습니까? (yes/no) : yes
종료합니다.
"""

 

정답 코드

while(True):
    n=int(input("3자리 숫자 입력: "))
    while(True):
        if(n//100>=1 and n//100<=9):
            break
        else:
            print("3자리 숫자만 입력하시오.\n")
            n=int(input("3자리 숫자 입력: "))
    max=0
    sum=10
    while(n>0):
        k=n%10
        if(max<k):
            max=k
        if(sum>k):
            sum=k
        n//=10
    print(f"최댓값은 {max}, 최솟값은 {sum}입니다.")
    s=input("종료하시겠습니까? (yes/no) : ")
    if(s=="yes"):
        print("종료합니다.")
        break
    print()

 

※문제 오류나 질문은 댓글로 부탁드립니다!