예를 들어 함수를 입력할 때 숫자 702는 4904를 반환해야 합니다. 7의 제곱은 49이고 0의 제곱은 0이고 2의 제곱은 4입니다. 함수가 0을 받으면 0을 반환해야 합니다.
이 연습의 기본 과제는 정수를 한 자리씩 진행하고 결과를 다른 정수로 반환하는 것입니다.
프로그래밍의 모든 것과 마찬가지로 이 문제도 다양한 방법으로 해결할 수 있습니다. 먼저 파이썬의 숫자 조작 속성을 이용하여 풀어보고, 그다음에는 또 다른 좀 더 발전된 방법을 설명하겠습니다. ?.
def square_digits(num): if num == 0: return 0 result = "" while num > 0: num_sqr = (num % 10) ** 2 num = num // 10 result = str(num_sqr) result return int(result)
이 코드에서는 먼저 명령문에 표시된 대로 0이 수신되어 0을 반환하는지 여부를 평가합니다. 그런 다음 변수 결과를 빈 문자열로 초기화하고 num > 0 조건으로 while 루프를 만듭니다. 수신된 각 숫자의 제곱인 변수 num_sqr을 정의합니다. num % 10을 사용하여 수신된 숫자의 마지막 숫자를 얻은 다음 **2.
로 제곱합니다.숫자 % 10을 사용하는 것은 숫자의 마지막 자리를 추출하는 일반적인 방법입니다.
num = num // 10 표현식은 숫자의 마지막 자리를 제거하고 각 자리에서 앞으로 이동합니다.
이 문제를 해결하는 또 다른 방법은 숫자를 문자열로 변환하고 for 루프를 사용하여 이 문자열을 반복하는 것입니다.
def square_digits(num): result = "" for digit in str(num): result = str(int(digit)**2) return int(result)
이 코드는 더 최적이며 행 수가 적고 순회가 매우 잘 이해되며 0을 받는지 평가할 필요가 없습니다. Python에서는 for 루프를 사용하여 문자열을 문자별로 순회하는 것이 가능합니다. . 우리는 이 기능을 사용하여 수신된 숫자를 반복하여 str(num)을 사용하여 문자열로 변환합니다. result 변수를 빈 문자열로 생성합니다. 여기에 숫자를 정수로 변환하고 2로 올린 결과인 문자가 연결되어 모두 문자열로 변환됩니다. 그런 다음 결과를 정수로 변환하여 반환합니다.
*더 발전되고 "우아한" 방식 *은 Generator Understanding과 .join motodo를 사용합니다. 먼저 코드를 제시하고 이러한 용어를 설명하는 내용을 자세히 설명하겠습니다.
def square_digits(num): return int(''.join(str(int(digit)**2) for digit in str(num)))
이 첫 번째 코드는 개념을 모르면 읽기가 어렵습니다.
그것이 그것을 구성합니다.
str(num)의 숫자에 대한 표현식 str(int(digit)**2)은 숫자 num의 문자열 표현에서 각 숫자를 반복하는 _generator _(생성기 표현식)입니다.
각 숫자에 대해 정수(int(digit))로 변환하고 제곱한 다음(**2) 다시 문자열(str(...))로 변환합니다. 그런 다음 ''.join(...)을 사용하여 시퀀스(이 경우 생성기)를 취하고 모든 요소를 단일 문자열로 연결합니다. 여기서는 모든 정사각형 숫자가 구분 기호 없이 단일 문자열로 결합됩니다(작은따옴표 사이의 문자열이 비어 있기 때문입니다 '').
우리가 볼 수 있듯이, 연습 문제를 해결하는 다양한 방법은 언어 지식 수준을 보여줍니다. 테스트를 통과하면 모든 솔루션이 정확하지만 일부 솔루션은 다른 솔루션보다 더 효율적이고 읽기 쉽습니다. 접근 방식의 선택은 상황과 각 경우의 우선순위에 따라 달라집니다.
가독성: 다른 개발자가 코드를 읽고 유지 관리할 때 중요합니다. 명확하고 이해하기 쉬운 코드는 오류 가능성을 줄이고 유지 관리를 더 쉽게 만듭니다. ?
효율성: 대용량 데이터로 작업하거나 성능이 중요한 애플리케이션에서 중요합니다. 더욱 최적화된 코드는 속도와 리소스 소비에 큰 차이를 만들 수 있습니다. ?
단순성: 프로토타입이나 교훈적인 연습과 같이 문제를 빠르고 직접적으로 해결하는 것이 우선순위인 경우. 단순성은 종종 코드 디버깅과 테스트를 더 쉽게 만듭니다. ?
개발할 때 이러한 고려 사항 사이의 균형을 찾고 프로젝트나 작업의 특정 요구 사항에 맞게 솔루션을 조정하는 것이 중요합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3