파이썬/ while loop을 이용한 각 자리의 수의 합
조회수 3035회
안녕하세요,
임의의수를 정수값으로 변수에 저장하고, 각 자리수의 합을 구하는데, 자리수가 2보다크고 8보다 작은 것들만의 합을 구하는 문제입니다. (산술 연산자를 이용해야 합니다.)
code = 12345678
sum = 0
while code:
a = code%10
if 2 < a <8:
sum = a + sum
code = code//10
else:
code = code//10
print(sum)
위처럼 풀이를 해보았는데, if 문을 쓰지 않고 while문 만으로 풀이한다면, 어떤 논리구조로 풀어 나갈 수 있는지 궁금합니다.
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
2 답변
-
code = 1234567894 _str = str(code) _result = 0 for i in _str: if (int(i) > 2) and (int(i) < 8): _result += int(i) print(_result) #산술연산자만썻을때 _result = 0 while (code > 0): b = int(code) % 10 if (b > 2) and (b < 8): _result += b code /= 10 print(_result)
추가) 질문이 살짝 바뀌셧네요 if문을 쓰지 않고 싶어하시는 이유가 궁금하네요
- 답변 감사드립니다! 알 수 없는 사용자 2020.4.17 16:56
- 특별한 이유는 없고, 파이썬 시작한지 얼마 안됐는데 풀이가 while문 만으로도 가능한지 단순한 호기심입니다! 알 수 없는 사용자 2020.4.17 16:56
- :P 가능은 한데 구지 써야하나 싶네요. 실제 동작은 if문쓰는 형태와 똑같고요. 효율성문제입니다 김호원 2020.4.17 17:08
-
limit = min(len(str(code)), 7) code = code // 100 counter = 2; result = 0 while counter < limit: result += code % 10 code = code // 10 counter += 1 print(result)
if
를 안 쓰려면(이게 무슨 의미가 있는 건지는 모르겠지만) 미리 조건을 다 맞추고 반복문 안으로 들어가는 수 밖에 없어 보이는데요.극한 코딩 테스트인가...
별해:
# List Processing은 이래야 파이썬스럽다는게 제 개인적인 생각입니다. sum(map(int, str(code)[-7:-2]))
- 호기심이셨다면 ㅇㅈ 합니다. 많은 시도 해 보시는거 좋아요 좋아. 화이팅! doodoji 2020.4.17 17:13
- 답변감사합니다 ㅠㅠㅠ 처음이라 이것저것 궁금해서요! 오히려 더 복잡해 지는군요! 알 수 없는 사용자 2020.4.17 17:25
댓글 입력