숭실대 프로그래밍 기말 고사(2024-1)

2024. 6. 14. 14:57python study

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

  • 길이가 9보다 작다면 에러메시지로 "9자 이상 입력하세요."를 출력하고 다시 패스워드를 입력받는다. 그리고 길이가 9보다 길다면 다음 동작으로 넘어간다.
  • 숫자가 패스워드에 존재한다면 "패스워드 사용 불가(숫자 사용 X)"를 출력해 주고 다시 패스워드를 입력받는다.
  • 숫자가 패스워드에 없고 패스워드에 대문자가 존재하지 않는다면 "패스워드 사용 불가(대문자 없음)"을 출력해 주고 다시 패스워드를 입력받는다.
  • 숫자가 패스워드에 없고 패스워드에 소문자가 존재하지 않는다면 "패스워드 사용 불가(소문자 없음)"을 출력해 주고 다시 패스워드를 입력받는다.
  • 만약 대문자 소문자가 존재하고 숫자가 없다면 "패스워드 사용 가능"을 출력하고 종료한다.

#예시
"""
패스워드 입력: abcd
9자 이상 입력하세요.

패스워드 입력: abcdefghijk
패스워드 사용 불가(대문자 없음)

패스워드 입력: ABDFDFDFDCF
패스워드 사용 불가(소문자 없음)

패스워드 입력: abdbdkskfhA12
패스워드 사용 불가(숫자 사용X)

패스워드 입력: SSJJSSsoongsil
패스워드 사용 가능
"""

정답 코드

while(True):
    n=input("패스워드 입력: ")
    if(len(n)<9):
        print("9자 이상 입력하세요.")
    else:
        a=0
        b=0
        flag=True
        for i in n:
            if(i>='1' and i<='9'):
                print("패스워드 사용 불가(숫자 사용 X)")
                flag=False
                break
            if(i>='a' and i<='z'):
                a+=1
            elif(i>='A' and i<='Z'):
                b+=1
        if(a>=1 and b>=1 and flag==True):
            print("패스워드 사용 가능")
            break
        elif(a>=1 and b==0 and flag==True):
            print("패스워드 사용 불가(대문자 없음)")
        elif(a==0 and b>=1 and flag==True):
            print("패스워드 사용 불가(소문자 없음)")
    print()


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

  • 제일 먼저 게임을 진행하고 싶다면 Y나 y를 입력해 주고 게임을 종료하고 싶다면 N나 n을 입력해 주고 위에 나온 것 이외의 것이 입력된다면 "다시 입력해 주세요"를 출력하고 다시 입력받는다.
  • 게임이 진행될 때는 컴퓨터과 인간이 1~6 사이의 숫자를 렌덤으로 뽑아준다.
  • 만약 컴퓨터가 더 크다면 "컴퓨터 승리", 인간이 더 크다면 "인간 승리"를 출력해 주고 비긴다면 무승부를 출력해 준다.
#예시
"""
주사위를 던지시겠습니까? (Y/y or N/n): k
다시입력하세요.

주사위를 던지시겠습니까? (Y/y or N/n): Y
[인간] 주사위: 4, [컴퓨터] 주사위: 6
컴퓨터 승리

주사위를 던지시겠습니까? (Y/y or N/n): y
[인간] 주사위: 5, [컴퓨터] 주사위: 5
무승부

주사위를 던지시겠습니까? (Y/y or N/n): Y
[인간] 주사위: 6, [컴퓨터] 주사위: 4
인간 승리

주사위를 던지시겠습니까? (Y/y or N/n): N
종료하겠습니다.
"""

정답 코드

import random
while(True):
    n=input("주사위를 던지시겠습니까? (Y/y or N/n): ")
    if(n.lower()=="y"):
        a=random.randint(1,6)
        b=random.randint(1,6)
        print(f"[인간] 주사위: {a}, [컴퓨터] 주사위: {b}")
        if(a==b):
            print("무승부")
        elif(a>b):
            print("인간 승리")
        elif(a<b):
            print("컴퓨터 승리")
    elif(n.lower()=="n"):
        print("종료합니다.")
        break
    else:
        print("다시입력하세요.")
    print()


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

  • 중복되는 숫자 없이 내림차순으로 1~45 사이의 6개 숫자를 리스트 형태로 출력해 준다.
#예시
"""
내림차순 정렬된 로또 번호를 출력합니다.
[45,42,34,23,12,1]
"""

정답 코드

import random
l=[]
while(True):
    n=random.randint(1,45)
    flag=True
    for i in l:
        if(i==n):
            flag=False
            break
    if(flag==True):
        l.append(n)
    if(len(l)==6):
        break
l.sort(reverse=True)
print("내림차순 정렬된 로또 번호를 출력합니다.")
print(l)


4. 다음과 같은 방식으로 코드를 완성하시오 (이 문제는 함수를 사용하지 않는다면 감점을 받기 때문에 조심해 주세요)

  • 기본적으로 리스트 속에 사과, 포도, 딸기, 바나나를 추가해 주고, 예시에서 나오는 메뉴들은 멘 처음에만 출력해 준다.
  • 1~4의 숫자를 입력받는다.
  • 1의 경우에는 리스트 속에 있는 과일을 추천해 준다.
  • 2의 경우에는 과일을 입력받고 그 과일을 리스트에 추가해 준다.
  • 3의 경우에는 과일을 입력받고 리스트에 있는 과일을 삭제한다.
  • 4의 경우에는 종료한다.
  • 1~4의 숫자가 아닌 경우에는 다시 입력받는다.
#예시
"""
======== 메뉴 ========
1. 과일 추천 (fun1 함수)
2. 과일 추가 (fun2 함수)
3. 과일 삭제 (fun3 함수)
4. 종료
=====================
메뉴 입력: 1
'바나나'를 추천합니다.

메뉴 입력: 2
추가할 과일: 수박
추가된 과일 리스트를 출력합니다.
["사과","딸기","바나나","포도","수박"]

메뉴 입력: 3
삭제할 과일 입력: 사과
사과 삭제 후 과일 리스트를 출력합니다.
["딸기","바나나","포도","수박"]

메뉴 입력: 5
1~4사이만 입력 가능합니다.

메뉴 입력: 4
종료합니다.
"""

정답 코드

import random
print("="*8,"메뉴","="*8)
print("1. 과일 추천 (fun1 함수)")
print("2. 과일 추가 (fun2 함수)")
print("3. 과일 삭제 (fun3 함수)")
print("4. 종료")
print("="*22)
a=["사과","바나나","포도","딸기"]
def fun1():
    print(f"'{a[random.randint(0,3)]}'을(를) 추천합니다.")
def fun2(s):
    a.append(s)
    print(f"추가된 과일 리스트를 출력합니다.\n{a}")
def fun3(s):
    a.remove(s)
    print(f"{s} 삭제 후 과일 리스트를 출력합니다.\n{a}")
while(True):
    k=int(input("메뉴 입력: "))
    if(k==1):
        fun1()
    elif(k==2):
        s=input("추가할 과일 입력: ")
        fun2(s)
    elif(k==3):
        s=input("삭제할 과일 입력: ")
        fun3(s)
    elif(k==4):
        print("종료합니다.")
        break
    else:
        print("1~4만 입력 가능합니다.")
    print()