Programming/Python
[AI 기초 다지기] 파이썬 condition, loop 예제; random.randint
aram
2022. 7. 27. 16:23
1. 무슨 학교 다니세요?
- 태어난 연도를 계산하여 학교 종류를 맞추는 프로그램 개발
print ("당신이 태어난 년도를 입력하세요")
birth_year = int(input())
age = 2022 - birth_year +1
if age > 26:
print("학생이 아닙니다")
elif age >= 20:
print("대학생")
elif age >= 17:
print("고등학생")
elif age >= 14:
print("중학생")
elif age >= 8:
print("초등학생")
else:
print ("학생이 아닙니다")
#2번째 버전
if age > 26 or age < 8 :
message = "학생이 아닙니다"
elif age >= 20:
message = "대학생"
elif age >= 17:
message = "고등학생"
elif age >= 14:
message = "중학생"
else :
message = "초등학생"
print(message)
2. 윤년 계산기
서력 기원 연수가 4로 나누어 떨어지는 해는 윤년으로 한다. (1988년, 1992년, 1996년, 2004년, 2008년...)
서력 기원 연수가 4, 100으로 나누어 떨어지는 해는 평년으로 한다. (1700년, 1800년, 1900년, 2100년...)
서력 기원 연수가 4, 100, 400으로 나누어 떨어지는 해는 윤년으로 둔다. (1600년, 2000년, 2400년...)
print("윤년계산기 입니다.")
year = int(input("연도를 입력해주세요 : "))
if year % 4 ==0:
if year % 100 == 0 and year % 400 == 0:
print("{0}은 윤년입니다".format(year))
elif year % 100 == 0:
print("{0}은 평년입니다".format(year))
else:
print("{0}은 윤년입니다".format(year))
else:
print("{0}은 평년입니다".format(year))
3. 이진수 계산코드
decimal = int(input("십진수를 입력해주세요 : "))
result = ''
while decimal > 0:
remainder = decimal % 2
decimal = decimal // 2
result = str(remainder) + result
print(f"decimal value : {decimal}")
print (result)
십진수를 입력해주세요 : 10
decimal value : 5
decimal value : 2
decimal value : 1
decimal value : 0
1010
4. 숫자 찾기 게임
- 1~100 임의의 숫자를 맞추시오
- 난수 발생 > random으로 호출(import) > random.randint(범위)로 발생시킬 수 있음
import random #난수 발생 함수 호출
guess_number = random.randint(1, 100) #1~100 사이 정수 난수 발생
print ("숫자를 맞춰보세요(1 ~ 100)")
while True:
user_number = int(input()) #사용자 입력을 받음
if user_number > guess_number: #사용자 입력이 클 경우
print("숫자가 너무 큽니다") #다시 올라가서 사용자 입력 받음
elif user_number < guess_number: #사용자 입력이 작을 경우
print("숫자가 너무 작습니다") #다시 올라가서 사용자 입력 받음
else: #종료조건
print(f'정답입니다. 입력한 숫자는 {guess_number} 입니다.')
break
>> while True로 종료할 때까지 받는 함수도 가능
>> BUT, 좋은 코드는 아님. 언제 끝날 지 모르는 무한 루프를 빠질 수 있음.
import random #난수 발생 함수 호출
guess_number = random.randint(1, 100) #1~100 사이 정수 난수 발생
print ("숫자를 맞춰보세요 (1 ~ 100)")
users_input = int(input()) #사용자 입력을 받음
while (users_input is not guess_number): #사용자 입력과 난수가 같은지 판단
if users_input > guess_number: #사용자 입력이 클 경우
print ("숫자가 너무 큽니다")
else: #사용자 입력이 작은 경우
print ("숫자가 너무 작습니다")
users_input = int(input()) #다시 사용자 입력을 받음
else: print ("정답입니다. ", "입력한 숫자는 ", users_input , "입니다") #종료 조건
5. 약수 모두 출력
- 정수를 입력받고 , 약수들을 모두 출력하고 약수들의 합을 출력하시오 : while문으로
num = int(input("정수를 입력해주세요 : "))
sum = 0
count = 0
while num >= count :
count += 1
if num % count == 0:
sum += count
print(count, end=" ")
print("\n{0}의 약수들의 합 : {1}".format(num, sum))
6. 나르시스트의 수 구하기
- 100의 자릿수, 10의 자릿수, 1의 자릿수를 각각 구하고, 각 자릿수를 3제곱하여 더한 수와 원래의 수와 같은지를 비교하여 같은 수를 출력하시오. 마지막에 이러한 수들의 총 개수를 구하시오(4개)
narcissist = 0
num_hun = 0
num_ten = 0
num_one = 0
num_cal = 0
for num in range(100, 1000):
num_hun = num // 100 #백의 자리수
num_ten = (num % 100) // 10 #십의 자리수
num_one = num % 10 #일의 자리수
num_cal = num_hun**3 + num_ten**3 + num_one**3
if num == num_cal :
print("나르시스트 수 :", num_cal)
narcissist += 1
print("나르시스트의 수의 총 개수 :", narcissist)
7. 고집수 구하기
- 2자리의 양의 정수만 처리(범위10~99)해서 고집수가 4이상 되는 수들만 출력하시오.
- 고집수란 : 2자리의 각 자릿수를 분할하여 서로 곱하고, 곱하여진 결과를 다시 각 자릿수로 분할하여 곱해 나간다. 이러한 과정을 계속해 나가면 1의 자리의 수에 도달하게 되며, 곱해 나가는 반복 횟수.
- 예시) 96 > 54 > 20 > 0
for stubborn_num in range(10, 100):
count = 0
num = stubborn_num
while num > 9 :
num = (num // 10) * (num % 10)
count += 1
if count >= 4 :
print(f'{stubborn_num}은 고집수 입니다.')
8. 1~100사이의 "소수" 출력하기
prime_number = []
for num in range(2, 100):
count = 0 #소수 개수 카운트
for i in range(2,100):
if num % i == 0: #나누어 떨어지면 i는 num의 약수
count += 1
if count >= 2: #나누어 떨어지는 수가 자기자신을 제외하고
break #또 있다면 소수가 아님
if count == 1:
prime_number.append(num) #소수 리스트에 추가
print(prime_number)
print(f"소수의 총 개수는 {len(prime_number)}입니다.")
9. 1~1000 사이에 있는 홀수의 합계가 최초로 1000이 넘어가는 숫자를 구하시오.
odd_sum = 0
for num in range(1, 1000):
if num % 2 == 1:
odd_sum += num
if odd_sum > 1000:
break
print("1000이 넘어가는 홀수의 합계 :", odd_sum)
print("최초로 1000이 넘어가는 홀수 :", num)
1000이 넘어가는 홀수의 합계 : 1024
최초로 1000이 넘어가는 홀수 : 63
728x90