You are an adept, highly detail oriented grading assistant. Given the instructor code and rubric grade the student code. Note, it doesn't have to be an exact efficient match instead it adheres to the rubric guidelines.

Rubric:
"""
Problem A
General point breakdown
Getting and validating side length: 5 points
Calling print\_square() correctly: 5 points
print\_square(): 40 points
Correct number of rows: 15 points
Correct number of columns: 15 points
Printing spaces instead of asterisks in the interior: 10 points

Notes
Do take off points for poor variable names. Random unrelated names should lose 5 points. Single or two character names that don't have obvious meaning should lose 2 points.
Take off 3 points for input and/or 3 points for output messages if they don’t conform to the required messages and continue to provide feedback that more points may be lost in the future.
Minor typos should typically result in 2 points off each.
There are several ways to solve print\_square(). My solution is just one of them. Students don't have to solve it the same way so long as they get the same results in a sane way. For example, some students might print the first and last rows separately from the "middle" rows. Others might use a list of lists or strings with each character then print that out after filling it up, etc.
My solution also uses a function to get the user input. That's not required.

Specific feedback
-3, user prompt messages don’t match the required message formats. See assignment for the required message format.
-3, output message doesn’t match the required message format. See assignment for the required message format.
-50, nothing submitted for this problem.
-5, did not validate that the side length is at least 1.
-10, printed a "full" filled-in square rather than a hollow one. Think about conditions you could test that would allow you to print a space " " rather than a "\*" if you aren't on the edge of the square.
-5, not supposed to print spaces between each asterisk in general.
-10, the number of asterisks/spaces in each row is supposed to be equal to the side length parameter.
-10, the number of asterisks in each column is supposed to be equal to the side length parameter.
-10, do not use global scope variables (those in the top-level program) inside functions unless they are passed in as parameters.
-10, print\_square() should not be prompting the user for the side length - that needs to happen in the top-level program, then pass the side length to print\_square() as an argument.
"""

Instructor Code Sample:
```
import sys

def get\_positive\_int(name):
 x = int(input(f"Enter {name}: "))
 if x <= 0:
 print(f"{name} must be positive!")
 sys.exit()
 return x
def print\_square(length):
 row = 1
 while row <= length:
 col = 1
 while col <= length:
 if 1 < row < length and 1 < col < length:
 print(" ", end="")
 else:
 print("\*", end="")
 col += 1
 print()
 row += 1

side = get\_positive\_int("side length")
print\_square(side)
```

Student Code:
```
import sys

def print\_square(side):
 a = 1
 while a <= side:
 i = 1
 if a == 1 or a == side:
 while i < side:
 print("\*",end="")
 i += 1
 else:
 print("\*",end="")
 x = 0
 while x < (side - 2):
 print(" ",end="")
 x += 1
 print("\*")
 a += 1
 

user\_input = int(input("Enter side length: "))

if user\_input <= 0:
 print("side length must be positive!")
 sys.exit()

print\_square(user\_input)
```
귀하는 능숙하고 디테일 지향적인 채점 도우미입니다. 교수자 코드와 루브릭이 주어지면 학생 코드를 채점합니다. 정확히 효율적으로 일치할 필요는 없지만 루브릭 가이드라인을 준수하면 됩니다.

루브릭:
"""
문제 A
일반적인 점수 분석
변 길이 가져오기 및 유효성 검사: 5점
print\_square()를 올바르게 호출합니다: 5점
print\_square(): 40점
올바른 행 수: 15점
올바른 열 수입니다: 15점
내부에 별표 대신 공백 인쇄: 10점

참고
잘못된 변수 이름은 감점 처리합니다. 관련 없는 임의의 이름은 5점을 감점합니다. 의미가 명확하지 않은 한두 개의 문자 이름은 2점을 감점합니다.
입력 메시지가 필수 메시지와 일치하지 않는 경우 3점, 출력 메시지가 필수 메시지와 일치하지 않는 경우 3점을 감점하고 향후 더 감점될 수 있다는 피드백을 계속 제공합니다.
사소한 오타의 경우 일반적으로 각각 2점을 감점합니다.
print\_square()를 해결하는 방법에는 여러 가지가 있습니다. 제 해결책은 그 중 하나에 불과합니다. 학생들이 정상적인 방법으로 동일한 결과를 얻는다면 같은 방식으로 풀 필요는 없습니다. 예를 들어, 어떤 학생은 첫 번째 행과 마지막 행을 "중간" 행과 분리하여 인쇄할 수 있습니다. 다른 학생들은 각 문자가 있는 목록이나 문자열 목록을 사용한 다음 이를 채운 후 인쇄하는 등의 방법을 사용할 수 있습니다.
제 솔루션은 함수를 사용하여 사용자 입력을 받기도 합니다. 반드시 필요한 것은 아닙니다.

구체적인 피드백
-3, 사용자 프롬프트 메시지가 필수 메시지 형식과 일치하지 않습니다. 필요한 메시지 형식은 과제를 참조하세요.
-3, 출력 메시지가 필수 메시지 형식과 일치하지 않습니다. 필요한 메시지 형식은 과제를 참조하세요.
-50, 이 문제에 대해 제출된 것이 없습니다.
-5, 한 변 길이가 최소 1인지 확인하지 못했습니다.
-10, 속이 비어 있는 사각형이 아닌 "꽉 찬" 사각형이 인쇄되었습니다. 사각형의 가장자리에 있지 않은 경우 "\*"가 아닌 공백 " "을 인쇄할 수 있는 조건을 테스트할 수 있는지 생각해 보세요.
-5, 일반적으로 각 별표 사이에 공백을 인쇄하지 않아야 합니다.
-10, 각 행의 별표/공백 수는 측면 길이 매개변수와 같아야 합니다.
-10, 각 열의 별표 수는 측면 길이 매개변수와 같아야 합니다.
-10, 전역 범위 변수(최상위 프로그램에 있는 변수)는 매개 변수로 전달되지 않는 한 함수 내에서 사용하지 않습니다.
-10, print\_square()는 사용자에게 변 길이를 묻는 메시지를 표시해서는 안 되며, 이는 최상위 프로그램에서 발생한 다음 변 길이를 print\_square()에 인수로 전달해야 합니다.
"""

강사 코드 샘플:
```
import sys

def get\_positive\_int(name):
 x = int(입력(f"{이름} 입력: "))
 if x <= 0:
 print(f"{이름}은 양수여야 합니다!")
 sys.exit()
 반환 x
def print\_square(length):
 row = 1
 행 <= 길이인 동안
 col = 1
 while col <= 길이:
 1 < 행 < 길이, 1 < 꼴 < 길이면
 print(" ", end="")
 else:
 print("\*", end="")
 col += 1
 print()
 row += 1

side = get\_positive\_int("side length")
print\_square(side)
```

학생 코드:
```
import sys

def print\_square(side):
 a = 1
 a <= side:
 i = 1
 a == 1 또는 a == side:
 while i <= side:
 print("\*",end="")
 i += 1
 else:
 print("\*",end="")
 x = 0
 동안 x < (옆 - 2):
 print(" ",end="")
 x += 1
 print("\*")
 a += 1
 

user\_input = int(input("측면 길이 입력: "))

user\_input <= 0:
 print("변 길이는 양수여야 합니다!")
 sys.exit()

인쇄\_제곱(사용자\_입력)
```