파이썬 기본기를 다지기 위한 문제의 풀이를 함께 살펴보려고 합니다. 더 좋은 코드가 있으면 공유 부탁드립니다.
파이썬
오류 수정 연습
출력 |
---|
Age doesn't matter! |
print("Age doesn't matter!')
print("Age doesn't matter!")
Age doesn't matter!
정상적으로 실행되도록 수정하기
출력 |
---|
age는 19살 입니다. |
age = 19
if age = 19:
print("age는 19살 입니다.")
age = 19
if age == 19:
print("age는 {}살 입니다.".format(age))
age는 19살 입니다.
스왑(swap)
x와 y를 서로 바꿔서(swap) x가 "Apple_Iphone", y가 14가 되도록 만들기
출력 |
---|
("Apple_Iphone", 14) |
x, y = 14, "Apple_Iphone"
x, y = y, x
x, y # 결과확인
('Apple_Iphone', 14)
100보다 큰 숫자만
90부터 110까지의 정수로 리스트를 만들고 리스트에서 100 보다 큰 숫자만 골라서 출력.
출력 |
---|
my_lilst = [90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110] |
100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110 |
my_list = []
for i in range(90, 111):
my_list.append(i)
for j in my_list:
if j >= 100:
print(j, end=" ")
print()
print("my_list =" , my_list)
100 101 102 103 104 105 106 107 108 109 110
my_list = [90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110]
제곱의 합
for문을 이용해서 1부터 100까지 숫자들의 제곱의 합을 구하기.
$1^2 + 2^2 + \cdots + 100^2$
출력 |
---|
338350 |
square_sum = 0
for i in range(1, 101):
square_sum += i ** 2
square_sum
338350
소수 판별
1 이상의 정수를 입력받아서 소수(prime number)인지 확인하는 프로그램을 만들기
아래의 입출력 표를 참고해서 소수가 아닐 경우에는 자기 자신을 제외한 나눌 수 있는 가장 큰 수도 같이 출력.
입력 | 출력 |
---|---|
1 | 1은 소수도 합성수도 아닙니다. |
2 | 2는 소수입니다. |
15 | 15은 5로 나눌 수 있습니다. |
91 | 91은 7로 나눌 수 있습니다. |
23 | 23은 소수입니다. |
힌트
- 1과 자기 자신으로만 나누어 떨어지는 숫자를 소수(prime number). 예를 들어서 10은 2 곱하기 5이기 때문에 소수가 아닙니다. 5나 7은 소수입니다.
- 입력받은 숫자가 1일 경우에는 별도의
if
문으로 처리해서 for문을 거치지 않게 할 것 - 가장 단순한 방법은 하나씩 나눠보고 나머지가 0인지를 검사하는 것이겠지요. 예를 들어서 입력이 35라면 2로 나눠보고 3으로 나눠보고 ... 5로 나눴을 때 나머지가 0이니까 검사를 중단하면 됨.
else
는if
와도 사용될 수 있고for
와도 사용될 수 있는데 들여쓰기가 같은for
나if
와 함께 사용.
num = int(input("자연수를 입력해주세요:"))
divisor = []
if num == 1:
print(f"{num}은 소수도 합성수도 아닙니다.")
else:
for i in range(1, num):
if num % i == 0:
divisor.append(i)
if len(divisor) == 1:
print(f"{num}은 소수입니다.")
else:
print(f"{num}은 합성수입니다. {num}의 약수 중 {num}이 아닌 가장 가장 큰 약수는 {divisor[-1]}입니다.")
자연수를 입력해주세요:1
1은 소수도 합성수도 아닙니다.
num = int(input("자연수를 입력해주세요:"))
divisor = []
if num == 1:
print(f"{num}은 소수도 합성수도 아닙니다.")
else:
for i in range(1, num):
if num % i == 0:
divisor.append(i)
if len(divisor) == 1:
print(f"{num}은 소수입니다.")
else:
print(f"{num}은 합성수입니다. {num}의 약수 중 {num}이 아닌 가장 가장 큰 약수는 {divisor[-1]}입니다.")
자연수를 입력해주세요:103
103은 소수입니다.
num = int(input("자연수를 입력해주세요:"))
divisor = []
if num == 1:
print(f"{num}은 소수도 합성수도 아닙니다.")
else:
for i in range(1, num):
if num % i == 0:
divisor.append(i)
if len(divisor) == 1:
print(f"{num}은 소수입니다.")
else:
print(f"{num}은 합성수입니다. {num}의 약수 중 {num}이 아닌 가장 가장 큰 약수는 {divisor[-1]}입니다.")
자연수를 입력해주세요:1235874
1235874은 합성수입니다. 1235874의 약수 중 1235874이 아닌 가장 가장 큰 약수는 617937입니다.
간단 계산기
숫자, 연산자, 숫자를 순서대로 별도의 input() 함수로 입력받고 계산 결과를 출력하는 프로그램을 만들기
입력 | 출력 |
---|---|
11 + 5 | 11 + 5 = 16 |
93 - 18 | 93 - 18 = 75 |
3 * 5 | 3 * 5 = 15 |
20 / 5 | 20 / 5 = 4.0 |
# input() 함수를 3번 사용합니다.
first_number = int(input("첫 번째 숫자를 입력해주세요:"))
operator = input("연산자를 입력해주세요:")
second_number = int(input("두 번째 숫자를 입력해주세요:"))
if operator == "+":
print(f"{first_number}{operator}{second_number} = {first_number + second_number}")
elif operator == "-":
print(f"{first_number}{operator}{second_number} = {first_number - second_number}")
elif operator == "*":
print(f"{first_number}{operator}{second_number} = {first_number * second_number}")
else:
print(f"{first_number}{operator}{second_number} = {first_number / second_number}")
첫 번째 숫자를 입력해주세요:11
연산자를 입력해주세요:/
두 번째 숫자를 입력해주세요:3
11/3 = 3.6666666666666665
eval()
함수와 표현식
문자열에 계산 가능한 식을 넣으면 그 값을 계산해주는 편리한 함수입니다. 예를 들어서 eval("1 + 10")
을 실행시키면 11이 됩니다. eval()
함수를 이용해서 계산 식을 입력하면 그 결과가 출력되는 프로그램을 만들기.
입력 | 출력 |
---|---|
1+10 | 11 |
100-5 | 95 |
3*5 | 15 |
12/4 | 3.0 |
(1+2)*3 | 9 |
user_input = input("계산식을 입력해주세요:")
print(eval(user_input))
계산식을 입력해주세요:23+17
40
user_input = eval(input("계산식을 입력해주세요:"))
print(user_input)
계산식을 입력해주세요:23-7
16
eval() 함수와 시퀀스
여러 개의 숫자를 컴마로 구분해서 입력받고 그 숫자들의 합을 구하기.
입력 | 출력 |
---|---|
1, 2, 3 | 6 |
3, 2, 1, 8, 6 | 20 |
7 | 오류 |
7, | 7 |
참고로 1 2 3
과 같이 빈칸만으로 구분해서 입력하면 오류가 발생.
user_input = eval(input("여러 개의 숫자를 컴마로 구분해서 입력하세요:"))
my_sum = 0
for i in user_input:
my_sum += i
print(my_sum)
여러 개의 숫자를 컴마로 구분해서 입력하세요:1,3,5
9
user_input = eval(input("여러 개의 숫자를 컴마로 구분해서 입력하세요:"))
my_sum = 0
for i in user_input:
my_sum += i
print(my_sum)
여러 개의 숫자를 컴마로 구분해서 입력하세요:7,
7
BMI 계산기
키와 몸무게를 입력받아서 BMI 수치와 비만 정도를 알려주는 프로그램을 만들기. 키를 입력받을 때는 cm 단위로 입력받은 후에 다시 미터 단위로 변환해서 계산에 사용.
$BMI = 몸무게 / (키 * 키)$
문제를 단순화하기 위하여 BMI 25 이상은 비만, 18 미만은 저체중, 그 외에는 정상으로 판별
입력 | 출력 |
---|---|
키178몸무게80 | BMI 수치는 25.25 입니다. 비만 |
키164몸무게48 | BMI 수치는 17.85 입니다. 저체중 |
키170몸무게60 | BMI 수치는 20.76 입니다. 정상 |
BMI는 소수점 아래 2자리만 출력
weight = input("몸무게를 입력하세요(단, 단위는 kg):")
height = input("키를 입력하세요(단, 단위는 cm):")
BMI = float(weight)/(float(height)/100) ** 2
if BMI >= 25:
print(f"당신의 BMI지수는 {BMI:.2f}입니다. 비만")
elif 18 <= BMI < 25:
print(f"당신의 BMI지수는 {BMI:.2f}입니다. 정상")
else:
print(f"당신의 BMI지수는 {BMI:.2f}입니다. 저체중")
몸무게를 입력하세요(단, 단위는 kg):85
키를 입력하세요(단, 단위는 cm)183
당신의 BMI지수는 25.38입니다. 비만
애플, 테슬라, 수학코딩
1에서 20까지의 정수에 대해서 3의 배수이면 "애플"을, 5의 배수이면 "테슬라"를, 3의 배수이면서 5의 배수라면 "수학 코딩"을 출력합니다.
실행 예시
1 2 "애플" 4 "테슬라" "애플" 7 8 "애플" "테슬라" 11 "애플" 13 14 "수학코딩" 16 17 "애플" 19 "테슬라"
for i in range(1, 21):
if i % 3 == 0 and i % 5 == 0:
print("수학코딩", end=" ")
elif i % 5 == 0:
print("테슬라", end=" ")
elif i % 3 == 0:
print("애플", end=" ")
else:
print(i, end=" ")
1 2 애플 4 테슬라 애플 7 8 애플 테슬라 11 애플 13 14 수학코딩 16 17 애플 19 테슬라
369 게임
1에서 20까지의 정수에 대해서 끝자리 숫자가 3이나 6이나 9라면 "짝"을 출력하고 그렇지 않다면 그 숫자를 출력합니다.
1 2 짝 4 5 짝 7 8 짝 10 11 12 짝 14 15 짝 17 18 짝 20
for i in range(1, 21):
if i % 10 == 3 or i % 10 == 6 or i % 10 == 9:
print("짝", end=" ")
else:
print(i, end=" ")
1 2 짝 4 5 짝 7 8 짝 10 11 12 짝 14 15 짝 17 18 짝 20
자연수만 입력받기
사용자가 input() 함수로 자연수를 입력할 때까지 반복해서 입력을 받도록 해봅시다. 자연수는 1, 2, 3,... 같이 1 이상의 양의 정수입니다.
실행 예시
자연수를 입력해주세요: 0
자연수가 아닙니다.
자연수를 입력해주세요: hello
자연수가 아닙니다.
자연수를 입력해주세요: a123
자연수가 아닙니다.
자연수를 입력해주세요: -100
자연수가 아닙니다.
자연수를 입력해주세요: 1234
자연수입니다.
힌트
isnumeric()
메써드 사용:=
연산자 사용 (파이썬 3.8 이상인지 확인)
while True:
user_input = input("자연수를 입력하세요: ")
if not user_input.isnumeric():
print(f"입력하신 값 {user_input}은 자연수가 아닙니다.")
elif user_input == "0":
print(f"입력하신 값 {user_input}은 자연수가 아닙니다.")
else:
print(f"입력하신 값 {user_input}은 자연수입니다.")
break
자연수를 입력하세요: python
입력하신 값 python은 자연수가 아닙니다.
자연수를 입력하세요: 아이폰
입력하신 값 아이폰은 자연수가 아닙니다.
자연수를 입력하세요: -5
입력하신 값 -5은 자연수가 아닙니다.
자연수를 입력하세요: 0
입력하신 값 0은 자연수가 아닙니다.
자연수를 입력하세요: 7
입력하신 값 7은 자연수입니다.
while not ((i := input("자연수를 입력해주세요:")).isnumeric() and i != "0"):
print("자연수가 아닙니다.")
else:
print("자연수입니다.")
자연수를 입력해주세요:반갑습니다.
자연수가 아닙니다.
자연수를 입력해주세요:Hello
자연수가 아닙니다.
자연수를 입력해주세요:-1
자연수가 아닙니다.
자연수를 입력해주세요:0.5
자연수가 아닙니다.
자연수를 입력해주세요:0
자연수가 아닙니다.
자연수를 입력해주세요:11
자연수입니다.
이 포스팅은 쿠팡 파트너스 활동의 일환으로 소정의 수수료를 받을 수 있습니다.
'수학과 코딩' 카테고리의 다른 글
python 반복(for) 문자열 (f-string) 별 찍기(star) 트리 만들기(tree) (0) | 2022.08.01 |
---|---|
파이썬(python) 반복문(for), 문자열 포멧(format) 트리 만들기 (0) | 2022.08.01 |
파이썬(python) 소수(prime number)판별, BMI계산 등 여러 기본 문제 (0) | 2022.07.31 |
파이썬[python] 반복문[for, while] 안에서 반복문 사용하기 (0) | 2022.07.30 |
파이썬 python 프로그램 흐름 제어(flow control) 반복문(for) (0) | 2022.07.29 |
댓글