P ython p rogramming e xercises



Yüklə 1,51 Mb.
Pdf görüntüsü
səhifə100/124
tarix14.05.2023
ölçüsü1,51 Mb.
#113537
1   ...   96   97   98   99   100   101   102   103   ...   124
PythonProgrammingExercisesGentlyExplained

Solution Design 
The function only needs a variable to keep track of the current number, which we can call num
and a variable to hold the sequence of values, which we can call sequence. At the start of the 
function, set num to the integer in startingNumber parameter and sequence to [num]. We can 
use a while loop that continues to loop as long as the num is not 1. On each iteration of the loop
the next value for num is calculated based on whether num is currently odd or even. You can use the 
modulo 2 technique from Exercise #3, ―Odd & Even‖ to determine this: if num % 2 evaluates to 0 
then num is even and if it evaluates to 1 then num is odd. After this, append num to the end of the 
sequence
list. 
If num is exactly 1, then the while loop stops looping and the function can return sequence. 
Special Cases and Gotchas 
The only special case is if the startingNumber parameter is less than 1, in which case there is 
no sequence and the function should return an empty list []. 
Now try to write a solution based on the information in the previous sections. If you still have 
trouble solving this exercise, read the Solution Template section for additional hints. 
Solution Template 
Try to first write a solution from scratch. But if you have difficulty, you can use the following 
partial program as a starting place. Copy the following code from https://invpy.com/collatzsequence-
template.py and paste it into your code editor. Replace the underscores with code to make a working 
program: 
def collatz(startingNumber): 
# If the starting number is 0 or negative, return an empty list: 
if ____ < 1: 
return ____ 
# Create a list to hold the sequence, beginning with the starting number: 
sequence = [____] 
num = ____ 
# Keep looping until the current number is 1: 


Python Programming Exercises, Gently Explained 
122 
while num ____ 1: 
# If odd, the next number is 3 times the current number plus 1: 
if num % 2 == ____: 
num = 3 * num + 1 
# If even, the next number is half the current number: 
else: 
num = num // ____ 
# Record the number in the sequence list: 
sequence.append(____) 
# Return the sequence of numbers: 
return ____ 
The complete solution for this exercise is given in Appendix A and 
https://invpy.com/collatzsequence.py. You can view each step of this program as it runs under a debugger 
at https://invpy.com/collatzsequence-debug/

Yüklə 1,51 Mb.

Dostları ilə paylaş:
1   ...   96   97   98   99   100   101   102   103   ...   124




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin