줴림이 공부하줴림
[SWEA] [파이썬 프로그래밍 기초(1) 파이썬의 기본 구조와 기초 문법] 8. 함수 기초 본문
이예 아직 홍차는 안 탔지만 어쨌든 문풀은 시작.
1. 다음의 결과와 같이 반복문을 이용해 단어의 순서를 거꾸로 해 반환하는 함수를 작성하고 그 함수를 이용해 회문 여부를 판단하는 코드를 작성하십시오.
회문 문제, 이것도 컴프 시간에 했던 것 같은데... 난 여전히 아무것도 모르는 청순한 뇌를 가지고 있지.
하지만 청순한 뇌일수록 스스로 학습한 것은 더 잘 기억하는 법! 간다!!
def check_palindrome(word):
reword = ''
for i in word:
reword = i + reword
if reword == word:
print(word)
print("입력하신 단어는 회문(Palindrome)입니다.")
else:
print(word)
print("입력하신 단어는 회문(Palindrome)이 아닙니다.")
word = input()
check_palindrome(word)
회문 구하는 방법 여러 가지가 있겠지만, 난 단어 철자를 하나씩 거꾸로 넣어서 비교하는게 제일 간편한 것 같다. 비록 생각하는 데 시간이 걸리기는 했지만...
+) 잠깐 도카 다녀와서 다시 처음부터 풀어봤다. 이번엔 무난하게 pass.
2. 다음과 같이 사용자 2명으로부터 가위, 바위, 보를 입력 받아 가위, 바위, 보 규칙이 정의된 함수를 이용해 승패를 결정하는 코드를 작성하십시오.
def rock_scissor_paper(word1, word2):
if word1 == word2:
print("무승부입니다")
elif word1 == "바위":
if word2 == "가위":
print("바위가 이겼습니다!")
elif word2 == "보":
print("보가 이겼습니다!")
elif word1 == "가위":
if word2 == "바위":
print("바위가 이겼습니다!")
elif word2 == "보":
print("가위가 이겼습니다!")
elif word1 == "보":
if word2 == "가위":
print("가위가 이겼습니다!")
elif word2 == "바위":
print("보가 이겼습니다!")
name1 = input()
name2 = input()
word1 = input()
word2 = input()
rock_scissor_paper(word1, word2)
이번엔 무난하게 풀었는데. 이렇게 푸는 걸 원한 게 맞는지는... 그리고 else문 써도 되겠지만, 난 나를 못 믿어서 그냥 elif로 해줬다.
3. 소수를 검사하는 함수를 정의하고, 다음의 결과와 같이 사용자가 입력한 숫자가 소수인지를 판단하는 프로그램을 작성하십시오. 소수일 경우 "소수입니다." 출력, 아닐 경우 "소수가 아닙니다." 출력
소수: 1과 자기 자신만 약수로 갖는 수
그러면 어떻게 풀어줘야 할까...
'''
소수: 1과 자기 자신만을 약수로 갖는 수
그럼 1에서 자기 자신까지 그 사이에 있는 수로 나눠도 나머지가 0이 아니겠네?
'''
def prime_test(num):
if num == 1:
print("소수가 아닙니다.")
return 0
for i in range(2, num):
if (num % i) == 0:
print("소수가 아닙니다.")
return 0
else:
print("소수입니다.")
return 0
num = int(input())
prime_test(num)
처음엔 return 안 넣고 그냥 작성했더니 "소수입니다."가 여러 번 나와서 당황;; break를 써야하는 건가 했는데 break를 써도 문제가 풀리진 않을 것 같아서 고민 좀 했다. 이럴 땐 return 넣기. 메모메모
4. 다음의 결과와 같이 피보나치 수열의 결과를 생성하는 프로그램을 작성하십시오.
'''
피보나치 수열: 다음 값 = 전 + 현
입력: 리스트 길이
'''
def fibonacci(num):
res = [0] * num
res[0] = 1
for i in range(0, num-1):
res[i+1] = res[i-1] + res[i]
print(res)
num = int(input())
fibonacci(num)
5. 리스트의 항목 중 유일한 값으로만 구성된 리스트를 반환하는 함수를 정의하고 이 함수를 이용해 리스트의 중복 항목을 제거하는 프로그램을 작성하십시오.
def overlap_num(nums):
tmp = list()
for i in range(0, len(nums)):
if nums[i] not in tmp:
tmp.append(nums[i])
else:
continue
print(tmp)
nums = [1, 2, 3, 4, 1, 2, 3]
overlap_num(nums)
이렇게 작성했는데 틀렸댄다. test할 때는 괜찮았는데 뭐가 문제지?
왜 틀렸는지 알았다. nums 입력을 [1, 2, 3, 4, 3, 2, 1]인데 [1, 2, 3, 4, 1, 2, 3]으로 작성했다. 하...ㅋㅋㅋ
def overlap_num(nums):
tmp = []
for i in nums:
if i not in tmp:
tmp.append(i)
print(tmp)
nums = [1, 2, 3, 4, 3, 2, 1]
print(nums)
overlap_num(nums)
def overlap_num(nums):
tmp = list()
for i in range(0, len(nums)):
if nums[i] not in tmp:
tmp.append(nums[i])
else:
continue
print(tmp)
nums = [1, 2, 3, 4, 3, 2, 1]
print(nums)
overlap_num(nums)
제출 이렇게 2개 했고 결국 pass 받았다. 하... 아니 입력 리스트 잘못 썼다고 이러기 있냐...ㅋㅋㅋㅋ
6. 정렬된 숫자를 가진 리스트에서 특정 숫자를 찾는 함수를 정의하고, 이 함수를 이용해 임의의 숫자의 포함 여부를 출력하는 프로그램을 작성하십시오.
def find_num(nums, a):
if a in nums:
print("%d => True" % (a))
else:
print("%d => False" % (a))
nums = [2, 4, 6, 8, 10]
print(nums)
find_num(nums, 5)
find_num(nums, 10)
7. 다음과 같이 팩토리얼을 구하는 함수를 정의해 입력된 숫자에 대한 팩토리얼 값을 구하는 프로그램을 작성하십시오.
def factorial(num):
res = 1
for i in range(1, num+1):
res = res * i
print(res)
num = int(input())
factorial(num)
이지피지
8. 숫자에 대해 제곱을 구하는 함수를 정의하고, 다음과 같이 숫자를 콤마(,)로 구분해 입력하면 정의한 함수를 이용해 제곱 값을 출력하는 프로그램을 작성하십시오.
def square(nums):
for i in nums:
print("square(%d) => %d" % (i, i**2))
nums = list(map(int, input().split(',')))
square(nums)
9. 인자로 전달된 두 개의 문자열 중 길이가 더 긴 문자열을 출력하는 함수를 정의하고 결과를 출력하는 프로그램을 작성하십시오.
def length_comparison(words):
if len(words[0]) <= len(words[1]):
print(words[1])
elif len(words[0]) > len(words[1]):
print(words[0])
words = list(input().split(','))
length_comparison(words)
또 오답... 어디가 문제인지 하고 봤더니 split할 때 콤마 뒤에 공백 추가 안해줘서 그런 듯
def length_comparison(words):
if len(words[0]) <= len(words[1]):
print(words[1])
elif len(words[0]) > len(words[1]):
print(words[0])
words = list(input().split(', '))
length_comparison(words)
추측이 맞았다. 공백 넣어주니까 pass 뜸
10. 인자로 전달된 숫자를 이용해 카운트다운하는 함수 countdown을 정의하고, 이 함수를 이용하여 countdown(0), countdown(10)을 순서대로 실행하십시오. 0보다 작거나 같은 인자가 전달되었을 경우 "카운트다운을 하려면 0보다 큰 입력이 필요합니다."를 출력하십시오.
차라리 문제에서 함수명을 딱 주니까 오히려 편하다. 함수명 짓는 것도 힘들다고~
def countdown(num):
if num <= 0:
print("카운트다운을 하려면 0보다 큰 입력이 필요합니다.")
else:
for i in range(num, 0, -1):
print("%d" % (i))
countdown(0)
countdown(10)
코드 짜다가 갑자기 리스트 거꾸로 돌리는 법 까먹음. 대충 정방향으로 돌리는게 (0, num, 1)이니까 (num, 0, -1) 넣으면 거꾸로 되겠지 하고 풀었다.
함수의 기초 연습문제 풀이도 끝!! 계속 하다보니까 점점 python이 손에 익는 느낌이 든다. 오늘 파이썬 프로그래밍 기초(1) 끝내고 운동 갔다와야지. 그리고 기초(2)도 금방 끝낼 수 있을 것처럼 보이니까 오늘은 여기까지 싹 풀고!
내일부터는 OPIc이랑 알고리즘 공부 본격적으로 들어간다. 진짜로...
'Study > SWEA' 카테고리의 다른 글
[SWEA] [파이썬 프로그래밍 기초(2) 파이썬의 기본 응용] 5. 객체지향 (1) | 2025.04.03 |
---|---|
[SWEA] [파이썬 프로그래밍 기초(2) 파이썬의 기본 응용] 4. 문자열 (0) | 2025.04.02 |
[SWEA] [파이썬 프로그래밍 기초(1) 파이썬의 기본 구조와 기초 문법] 9. 내장 함수 (0) | 2025.04.02 |
[SWEA] [파이썬 프로그래밍 기초(1) 파이썬의 기본 구조와 기초 문법] 7. 흐름 제어 - 반복 (0) | 2025.04.02 |
[SWEA] [파이썬 프로그래밍 기초(1) 파이썬의 기본 구조와 기초 문법] 6. 흐름제어 연습문제 (0) | 2025.04.02 |