사용자 입력 (1) input(), enumerate() ⭐

Grace Goh·2022년 9월 17일
0

Python

목록 보기
15/24

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]
소수입니다.

profile
Español, Inglés, Coreano y Python

0개의 댓글