Home Backend Development Python Tutorial Logic and programming exercises (solutions): Approaches and Optimization

Logic and programming exercises (solutions): Approaches and Optimization

Aug 21, 2024 am 06:09 AM

Ejercicios de logica y programacion (oluciones): Enfoques y Optimización

Given this exercise: (from codewars.com)

Create a function that returns the square of each digit of a number.

For example, when entering the function the number 702 should return 4904, since the square of 7 is 49, the square of 0 is 0 and the square of 2 is 4. If the function receives a zero it must return 0.

The underlying challenge of this exercise is to go through an integer digit by digit and return a result as another integer.

Like everything in programming, it is possible to solve this exercise in many ways. First, let's solve it using number manipulation properties in Python, then I will explain another more advanced way?.

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)
Copy after login

In this code, we first evaluate whether a 0 is received to return a 0, as indicated in the statement. Then, we initialize the result variable as an empty string, create a while loop with the condition num > 0. We define the variable num_sqr, which is the square of each digit received. With num % 10 we obtain the last digit of the number received and then square it with **2.

  • Using num % 10 is a common method of extracting the last digit of a number.

  • The expression num = num // 10 eliminates the last digit of the number, advancing each digit.

Another way to solve it is to convert the number into a string and loop through this string with a for loop:

def square_digits(num):
    result = ""
    for digit in str(num):
        result += str(int(digit)**2)
    return int(result)
Copy after login

This code is more optimal, it has fewer lines and the traversal is very well understood, in addition to the fact that it is not necessary to evaluate if it receives a 0. In Python it is possible to traverse a string character by character with a for loop. We use this functionality to loop through the received number, converting it with str(num) to a string. We create the variable result as an empty string, to which a character will be concatenated that is the result of digit converted to an integer and raised to 2, all converted to a string. Then, we return the result converted to an integer.

  • Concatenating strings within a loop may be less performance efficient for very large numbers, but is perfectly acceptable for most use cases.

*A more advanced and "elegant" way * is using Understanding Generators and the .join motodo. I present the code to you first and we will break it down explaining these terms.

def square_digits(num):
    return int(''.join(str(int(digit)**2) for digit in str(num)))
Copy after login

This first code is not very readable if you don't know the concepts
that make it up.

The expression str(int(digit)**2) for digit in str(num) is a _generator _(Generator Expression) that iterates over each digit in the string representation of the number num.
For each digit, it converts it to an integer (int(digit)), squares it (**2), and then converts it back to a string (str(...)). Then, with ''.join(...), you take a sequence (in this case, the generator) and concatenate all the elements into a single string. Here, all the square digits are combined into a single string without any separator (because the string between the single quotes is empty '').

As we see, the different ways of solving an exercise demonstrate the levels of knowledge in a language. All solutions are correct if they pass the tests, but some are more efficient and readable than others. The choice of approach depends on the context and what is prioritized in each case:

  • Readability: It is crucial when other developers are going to read and maintain your code. Clear, easy-to-understand code reduces the chance of errors and makes it easier to maintain. ?

  • Efficiency: Matters when working with large volumes of data or in applications where performance is critical. More optimized code can make a big difference in speed and resource consumption. ?

  • Simplicity: For cases where the priority is to solve the problem quickly and directly, such as in prototypes or didactic exercises. Simplicity often makes code debugging and testing easier. ?

When developing, it is important to find a balance between these considerations, adapting the solution to the specific needs of the project or task.

The above is the detailed content of Logic and programming exercises (solutions): Approaches and Optimization. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Roblox: Bubble Gum Simulator Infinity - How To Get And Use Royal Keys
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusion System, Explained
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1664
14
PHP Tutorial
1268
29
C# Tutorial
1248
24
Python vs. C  : Applications and Use Cases Compared Python vs. C : Applications and Use Cases Compared Apr 12, 2025 am 12:01 AM

Python is suitable for data science, web development and automation tasks, while C is suitable for system programming, game development and embedded systems. Python is known for its simplicity and powerful ecosystem, while C is known for its high performance and underlying control capabilities.

Python: Games, GUIs, and More Python: Games, GUIs, and More Apr 13, 2025 am 12:14 AM

Python excels in gaming and GUI development. 1) Game development uses Pygame, providing drawing, audio and other functions, which are suitable for creating 2D games. 2) GUI development can choose Tkinter or PyQt. Tkinter is simple and easy to use, PyQt has rich functions and is suitable for professional development.

The 2-Hour Python Plan: A Realistic Approach The 2-Hour Python Plan: A Realistic Approach Apr 11, 2025 am 12:04 AM

You can learn basic programming concepts and skills of Python within 2 hours. 1. Learn variables and data types, 2. Master control flow (conditional statements and loops), 3. Understand the definition and use of functions, 4. Quickly get started with Python programming through simple examples and code snippets.

Python vs. C  : Learning Curves and Ease of Use Python vs. C : Learning Curves and Ease of Use Apr 19, 2025 am 12:20 AM

Python is easier to learn and use, while C is more powerful but complex. 1. Python syntax is concise and suitable for beginners. Dynamic typing and automatic memory management make it easy to use, but may cause runtime errors. 2.C provides low-level control and advanced features, suitable for high-performance applications, but has a high learning threshold and requires manual memory and type safety management.

Python and Time: Making the Most of Your Study Time Python and Time: Making the Most of Your Study Time Apr 14, 2025 am 12:02 AM

To maximize the efficiency of learning Python in a limited time, you can use Python's datetime, time, and schedule modules. 1. The datetime module is used to record and plan learning time. 2. The time module helps to set study and rest time. 3. The schedule module automatically arranges weekly learning tasks.

Python vs. C  : Exploring Performance and Efficiency Python vs. C : Exploring Performance and Efficiency Apr 18, 2025 am 12:20 AM

Python is better than C in development efficiency, but C is higher in execution performance. 1. Python's concise syntax and rich libraries improve development efficiency. 2.C's compilation-type characteristics and hardware control improve execution performance. When making a choice, you need to weigh the development speed and execution efficiency based on project needs.

Python: Automation, Scripting, and Task Management Python: Automation, Scripting, and Task Management Apr 16, 2025 am 12:14 AM

Python excels in automation, scripting, and task management. 1) Automation: File backup is realized through standard libraries such as os and shutil. 2) Script writing: Use the psutil library to monitor system resources. 3) Task management: Use the schedule library to schedule tasks. Python's ease of use and rich library support makes it the preferred tool in these areas.

Learning Python: Is 2 Hours of Daily Study Sufficient? Learning Python: Is 2 Hours of Daily Study Sufficient? Apr 18, 2025 am 12:22 AM

Is it enough to learn Python for two hours a day? It depends on your goals and learning methods. 1) Develop a clear learning plan, 2) Select appropriate learning resources and methods, 3) Practice and review and consolidate hands-on practice and review and consolidate, and you can gradually master the basic knowledge and advanced functions of Python during this period.

See all articles