input(
'언어를 선택하세요')
# 로직을 짜는 것보다 '오류를 어떻게 처리할지' 고민하는 게 프로그래밍
languages = ["Español", "Inglés", "Coreano", "Python"]
for i, l in enumerate(languages, start=1):
print("{}. {}".format(i, l))
while True:
sel = input('언어를 선택하세요 > ')
if not sel.isnumeric(): # input이 숫자가 아닐 경우도 고려
continue # 위로 올라가라!
sel = int(sel) # numeric일 경우 int로 변환
if 0 < sel < 5:
break # break되지 않으면 계속 위 input 질문을 반복한다.
print("사용자가 선택한 언어는 {}입니다.".format(languages[sel-1]))
1. Español
2. Inglés
3. Coreano
4. Python
언어를 선택하세요 >
* (2 이상의 자연수 중) 자신으로만 나눠지는 수.
# '수'인가?
while True:
num = input("2 이상의 숫자를 입력하세요>")
if not num.isnumeric():
continue # continue를 빠져나간다면 numeric이다.
num = int(num)
if num < 2: # '2 이상'인가?
continue
break
# 자신으로만 나눠지는가?
isprime = True
for n in range(2, num):
if num % n == 0: # 자신이 아닌 수로 나누어 떨어지면 소수가 아니다.
isprime = False
break
if isprime:
print("소수입니다.")
else:
print("소수가 아닙니다.")
break을 통해 큰 범위를 돌아야 하는 반복문을 일찍 중단시킬 수도 있다.
참고 : https://this-programmer.tistory.com/409
# 내가 입력한 데까지의 모든 소수를 구하는 로직, 그것을 확인하는 로직.
# 지금까지 배운 것들을 활용.
while True:
num = input("2 이상의 숫자를 입력하세요 > ")
if not num.isnumeric():
continue
num = int(num)
if num < 2:
continue
break
# 리스트의 덧셈
prime_list = [False, False] + [True] * (num - 1)
primes = [] # 최종적 소수만 저장한다.
for i in range(2, num+1): # 2, 3, 4, ..., input까지.
if prime_list[i]: # 가 True라면
for j in range(2*i, num+1, i):
prime_list[j] = False
primes = [i for i in range(2, num+1) if prime_list[i] == True]
print(primes)
if num in primes:
print("소수입니다.")
else:
print("소수가 아닙니다.")
2 이상의 숫자를 입력하세요 > 73
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73]
소수입니다.