while은 한계치를 지정해줘야하고, 세부적으로 설정을 해줘야하는 느낌이라면
for은 조금 더 발전한 반복문이라고 생각한다
예를들어 같은 출력이어도 길이가 다르다
주의할 점은 들여쓰기다 꼭 들여쓰기를 잘 하자 아마 오류가 뜨거나 원하는 답이 나오지않는다면 들여쓰기와 문장이 거쳐가는지 봐야할것
같은문자를 5번 출력하는 코드를 만들어보겠다
i = 0
while i != 5:
print('hello')
i += 1
또는
i = 0
while i < 5:
print('hello')
i += 1
이런느낌이고
for i in range(5):
print('hello')
괄호안에 (0,5),(0,5,1)를 넣어도 형식은 같다
for i in [0, 1, 2, 3, 4]:
print('hellp')
도 같으며, [] 리스트 안에는 str을 넣어도 인식이 된다.
이처럼, 내가 느끼기로는 while 보다는 조금 간단하다는 느낌을 받았다
이를 이용해서 문제를 풀어보도록하겠다
evensum,oddsum = 0,0
for i in range(1,101):
if i % 2 == 0:
evensum += i
else:
oddsum += i
form = '짝수의 합 :{} 홀수의 합 :{}'
print (form.format(evensum,oddsum))
for i in range ( 1, 101): 1부터 100까지의 범위를 지정한다 (i는 이제 반복될 떄 마다 1~100을 순서대로 선언)
if i % 2 == 0: 각 i의 값이 2로 나누어서 0으로 떨어지면
evensum += i evensum이라는 곳에 값을 누적으로 더해서 저장
else: oddsum += i 아니면, oddsum에 값을 누적으로 더해서 저장
for i in range (1,101):
primenumber = True
for j in range(2,i):
if i % j == 0:
primenumber = False
if primenumber:
print(i,end=' ')
for i in range(1,101): 숫자 범위 지정
primenumber = True 숫자를 모두 실수라고 (가정)한다 (이거진짜 중요)
for j in range(2,i): 1을 제외하고 2부터 i 전 까지의범위(두번째로 중요 실수를 구할 수 있는 명령어다)
if i % j ==0: i가 j로 나누어서 0 으로 나누어 떨어진다면 (2부터 i까지 나누어질 때 까지 시도했을 때) False
if primenumber: primenumber이 참값(True)이라면 print
이번 건 꽤 많이 어려웠고 이해하기도 어려웠지만 지금 이렇게 쓰고나니깐 이해가 된다
primenum = True
cnt = int(input('정수 입력 :'))
for i in range(2,cnt):
if cnt % i == 0:
primenum = False
break
print(cnt,end=' ')
print(primenum and '소수입니다' or '소수가 아닙니다')
primenum = True 모든 수를 소수라고 가정하기 *들여쓰기 주의 꼭 for문 안에 넣을것!!!!!
cnt = int(input('정수 입력:')) 받은 수를 cnt에 저장
for i in range(2,cnt): i 를 2 부터 cnt 까지 반복
if cnt % i == 0: cnt 를 i 로 나눴을 때 0으로 떨어진다면, primenum은 거짓
break 확실하게 이해를 못하겠다만, 반복이 끝났다면 탈출
print(primenum and '소수입니다' or '소수가 아닙니다')
primenum이 참이라면 자동적으로 소수입니다 출력 아니라면, 소수가 아닙니다 출력
for i in range(6):
for j in range(7):
print(f'({i},{j})',end=' ')
print()
i 안에 j 가 들어있는데 j를 먼저 수행한 뒤에 i를 수행함
(0,0) (0,1) (0,2) (0,3) (0,4) (0,5) (0,6)
(1,0) (1,1) (1,2) (1,3) (1,4) (1,5) (1,6)
(2,0) (2,1) (2,2) (2,3) (2,4) (2,5) (2,6)
(3,0) (3,1) (3,2) (3,3) (3,4) (3,5) (3,6)
(4,0) (4,1) (4,2) (4,3) (4,4) (4,5) (4,6)
(5,0) (5,1) (5,2) (5,3) (5,4) (5,5) (5,6)
원래는 값이 아래로 향하지만
print로 i와 j를 잡아뒀기 때문에 왼쪽에서 우측으로
값이 출력됨
보이는 것 처럼 i 는 0 으로 쭉 출력 j는 0, 1, 2, 3, 4, 먼저 출력됨
i가 반복이 끝나면 그다음 값이 출력된다
i는 1로 쭉 출력 j는 또 0, 1, 2, 3, 4,....
이런 성질을 가지고 있다는 걸 알아두자
바뀌어야 하는 값은 for ,while 바깥에 있어야하고
고정되어야 하는 값은 for, while 안에 있어야한다.
num = 1234
result = 0
while num > 0:
result *= 10
result += num % 10
num //= 10
print(result) -출력-> 4321
num 과 result 는 값이 수시로 변동 된다 그러므로 while 바깥에 위치하는 걸 볼 수 있다.