숭실대 프로그래밍 기말 고사(2024-2)
2025. 1. 14. 23:23ㆍpython study
! 범위
Conditional Statement, Loop, Implementation. String, File Input/Output(File I/O), Random, tkinter etc...
문제
1. 다음과 같은 방식으로 코드를 완성하시오
- 파일명 s를 입력받는다.
- 랜덤으로 a~z, A~Z의 문자를 7개를 받아서 파일 s에 저장해 준다.(파일에 새로운 내용 추가해 줌)
- 이후에 파일을 열고 각각 문자를 [랜덤 i: "문자" (i: 인덱스 값)]로 출력해 준다.
- 나머지 부분은 예시를 참고하여서 완벽히 동일하게 출력해야 한다.
#예시
파일명 입력: abc
abc 내용을 출력합니다.
랜덤 1: "h"
랜덤 2: "k"
랜덤 3: "m"
랜덤 4: "M"
랜덤 5: "y"
랜덤 6: "T"
랜덤 7: "p"
정답 코드
더보기
import random
s=input("파일명 입력: ")
print(f"{s} 내용을 출력합니다.\n")
ss="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
with open("{s}", 'w') as f:
for _ in range(7):
cnt=random.randint(0, 51)
f.write(f"{ss[cnt]}")
with open("{s}",'r') as f:
sss=f.readline()
cnt=0
for i in sss:
print(f"랜덤 {cnt+1}: \"{sss[cnt]}\"")
cnt+=1
2. 다음과 같은 방식으로 코드를 완성하시오
- 랜덤 한 숫자를 하나를 생성하고 변수에 저장해 준다.
- Book클래스를 정의해 주고 생성자 메소드를 활용하여서 no, title, price를 생성해 준다.
- 그런 다음 book1 객체를 생성해 주는 데 다음과 같이 생성해 준다.
Book(no, 'title', price) #price: 랜덤 생성해준 값
- 이후에는 객체에 있는 속성 값들을 불러와서 다음과 같이 출력해 준다.
book1 객체: (1001,'python1',47174)
정답 코드
더보기
import random
class Book:
def __init__(self, no, title, price):
self.no=no
self.title=title
self.price=price
r=random.randint(10000, 50000)
book1=Book(1001, 'python1', r)
print(f"book1 객체: ({book1.no},\'{book1.title}\',{book1.price})")
3. 다음과 같은 방식으로 코드를 완성하시오
- 단어들을 띄어쓰기로 분리된 문자열로 입력받는다.
- 단어들을 분리해 주고 가장 길이가 짧은 단어들을 콤마로 나누어서 출력해 준다.
- 단, 각 단어들의 길이는 10자를 넘어가지 않는다.
- 나머지 부분은 예시를 참고하여서 완벽히 동일하게 출력해야 한다.
문자열 입력: ssjjss 2025 sjs kim jun SSU
가장 짧은 단어: sjs, kim, jun, SSU
정답 코드
더보기
s = input("문자열 입력: ")
s = s.split(" ")
mn = 1000000
ss = []
for i in s:
if mn > len(i):
ss = [i]
mn = len(i)
elif mn == len(i):
ss.append(i)
print(f"가장 짧은 단어: {', '.join(ss)}")
4. 다음과 같은 방식으로 코드를 완성하시오
- 기본적으로 다음과 같은 화면을 띄워야 하는 데 다음 조건을 만족하면서 화면을 구성한다.
place를 활용하여서 버튼과 택스트 등의 위치를 다음과 비슷한 맥략으로 맞춰야 한다.
- 다음으로는 Entry box에 값을 입력해 준 다음 등급 확인 버튼을 눌렀을 때 다음과 같은 기준으로 화면을 표시해 준다.
숫자가 아닌 값이 입력된다면 "숫자만 입력하시오"라고 표시한다.(색상 변경은 필요 없음)
숫자가 아닌 값은 예외처리를 활용하여서 분리해 낸다. (힌트: ValueError)0~100의 숫자가 아니라면 "0~100 사이의 숫자만 입력하시오"라고 표시하고 배경색상을 Red로 바꾼다.
0~59의 숫자라면 "c등급"이라고 표시하고 배경색상을 Orange로 바꾼다.
60~79의 숫자라면 "B등급"이라고 표시하고 배경색상을 Green으로 바꾼다.
80~100의 숫자는 "A등급"이라고 표시하고 배경색상을 SkyBlue로 바꾼다.
정답 코드
더보기
from tkinter import *
def event1():
try:
k=int(entry.get())
if(k<=100 and k>=80): l2.config(bg="SkyBlue", text="A등급")
elif(k<80 and k>=60): l2.config(bg="Green", text="B등급")
elif(k<60 and k>=0): l2.config(bg="Orange", text="C등급")
else: l2.config(text="0~100사이의 숫자만 입력하시오.", bg="Red")
except ValueError as msg:
l2.config(text="숫자만 입력하시오.")
root=Tk()
root.geometry("400x300")
root.title("점수 관리 프로그램")
l1=Label(root, text="성적 입력:")
l1.place(x=20, y=40)
entry=Entry(root,width=6)
entry.place(x=80, y=40)
b1=Button(root, text="등급 확인",command=event1)
b1.place(x=140, y=37)
l2=Label(root, text="점수를 입력하시오.",width=25)
l2.place(x=20, y=70)
root.mainloop()
마치면서..
시험이 어렵다고 하기보다는 문제를 이해하거나 코드를 작성하는 데 약간 시간이 많이 소모되었을 것 같다. 중간 시험 같은 경우에는 한 군데 실수를 하더라도 -1의 페널티를 받았지만 이번 기말 시험에서는 실수를 했음에도 만점을 얻을 정도로 난이도가 높았던 것 같다.
※오류나 궁금한점 질문 부탁드립니다!
'python study' 카테고리의 다른 글
| 숭실대 프로그래밍 중간고사(2024-2) (0) | 2024.10.31 |
|---|---|
| 숭실대 프로그래밍 중간 고사(2024-1) (0) | 2024.06.20 |
| 숭실대 프로그래밍 기말 고사(2024-1) (1) | 2024.06.14 |





