1321 lines
31 KiB
Plaintext
1321 lines
31 KiB
Plaintext
|
https://freecodecamp.org/[image:https://cdn.freecodecamp.org/testable-projects-fcc/images/fcc_secondary.svg[freeCodeCamp]]
|
|||
|
|
|||
|
**Learn Foundational Math 1 by Building an Equation Solver** Each of
|
|||
|
these steps will lead you toward the Certification Project. First you
|
|||
|
have to copy the files and set them up in your Google Drive.
|
|||
|
|
|||
|
== ↓ *Do this first* ↓
|
|||
|
|
|||
|
Make sure you are logged into your Google account, and copy this
|
|||
|
notebook to your own account. Click ``File'' (at the top of this page)
|
|||
|
and then click ``Save a copy in Drive.'' The file will be in a folder
|
|||
|
called ``Colab Notebooks'' in your Google Drive.
|
|||
|
|
|||
|
#Directions - Click to expand the next step Click on the little triangle
|
|||
|
next to the word ``Step'' to do that step. Once you complete a step,
|
|||
|
click the triangle to expand the next step.
|
|||
|
|
|||
|
== Step 0 - Acquire the testing library
|
|||
|
|
|||
|
Please run this code to get the library file from FreeCodeCamp. Each
|
|||
|
step will use this library to test your code. You do not need to edit
|
|||
|
anything; just run this code cell and wait a few seconds until it tells
|
|||
|
you to go on to the next step.
|
|||
|
|
|||
|
|
|||
|
+*In[1]:*+
|
|||
|
[source, ipython3]
|
|||
|
----
|
|||
|
# You may need to run this cell at the beginning of each new session
|
|||
|
|
|||
|
!pip install requests
|
|||
|
|
|||
|
# This will just take a few seconds
|
|||
|
|
|||
|
import requests
|
|||
|
|
|||
|
# Get the library from GitHub
|
|||
|
url = 'https://raw.githubusercontent.com/freeCodeCamp/cdn/main/build/math-cert-tests/math-code-test-a.py'
|
|||
|
r = requests.get(url)
|
|||
|
|
|||
|
# Save the library in a local working directory
|
|||
|
with open('math_code_test_a.py', 'w') as f:
|
|||
|
f.write(r.text)
|
|||
|
|
|||
|
# Now you can import the library
|
|||
|
import math_code_test_a as test
|
|||
|
|
|||
|
# This will tell you if the code works
|
|||
|
test.step19()
|
|||
|
----
|
|||
|
|
|||
|
|
|||
|
+*Out[1]:*+
|
|||
|
----
|
|||
|
Requirement already satisfied: requests in /usr/local/lib/python3.8/dist-packages (2.28.2)
|
|||
|
Requirement already satisfied: certifi>=2017.4.17 in /usr/lib/python3/dist-packages (from requests) (2019.11.28)
|
|||
|
Requirement already satisfied: idna<4,>=2.5 in /usr/lib/python3/dist-packages (from requests) (2.8)
|
|||
|
Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.8/dist-packages (from requests) (3.1.0)
|
|||
|
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/lib/python3/dist-packages (from requests) (1.25.8)
|
|||
|
[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv[0m[33m
|
|||
|
[0m
|
|||
|
[1m[[0m[34;49mnotice[0m[1;39;49m][0m[39;49m A new release of pip is available: [0m[31;49m23.0.1[0m[39;49m -> [0m[32;49m23.1.2[0m
|
|||
|
[1m[[0m[34;49mnotice[0m[1;39;49m][0m[39;49m To update, run: [0m[32;49mpython3 -m pip install --upgrade pip[0m
|
|||
|
|
|||
|
Test passed. You can go on to the next step.
|
|||
|
----
|
|||
|
|
|||
|
== Step 1 - Add
|
|||
|
|
|||
|
To help you get familiar with Colab notebooks, you will start with the
|
|||
|
basics. Python uses `+`, `-`, `*`, and `/` for the four math operations:
|
|||
|
add, subtract, multiply, and divide. When you add two numbers, the
|
|||
|
result is the sum. Use addition within the `print` statement to get the
|
|||
|
sum of `a` and `b`. To run the code, you can hit ``shift'' and ``enter''
|
|||
|
or you can click the run button (the triangle inside a circle).
|
|||
|
|
|||
|
|
|||
|
+*In[2]:*+
|
|||
|
[source, ipython3]
|
|||
|
----
|
|||
|
a=1
|
|||
|
b=2
|
|||
|
|
|||
|
# Change the next line to print the sum of a and b
|
|||
|
print(a+b)
|
|||
|
|
|||
|
|
|||
|
# Only change code above this line
|
|||
|
import math_code_test_a as test
|
|||
|
test.step01(In[-1].split('# Only change code above this line')[0])
|
|||
|
----
|
|||
|
|
|||
|
|
|||
|
+*Out[2]:*+
|
|||
|
----
|
|||
|
3
|
|||
|
|
|||
|
Code test passed
|
|||
|
Go on to the next step
|
|||
|
----
|
|||
|
|
|||
|
== Step 2 - Subtract
|
|||
|
|
|||
|
When you subtract two numbers, the result is the difference. Use
|
|||
|
subtraction in the print statement to get the difference between `c` and
|
|||
|
`d`. Remember to use ``shift'' and ``enter'' to run the code.
|
|||
|
|
|||
|
|
|||
|
+*In[3]:*+
|
|||
|
[source, ipython3]
|
|||
|
----
|
|||
|
c = 7
|
|||
|
d = 3
|
|||
|
|
|||
|
# Change the next line to print the positive difference between c and d
|
|||
|
print(c-d)
|
|||
|
|
|||
|
|
|||
|
# Only change code above this line
|
|||
|
import math_code_test_a as test
|
|||
|
test.step02(In[-1].split('# Only change code above this line')[0])
|
|||
|
----
|
|||
|
|
|||
|
|
|||
|
+*Out[3]:*+
|
|||
|
----
|
|||
|
4
|
|||
|
|
|||
|
Code test passed
|
|||
|
Go on to the next step
|
|||
|
----
|
|||
|
|
|||
|
== Step 3 - Multiply
|
|||
|
|
|||
|
When you multiply numbers, the result is the product. Use multiplication
|
|||
|
within the print statement to get the product of `e` and `f`:
|
|||
|
|
|||
|
|
|||
|
+*In[4]:*+
|
|||
|
[source, ipython3]
|
|||
|
----
|
|||
|
e = 2
|
|||
|
f = 4
|
|||
|
|
|||
|
# Change the next line to print the product of e and f
|
|||
|
print(e*f)
|
|||
|
|
|||
|
|
|||
|
# Only change code above this line
|
|||
|
import math_code_test_a as test
|
|||
|
test.step03(In[-1].split('# Only change code above this line')[0])
|
|||
|
----
|
|||
|
|
|||
|
|
|||
|
+*Out[4]:*+
|
|||
|
----
|
|||
|
8
|
|||
|
|
|||
|
Code test passed
|
|||
|
Go on to the next step
|
|||
|
----
|
|||
|
|
|||
|
== Step 4 - Divide
|
|||
|
|
|||
|
When you divide two numbers, the result is the quotient. Use division
|
|||
|
within the print statement to get the quotient of `g` and `h`:
|
|||
|
|
|||
|
|
|||
|
+*In[5]:*+
|
|||
|
[source, ipython3]
|
|||
|
----
|
|||
|
g = 8
|
|||
|
h = 4
|
|||
|
|
|||
|
# Change the next line
|
|||
|
print(g/h)
|
|||
|
|
|||
|
|
|||
|
# Only change code above this line
|
|||
|
import math_code_test_a as test
|
|||
|
test.step04(In[-1].split('# Only change code above this line')[0])
|
|||
|
----
|
|||
|
|
|||
|
|
|||
|
+*Out[5]:*+
|
|||
|
----
|
|||
|
2.0
|
|||
|
|
|||
|
Code test passed
|
|||
|
Go on to the next step
|
|||
|
----
|
|||
|
|
|||
|
== Step 5 - Cast Input
|
|||
|
|
|||
|
User input comes in as a string, so you need to cast it as an integer or
|
|||
|
a float before doing any math. The code below asks for input and uses
|
|||
|
`int()` to cast it as an integer. Follow the model and cast the second
|
|||
|
variable as an integer. Then run the code an test it. (Remember to hit
|
|||
|
``enter'' after you type each integer in the box.)
|
|||
|
|
|||
|
|
|||
|
+*In[6]:*+
|
|||
|
[source, ipython3]
|
|||
|
----
|
|||
|
strA = input('Enter a positive integer: ')
|
|||
|
intA = int(strA)
|
|||
|
|
|||
|
strB = input('Enter another positive integer: ')
|
|||
|
|
|||
|
# Change the next line but keep the variable name:
|
|||
|
intB = int(strB)
|
|||
|
|
|||
|
|
|||
|
print(intA+intB)
|
|||
|
|
|||
|
|
|||
|
# Only change code above this line
|
|||
|
import math_code_test_a as test
|
|||
|
test.step05(In[-1].split('# Only change code above this line')[0])
|
|||
|
----
|
|||
|
|
|||
|
|
|||
|
+*Out[6]:*+
|
|||
|
----
|
|||
|
Enter a positive integer: 23
|
|||
|
Enter another positive integer: 53
|
|||
|
|
|||
|
76
|
|||
|
|
|||
|
Code test passed
|
|||
|
Go on to the next step
|
|||
|
----
|
|||
|
|
|||
|
#Step 6 - Input and cast on the same line
|
|||
|
|
|||
|
You can prompt for input and cast that input on the same line. Notice
|
|||
|
the nested functions in the first line of code. Follow that model to
|
|||
|
prompt for input and cast that input as an integer on the same line.
|
|||
|
|
|||
|
|
|||
|
+*In[7]:*+
|
|||
|
[source, ipython3]
|
|||
|
----
|
|||
|
intA = int(input('Enter an integer: '))
|
|||
|
|
|||
|
# Change the next line but keep the variable name:
|
|||
|
intB = int(input('Enter an integer: '))
|
|||
|
|
|||
|
|
|||
|
print(intA+intB)
|
|||
|
|
|||
|
|
|||
|
# Only change code above this line
|
|||
|
import math_code_test_a as test
|
|||
|
test.step06(In[-1].split('# Only change code above this line')[0])
|
|||
|
----
|
|||
|
|
|||
|
|
|||
|
+*Out[7]:*+
|
|||
|
----
|
|||
|
Enter an integer: 234
|
|||
|
Enter an integer: 2342
|
|||
|
|
|||
|
2576
|
|||
|
|
|||
|
Code test passed
|
|||
|
Go on to the next step
|
|||
|
----
|
|||
|
|
|||
|
#Step 7 - Float numbers
|
|||
|
|
|||
|
A float number allows decimal places. When prompting for a number as
|
|||
|
input, casting that as a float is usually the best choice. Follow the
|
|||
|
model below to prompt for input and cast that input as a float on the
|
|||
|
same line.
|
|||
|
|
|||
|
|
|||
|
+*In[8]:*+
|
|||
|
[source, ipython3]
|
|||
|
----
|
|||
|
a = float(input('Enter a number: '))
|
|||
|
|
|||
|
# Change the next line but keep the variable name:
|
|||
|
b = float(input('Enter a number: '))
|
|||
|
|
|||
|
|
|||
|
print(a/b)
|
|||
|
|
|||
|
|
|||
|
# Only change code above this line
|
|||
|
import math_code_test_a as test
|
|||
|
test.step07(In[-1].split('# Only change code above this line')[0])
|
|||
|
----
|
|||
|
|
|||
|
|
|||
|
+*Out[8]:*+
|
|||
|
----
|
|||
|
Enter a number: 3431231
|
|||
|
Enter a number: 341413
|
|||
|
|
|||
|
10.050088895267608
|
|||
|
|
|||
|
Code test passed
|
|||
|
Go on to the next step
|
|||
|
----
|
|||
|
|
|||
|
== Step 8 - Order of Operations
|
|||
|
|
|||
|
You may have heard of the order of operations and the acronym PEMDAS,
|
|||
|
which reminds you of the correct order. This means that you do what is
|
|||
|
in Parentheses first, then simplify Exponents. You then do all of the
|
|||
|
Multiplication and Division together, as long as you work from left to
|
|||
|
right and simplify them in order. The same is true of Addition and
|
|||
|
Subtraction: work from left to right and simplify the one the comes up
|
|||
|
next. Python knows the order of operations. In the following code,
|
|||
|
Python will calculate the actual_answer correctly. Notice the use of
|
|||
|
`**` to indicate an exponent. Do the arithmetic in your head (no writing
|
|||
|
code) and change the `your_answer` variable, then run the code to see if
|
|||
|
your_answer matches the actual_answer.
|
|||
|
|
|||
|
|
|||
|
+*In[9]:*+
|
|||
|
[source, ipython3]
|
|||
|
----
|
|||
|
actual_answer = (1+4*2-14/2)**3
|
|||
|
|
|||
|
# Put your answer on the following line:
|
|||
|
your_answer = 8
|
|||
|
|
|||
|
print('Actual answer is ', actual_answer)
|
|||
|
print('Your answer is ', your_answer)
|
|||
|
|
|||
|
|
|||
|
# Only change code above this line
|
|||
|
import math_code_test_a as test
|
|||
|
test.step08(your_answer)
|
|||
|
----
|
|||
|
|
|||
|
|
|||
|
+*Out[9]:*+
|
|||
|
----
|
|||
|
Actual answer is 8.0
|
|||
|
Your answer is 8
|
|||
|
|
|||
|
Code test passed
|
|||
|
Go on to the next step
|
|||
|
----
|
|||
|
|
|||
|
== Step 9 - Remainder and Modulus
|
|||
|
|
|||
|
A remainder is what is left over when you try to divide two numbers and
|
|||
|
it doesn’t divide evenly. The remainder of 10 / 4 is 2 because 4 goes
|
|||
|
into 10 two whole times, with 2 left over. The modulus (`%`) operator
|
|||
|
will output the remainder, so `10 % 4` will return 2. Use the modulus
|
|||
|
operator to find the remainder of a divided by b:
|
|||
|
|
|||
|
|
|||
|
+*In[10]:*+
|
|||
|
[source, ipython3]
|
|||
|
----
|
|||
|
a = 14
|
|||
|
b = 6
|
|||
|
|
|||
|
# Change this line
|
|||
|
print(a%b)
|
|||
|
|
|||
|
|
|||
|
# Only change code above this line
|
|||
|
import math_code_test_a as test
|
|||
|
test.step09(In[-1].split('# Only change code above this line')[0])
|
|||
|
----
|
|||
|
|
|||
|
|
|||
|
+*Out[10]:*+
|
|||
|
----
|
|||
|
2
|
|||
|
|
|||
|
Code test passed
|
|||
|
Go on to the next step
|
|||
|
----
|
|||
|
|
|||
|
== Step 10 - Modulus and Factors
|
|||
|
|
|||
|
Use an `if` statement with the modulus operator to find out if one
|
|||
|
number is a factor of another. For example, to see if 5 is a factor of
|
|||
|
20, you can test `if 20 % 5 == 0`. If there’s no remainder, the second
|
|||
|
number is a factor of the first. Remember that Python comparisons use
|
|||
|
`==` to test values. Remember that the `if` statement ends in a colon
|
|||
|
(`:`) and the resulting block is indented four spaces. Finish the code
|
|||
|
below to print ``true'' if `test_factor` is a factor of `number` and
|
|||
|
print ``false'' if it is not.
|
|||
|
|
|||
|
|
|||
|
+*In[11]:*+
|
|||
|
[source, ipython3]
|
|||
|
----
|
|||
|
number = int(input('Enter an integer: '))
|
|||
|
test_factor = int(input('Enter an integer to see if it’s a factor: '))
|
|||
|
|
|||
|
# Change the next line to test the factor:
|
|||
|
if number % test_factor == 0:
|
|||
|
print('true')
|
|||
|
else:
|
|||
|
print('false')
|
|||
|
|
|||
|
|
|||
|
# Only change code above this line
|
|||
|
import math_code_test_a as test
|
|||
|
test.step10(In[-1].split('# Only change code above this line')[0])
|
|||
|
----
|
|||
|
|
|||
|
|
|||
|
+*Out[11]:*+
|
|||
|
----
|
|||
|
Enter an integer: 23423
|
|||
|
Enter an integer to see if it’s a factor: 234242
|
|||
|
|
|||
|
false
|
|||
|
|
|||
|
Code test passed
|
|||
|
Go on to the next step
|
|||
|
----
|
|||
|
|
|||
|
== Step 11 - Finding Factors
|
|||
|
|
|||
|
Now you will find all of the factors of a number. This code has a loop
|
|||
|
with a variable, `test_factor`, that iterates through a defined range.
|
|||
|
Remember that the first line defining the loop ends in a colon (:) and
|
|||
|
each line in the loop requires a four-space indent. Change the `if`
|
|||
|
statement to find all the factors of `number`.
|
|||
|
|
|||
|
|
|||
|
+*In[12]:*+
|
|||
|
[source, ipython3]
|
|||
|
----
|
|||
|
number = int(input('Enter an integer: '))
|
|||
|
|
|||
|
# Only change the if statement:
|
|||
|
for test_factor in range(1, number+1):
|
|||
|
if number % test_factor == 0:
|
|||
|
print(test_factor)
|
|||
|
|
|||
|
|
|||
|
# Only change code above this line
|
|||
|
import math_code_test_a as test
|
|||
|
test.step11(In[-1].split('# Only change code above this line')[0])
|
|||
|
----
|
|||
|
|
|||
|
|
|||
|
+*Out[12]:*+
|
|||
|
----
|
|||
|
Enter an integer: 441
|
|||
|
|
|||
|
1
|
|||
|
3
|
|||
|
7
|
|||
|
9
|
|||
|
21
|
|||
|
49
|
|||
|
63
|
|||
|
147
|
|||
|
441
|
|||
|
|
|||
|
Code test passed
|
|||
|
Go on to the next step
|
|||
|
----
|
|||
|
|
|||
|
== Step 12 - Prime Numbers
|
|||
|
|
|||
|
A prime number is a number whose only factors are 1 and itself. The
|
|||
|
number 5 is prime because its only factors are 1 and 5, but the 6 is not
|
|||
|
prime because it has 1, 2, 3, and 6 as factors. Any number that is not a
|
|||
|
prime is a composite. For each iteration in the loop, `test_number` will
|
|||
|
be a possible factor. Change the `if` statement so that the code prints
|
|||
|
``composite'' if `number` is not prime.
|
|||
|
|
|||
|
|
|||
|
+*In[13]:*+
|
|||
|
[source, ipython3]
|
|||
|
----
|
|||
|
number = int(input("Enter a positive integer: "))
|
|||
|
|
|||
|
prime_or_comp = "prime"
|
|||
|
|
|||
|
for test_number in range(2,number):
|
|||
|
# Change the if statement to test one factor here:
|
|||
|
if number % test_number == 0:
|
|||
|
prime_or_comp = "composite"
|
|||
|
break
|
|||
|
|
|||
|
print(prime_or_comp)
|
|||
|
|
|||
|
|
|||
|
# Only change code above this line
|
|||
|
import math_code_test_a as test
|
|||
|
test.step12(In[-1].split('# Only change code above this line')[0])
|
|||
|
----
|
|||
|
|
|||
|
|
|||
|
+*Out[13]:*+
|
|||
|
----
|
|||
|
Enter a positive integer: 5345
|
|||
|
|
|||
|
composite
|
|||
|
|
|||
|
Code test passed
|
|||
|
Go on to the next step
|
|||
|
----
|
|||
|
|
|||
|
== Step 13 - Reciprocals
|
|||
|
|
|||
|
A _reciprocal_ is a number ``flipped.'' The reciprocal of
|
|||
|
latexmath:[$\frac{2}{3}$] is latexmath:[$\frac{3}{2}$] and the
|
|||
|
reciprocal of 5 is latexmath:[$\frac{1}{5}$] because whole numbers have
|
|||
|
denominators of 1. You can multiply a number by its reciprocal to get 1,
|
|||
|
so 5 * latexmath:[$\frac{1}{5}$] = 1 and latexmath:[$\frac{2}{3}$] *
|
|||
|
latexmath:[$\frac{3}{2}$] = 1. To get the reciprocal of a number, take 1
|
|||
|
divided by that number. Trying to get the reciprocal of zero will lead
|
|||
|
to a ``divide by zero'' error. Use a print statement to output the
|
|||
|
reciprocal of `n` as a decimal.
|
|||
|
|
|||
|
|
|||
|
+*In[14]:*+
|
|||
|
[source, ipython3]
|
|||
|
----
|
|||
|
n = float(input('Enter a number: '))
|
|||
|
|
|||
|
# Write your code here
|
|||
|
print(1/n)
|
|||
|
|
|||
|
|
|||
|
# Only change code above this line
|
|||
|
import math_code_test_a as test
|
|||
|
test.step13(In[-1].split('# Only change code above this line')[0])
|
|||
|
----
|
|||
|
|
|||
|
|
|||
|
+*Out[14]:*+
|
|||
|
----
|
|||
|
Enter a number: 535
|
|||
|
|
|||
|
0.001869158878504673
|
|||
|
|
|||
|
Code test passed
|
|||
|
Go on to the next step
|
|||
|
----
|
|||
|
|
|||
|
== Step 14 - Splitting input
|
|||
|
|
|||
|
The code below asks for two integers, separated by a comma, then splits
|
|||
|
the input at the comma. Notice the input remains a string, then the
|
|||
|
`split()` function creates an array with two elements. Finish the
|
|||
|
following code to cast the two variables `a` and `b` as `float` numbers,
|
|||
|
then divide the two numbers and print the result.
|
|||
|
|
|||
|
|
|||
|
+*In[15]:*+
|
|||
|
[source, ipython3]
|
|||
|
----
|
|||
|
nums = input('Enter two numbers, separated by a comma: ')
|
|||
|
sp = nums.split(",")
|
|||
|
|
|||
|
# Use the next line as a model:
|
|||
|
a = float(sp[0])
|
|||
|
|
|||
|
# Change the next line to cast the number as a float:
|
|||
|
b = float(sp[1])
|
|||
|
|
|||
|
# Change the print statement:
|
|||
|
print(a/b)
|
|||
|
|
|||
|
|
|||
|
# Only change code above this line
|
|||
|
import math_code_test_a as test
|
|||
|
test.step14(In[-1].split('# Only change code above this line')[0])
|
|||
|
----
|
|||
|
|
|||
|
|
|||
|
+*Out[15]:*+
|
|||
|
----
|
|||
|
Enter two numbers, separated by a comma: 324, 543
|
|||
|
|
|||
|
0.5966850828729282
|
|||
|
|
|||
|
Code test passed
|
|||
|
Go on to the next step
|
|||
|
----
|
|||
|
|
|||
|
== Step 15 - Square Numbers
|
|||
|
|
|||
|
One factor multiplied by itself will produce a square number, so a
|
|||
|
number raised to an exponent of 2 is that number squared (like
|
|||
|
calculating the area of a square). Python uses `**` to indicate
|
|||
|
exponents. Complete the code to print the square of the input.
|
|||
|
|
|||
|
|
|||
|
+*In[16]:*+
|
|||
|
[source, ipython3]
|
|||
|
----
|
|||
|
n = float(input('Enter a number to square: '))
|
|||
|
|
|||
|
# Change this line of code:
|
|||
|
print(n**2)
|
|||
|
|
|||
|
|
|||
|
# Only change code above this line
|
|||
|
import math_code_test_a as test
|
|||
|
test.step15(In[-1].split('# Only change code above this line')[0])
|
|||
|
----
|
|||
|
|
|||
|
|
|||
|
+*Out[16]:*+
|
|||
|
----
|
|||
|
Enter a number to square: 4
|
|||
|
|
|||
|
16.0
|
|||
|
|
|||
|
Code test passed
|
|||
|
Go on to the next step
|
|||
|
----
|
|||
|
|
|||
|
== Step 16 - Square Root Function
|
|||
|
|
|||
|
You can find the square root of a number with the `sqrt()` function. To
|
|||
|
use this function, you need to import the math library. This library
|
|||
|
enables you to use many functions, as you will see in later steps. To
|
|||
|
get the square root of x, you would write `math.sqrt(x)`. Complete the
|
|||
|
code to print the square root of a number.
|
|||
|
|
|||
|
|
|||
|
+*In[17]:*+
|
|||
|
[source, ipython3]
|
|||
|
----
|
|||
|
import math
|
|||
|
|
|||
|
n = float(input('Enter a number to find the square root: '))
|
|||
|
|
|||
|
# Change the next line of code:
|
|||
|
print(math.sqrt(n))
|
|||
|
|
|||
|
|
|||
|
# Only change code above this line
|
|||
|
import math_code_test_a as test
|
|||
|
test.step16(In[-1].split('# Only change code above this line')[0])
|
|||
|
----
|
|||
|
|
|||
|
|
|||
|
+*Out[17]:*+
|
|||
|
----
|
|||
|
Enter a number to find the square root: 25
|
|||
|
|
|||
|
5.0
|
|||
|
|
|||
|
Code test passed
|
|||
|
Go on to the next step
|
|||
|
----
|
|||
|
|
|||
|
== Step 17 - Floor Function
|
|||
|
|
|||
|
The`floor()` function drops any decimals and sometimes is called the
|
|||
|
integer part of a number. Complete the code to print the floor of a
|
|||
|
number. Notice you `import math` and use `math.floor(n)`
|
|||
|
|
|||
|
|
|||
|
+*In[18]:*+
|
|||
|
[source, ipython3]
|
|||
|
----
|
|||
|
import math
|
|||
|
|
|||
|
n = float(input('Enter a number with decimal places: '))
|
|||
|
|
|||
|
# Change the next line of code:
|
|||
|
print(math.floor(n))
|
|||
|
|
|||
|
|
|||
|
# Only change code above this line
|
|||
|
import math_code_test_a as test
|
|||
|
test.step17(In[-1].split('# Only change code above this line')[0])
|
|||
|
----
|
|||
|
|
|||
|
|
|||
|
+*Out[18]:*+
|
|||
|
----
|
|||
|
Enter a number with decimal places: 3.5536363
|
|||
|
|
|||
|
3
|
|||
|
|
|||
|
Code test passed
|
|||
|
Go on to the next step
|
|||
|
----
|
|||
|
|
|||
|
== Step 18 - Finding Square Factors
|
|||
|
|
|||
|
This step will combine a few things you have already done. Remember that
|
|||
|
a square number is an integer that is the result of multiplying another
|
|||
|
integer by itself. Just as you created a loop to find factors of an
|
|||
|
integer, here you will find the greatest factor that is a perfect
|
|||
|
square. For example, 2 is a factor of 16, but 2 is not a square number,
|
|||
|
while 4 is a factor and it is a square number, but it is not the
|
|||
|
greatest square factor. The greatest square factor of 16 is 16. The
|
|||
|
greatest square factor of 32 is 16. Complete `if` statement in the loop
|
|||
|
to find the greatest square factor of a number.
|
|||
|
|
|||
|
|
|||
|
+*In[20]:*+
|
|||
|
[source, ipython3]
|
|||
|
----
|
|||
|
import math
|
|||
|
|
|||
|
n = int(input('Enter an integer to find the greatest square factor: '))
|
|||
|
|
|||
|
max_factor = 1
|
|||
|
upper_limit = math.floor(math.sqrt(n)) + 1
|
|||
|
|
|||
|
# Change one line in this loop:
|
|||
|
for maybe_factor in range(1,upper_limit):
|
|||
|
if n % (maybe_factor**2) == 0:
|
|||
|
max_factor = maybe_factor
|
|||
|
|
|||
|
# Keep this print statement:
|
|||
|
print(max_factor**2)
|
|||
|
|
|||
|
|
|||
|
# Only change code above this line
|
|||
|
import math_code_test_a as test
|
|||
|
test.step18(In[-1].split('# Only change code above this line')[0])
|
|||
|
----
|
|||
|
|
|||
|
|
|||
|
+*Out[20]:*+
|
|||
|
----
|
|||
|
Enter an integer to find the greatest square factor: 32
|
|||
|
|
|||
|
16
|
|||
|
|
|||
|
Code test passed
|
|||
|
Go on to the next step
|
|||
|
----
|
|||
|
|
|||
|
== Step 19 - Dividing out Factors
|
|||
|
|
|||
|
Building upon your code from the previous step, this code will divide
|
|||
|
out the greatest square factor of a number. You don’t need to change
|
|||
|
anything; just run the code below a few times, inputting different
|
|||
|
numbers each time.
|
|||
|
|
|||
|
|
|||
|
+*In[21]:*+
|
|||
|
[source, ipython3]
|
|||
|
----
|
|||
|
import math
|
|||
|
|
|||
|
n = int(input('Enter an integer to factor: '))
|
|||
|
upper_limit = math.floor(math.sqrt(n)) + 1
|
|||
|
square_root = 1
|
|||
|
max_factor = 1
|
|||
|
other_factor = 1
|
|||
|
|
|||
|
# Notice what the loop is doing here
|
|||
|
for maybe_factor in range(1, upper_limit):
|
|||
|
# Check for square factors
|
|||
|
if n % (maybe_factor**2) == 0:
|
|||
|
# Find the greatest square factor
|
|||
|
max_factor = maybe_factor**2
|
|||
|
|
|||
|
# Divide out the greatest square factor
|
|||
|
other_factor = n/max_factor
|
|||
|
|
|||
|
# Display the results
|
|||
|
print("", n, " = ", max_factor, " * ", other_factor)
|
|||
|
|
|||
|
|
|||
|
# Only change code above this line
|
|||
|
import math_code_test_a as test
|
|||
|
test.step19()
|
|||
|
----
|
|||
|
|
|||
|
|
|||
|
+*Out[21]:*+
|
|||
|
----
|
|||
|
Enter an integer to factor: 56
|
|||
|
|
|||
|
56 = 4 * 14.0
|
|||
|
|
|||
|
Test passed. You can go on to the next step.
|
|||
|
----
|
|||
|
|
|||
|
== Step 20 - Factoring Square Roots
|
|||
|
|
|||
|
The last four steps prepared you for this. To factor a square root, you
|
|||
|
want to divide out any perfect square factors. For example:
|
|||
|
latexmath:[$\sqrt{12}$] = latexmath:[$\sqrt{4 * 3}$] =
|
|||
|
2latexmath:[$\sqrt{3}$] Because 4 is a square number, the square root of
|
|||
|
4 is now outside the radical. You will import `sympy` and `symbols` to
|
|||
|
use the radical (latexmath:[$\sqrt{x}$]) in the output. Use the code
|
|||
|
from the previous step (without changing much). Your goal is to ask for
|
|||
|
a number and output the factored square root. The radical formatting
|
|||
|
(using sympy and symbols) is already done for you.
|
|||
|
|
|||
|
|
|||
|
+*In[22]:*+
|
|||
|
[source, ipython3]
|
|||
|
----
|
|||
|
import math
|
|||
|
import sympy
|
|||
|
from sympy import symbols
|
|||
|
|
|||
|
n = int(input('Without the radical, enter a square root to factor: '))
|
|||
|
|
|||
|
# Use these variables
|
|||
|
upper_limit = math.floor(math.sqrt(n)) + 1
|
|||
|
max_factor = 1
|
|||
|
other_factor = 1
|
|||
|
square_root = 1
|
|||
|
|
|||
|
# Notice what the loop is doing here
|
|||
|
for maybe_factor in range(1, upper_limit):
|
|||
|
if n % (maybe_factor**2) == 0:
|
|||
|
max_factor = maybe_factor**2
|
|||
|
|
|||
|
# Divide out the greatest square factor
|
|||
|
other_factor = n/max_factor
|
|||
|
|
|||
|
# Output - keep this:
|
|||
|
square_root = int(math.sqrt(max_factor))
|
|||
|
other_factor = int(other_factor)
|
|||
|
output = square_root*sympy.sqrt(other_factor)
|
|||
|
|
|||
|
|
|||
|
# Only change code above this line
|
|||
|
import math_code_test_a as test
|
|||
|
test.step20()
|
|||
|
output
|
|||
|
----
|
|||
|
|
|||
|
|
|||
|
+*Out[22]:*+
|
|||
|
----
|
|||
|
Without the radical, enter a square root to factor: 32
|
|||
|
|
|||
|
|
|||
|
Test passed. This is this your factored square root:
|
|||
|
|
|||
|
4*sqrt(2)----
|
|||
|
|
|||
|
== Step 21 - Rounding
|
|||
|
|
|||
|
If you only want a certain number of decimal places, use the `round()`
|
|||
|
function. This takes two arguments: the number to round and the number
|
|||
|
of decimal places, so `round(2.468, 2)` will return `2.47`. To round a
|
|||
|
large number instead of a decimal number, make the second argument
|
|||
|
negative, so `round(2345, -3)` will return `2000`. Finish the code below
|
|||
|
so that it prints the first number rounded to the nearest million (six
|
|||
|
zeros) and the second number rounded to 3 decimal places.
|
|||
|
|
|||
|
|
|||
|
+*In[23]:*+
|
|||
|
[source, ipython3]
|
|||
|
----
|
|||
|
a = 14588132
|
|||
|
b = 0.006538298336
|
|||
|
|
|||
|
# Write your code here
|
|||
|
print(round(a, -6))
|
|||
|
print(round(b, 3))
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# Only change code above this line
|
|||
|
import math_code_test_a as test
|
|||
|
test.step21(In[-1].split('# Only change code above this line')[0])
|
|||
|
----
|
|||
|
|
|||
|
|
|||
|
+*Out[23]:*+
|
|||
|
----
|
|||
|
15000000
|
|||
|
0.007
|
|||
|
|
|||
|
Code test passed
|
|||
|
Go on to the next step
|
|||
|
----
|
|||
|
|
|||
|
== Step 22 - Fractions, Decimals, Percents
|
|||
|
|
|||
|
To convert a decimal number to a fraction, let latexmath:[$x$] = the
|
|||
|
number of decimal places. The basic fraction is the number (without the
|
|||
|
decimal point) over 10latexmath:[$^{x}$]. Example: 0.2 =
|
|||
|
latexmath:[$\frac{2}{10}$] and 0.34 = latexmath:[$\frac{34}{100}$] and
|
|||
|
0.567 = latexmath:[$\frac{567}{1000}$]. In some cases, you may be able
|
|||
|
to reduce that fraction. Because ``percent'' means ``out of 100'' the
|
|||
|
percent refers to the first two decimal places. Complete the code to ask
|
|||
|
for a decimal input, then print the fraction and the percent. Hint: The
|
|||
|
`exponent` variable gives you the number of decimal places.
|
|||
|
|
|||
|
|
|||
|
+*In[24]:*+
|
|||
|
[source, ipython3]
|
|||
|
----
|
|||
|
import math
|
|||
|
|
|||
|
digits = input("Enter a decimal number to convert: ")
|
|||
|
exponent = int(len(digits))-1
|
|||
|
n = float(digits)
|
|||
|
|
|||
|
# Change the values of these three variables
|
|||
|
numerator = int(n*10**exponent)
|
|||
|
denominator = 10**exponent
|
|||
|
percent = (numerator/denominator)*100
|
|||
|
|
|||
|
# Output - keep this
|
|||
|
print("The decimal is ", n)
|
|||
|
print("The fraction is ", numerator, "/", denominator)
|
|||
|
print("The percent is ", percent, " %")
|
|||
|
|
|||
|
|
|||
|
# Only change code above this line
|
|||
|
import math_code_test_a as test
|
|||
|
test.step22(n,numerator,denominator,percent,exponent)
|
|||
|
----
|
|||
|
|
|||
|
|
|||
|
+*Out[24]:*+
|
|||
|
----
|
|||
|
Enter a decimal number to convert: .3242
|
|||
|
|
|||
|
The decimal is 0.3242
|
|||
|
The fraction is 3242 / 10000
|
|||
|
The percent is 32.42 %
|
|||
|
|
|||
|
Code test passed
|
|||
|
Go on to the next step
|
|||
|
----
|
|||
|
|
|||
|
== Step 23 - Defining a Function
|
|||
|
|
|||
|
To execute a block of code with one command, define a function with the
|
|||
|
`def` command and the name of the function. Notice everything in the
|
|||
|
function is indented 4 spaces. Run the following code to see an example.
|
|||
|
Then change the function name to `fun()` and also change the name where
|
|||
|
you call the function. Run the code again.
|
|||
|
|
|||
|
|
|||
|
+*In[25]:*+
|
|||
|
[source, ipython3]
|
|||
|
----
|
|||
|
# Define a function
|
|||
|
def fun():
|
|||
|
print("This is in the function")
|
|||
|
|
|||
|
# Other code not in the function
|
|||
|
print("This is outside the function")
|
|||
|
|
|||
|
# Call the function
|
|||
|
fun()
|
|||
|
|
|||
|
print("Back outside the function")
|
|||
|
|
|||
|
# Only change code above this line
|
|||
|
import math_code_test_a as test
|
|||
|
test.step23(In[-1].split('# Only change code above this line')[0])
|
|||
|
----
|
|||
|
|
|||
|
|
|||
|
+*Out[25]:*+
|
|||
|
----
|
|||
|
This is outside the function
|
|||
|
This is in the function
|
|||
|
Back outside the function
|
|||
|
|
|||
|
Code test passed
|
|||
|
Go on to the next step
|
|||
|
----
|
|||
|
|
|||
|
== Step 24 - Function with Input
|
|||
|
|
|||
|
A function can take input (called an ``argument'') and do something with
|
|||
|
that input. Use `def` to define the function, and include a variable in
|
|||
|
the parentheses to represent the argument. Indent everything that is a
|
|||
|
part of the function. When calling the function, pass the argument to it
|
|||
|
in the parentheses. Run the following code to see this example. Then
|
|||
|
change the `input()` variable name to `nombre` and also change that
|
|||
|
variable name in the argument when you call the function. Run the code
|
|||
|
again.
|
|||
|
|
|||
|
|
|||
|
+*In[26]:*+
|
|||
|
[source, ipython3]
|
|||
|
----
|
|||
|
# Define a function
|
|||
|
def greeting(name):
|
|||
|
print("Hello ", name)
|
|||
|
|
|||
|
nombre = input("What is your name? \n")
|
|||
|
|
|||
|
# Call the function
|
|||
|
greeting(nombre)
|
|||
|
|
|||
|
# Only change code above this line
|
|||
|
import math_code_test_a as test
|
|||
|
test.step24(In[-1].split('# Only change code above this line')[0])
|
|||
|
----
|
|||
|
|
|||
|
|
|||
|
+*Out[26]:*+
|
|||
|
----
|
|||
|
What is your name?
|
|||
|
Python
|
|||
|
|
|||
|
Hello Python
|
|||
|
|
|||
|
Code test passed
|
|||
|
You can go on to the next step
|
|||
|
----
|
|||
|
|
|||
|
== Step 25 - Function with Two Inputs
|
|||
|
|
|||
|
To pass more than one argument to a function, separate the arguments
|
|||
|
with commas. Run the code to see the example, then add a third argument
|
|||
|
to the function and run it again. The `third` variable is already in the
|
|||
|
code. Change three lines of code to use that variable: (1) the argument
|
|||
|
when you call the function, (2) the argument when you define the
|
|||
|
function, (3) the `sum` line within in the function definition.
|
|||
|
|
|||
|
|
|||
|
+*In[50]:*+
|
|||
|
[source, ipython3]
|
|||
|
----
|
|||
|
# Define function
|
|||
|
def add(a,b, c):
|
|||
|
# Use c for the third variable
|
|||
|
sum = a+b+c
|
|||
|
print("The sum is ", sum)
|
|||
|
|
|||
|
first = float(input("Enter a number: \n"))
|
|||
|
second= float(input("Enter another number: \n"))
|
|||
|
third = 3
|
|||
|
|
|||
|
# Call the function
|
|||
|
add(first,second, third)
|
|||
|
|
|||
|
# Only change code above this line
|
|||
|
import math_code_test_a as test
|
|||
|
test.step25(In[-1].split('# Only change code above this line')[0])
|
|||
|
----
|
|||
|
|
|||
|
|
|||
|
+*Out[50]:*+
|
|||
|
----
|
|||
|
Enter a number:
|
|||
|
231
|
|||
|
Enter another number:
|
|||
|
321
|
|||
|
|
|||
|
The sum is 555.0
|
|||
|
|
|||
|
Code test passed
|
|||
|
You can go on to the next step
|
|||
|
----
|
|||
|
|
|||
|
== Step 26 - Function with Return Value
|
|||
|
|
|||
|
Instead of including a `print()` statement within the function, the
|
|||
|
function can `return` a value right where you call it. To make the
|
|||
|
function return a value, use the `return` statement. Run the following
|
|||
|
code to see an example, then change the `return` statement to multiply
|
|||
|
by 3 instead of 2 and run the code again.
|
|||
|
|
|||
|
|
|||
|
+*In[52]:*+
|
|||
|
[source, ipython3]
|
|||
|
----
|
|||
|
# define the function
|
|||
|
def multiplied(number):
|
|||
|
return number*3
|
|||
|
|
|||
|
a = float(input("Enter a number: \n"))
|
|||
|
print("Your number multiplied = ", multiplied(a))
|
|||
|
|
|||
|
|
|||
|
# Only change code above this line
|
|||
|
import math_code_test_a as test
|
|||
|
test.step26(In[-1].split('# Only change code above this line')[0])
|
|||
|
----
|
|||
|
|
|||
|
|
|||
|
+*Out[52]:*+
|
|||
|
----
|
|||
|
Enter a number:
|
|||
|
322
|
|||
|
|
|||
|
Your number multiplied = 966.0
|
|||
|
|
|||
|
Code test passed
|
|||
|
You can go on to the next step
|
|||
|
----
|
|||
|
|
|||
|
== Step 27 - Solving for x
|
|||
|
|
|||
|
In Algebra, `X` often refers to the unknown number in an equation. To
|
|||
|
find the value of `x` we use algebra rules to get to `x =` [some
|
|||
|
number]. SymPy is a Python library to work with symbolic math. The
|
|||
|
following code works to solve an equation set equal to zero. Run the
|
|||
|
code and remember to use Python syntax to enter an equation (with ``x''
|
|||
|
as the variable) and see the solution.
|
|||
|
|
|||
|
|
|||
|
+*In[54]:*+
|
|||
|
[source, ipython3]
|
|||
|
----
|
|||
|
import sympy
|
|||
|
from sympy import symbols
|
|||
|
from sympy.solvers import solve
|
|||
|
|
|||
|
x = symbols('x')
|
|||
|
|
|||
|
eq = input('Enter an equation to solve for x: 0 = ')
|
|||
|
print(len(solve(eq,x)))
|
|||
|
print("x = ", solve(eq,x)[0])
|
|||
|
|
|||
|
|
|||
|
# Only change code above this line
|
|||
|
import math_code_test_a as test
|
|||
|
test.step27(In[-1].split('# Only change code above this line')[0])
|
|||
|
|
|||
|
----
|
|||
|
|
|||
|
|
|||
|
+*Out[54]:*+
|
|||
|
----
|
|||
|
Enter an equation to solve for x: 0 = 23*x**2 + 32*x + 2342
|
|||
|
|
|||
|
2
|
|||
|
x = -16/23 - sqrt(53610)*I/23
|
|||
|
If you didn't get a syntax error, you are ready for the project
|
|||
|
----
|
|||
|
|
|||
|
== Step 28 - Make your own Functions
|
|||
|
|
|||
|
Building upon what you did in previous steps, define a different
|
|||
|
function for each of the following:
|
|||
|
|
|||
|
Add, subtract, multiply, divide
|
|||
|
|
|||
|
Detect prime numbers
|
|||
|
|
|||
|
Generate prime factors of a number
|
|||
|
|
|||
|
Simplify square roots
|
|||
|
|
|||
|
Solve for a variable
|
|||
|
|
|||
|
Each function should prompt the user with a question, take input, and
|
|||
|
output the answer.
|
|||
|
|
|||
|
|
|||
|
+*In[27]:*+
|
|||
|
[source, ipython3]
|
|||
|
----
|
|||
|
# Write your code here
|
|||
|
import re
|
|||
|
import sympy
|
|||
|
from sympy import symbols
|
|||
|
from sympy.solvers import solve
|
|||
|
|
|||
|
def arithematic():
|
|||
|
print("Enter an equation comprising only of numbers seprated by aithematic operators:")
|
|||
|
eq = input()
|
|||
|
if (re.search("^(\s?[0-9]+\s?[+-\\\*]\s?)+[0-9]+$", eq)):
|
|||
|
result = eval(eq)
|
|||
|
print(f'{eq} = {result}')
|
|||
|
else:
|
|||
|
print("Error: equation is not in accepted format")
|
|||
|
|
|||
|
def get_smallest_prime_factor(num):
|
|||
|
if (num % 2 == 0 and num != 2):
|
|||
|
return 2
|
|||
|
|
|||
|
for i in range(3, int(num/2)+1, 2):
|
|||
|
if num % i == 0:
|
|||
|
return i
|
|||
|
|
|||
|
return 1
|
|||
|
|
|||
|
def is_prime():
|
|||
|
try:
|
|||
|
num = int(input("Type a natural number to test if it a prime number:"))
|
|||
|
except Exception as e:
|
|||
|
print("Error:", e)
|
|||
|
return
|
|||
|
|
|||
|
smallest_prime_factor = get_smallest_prime_factor(num)
|
|||
|
if (smallest_prime_factor == 1):
|
|||
|
print(f"{num} is a prime number.")
|
|||
|
else:
|
|||
|
print(f"{num} is not a prime number and is divisible by {smallest_prime_factor}")
|
|||
|
|
|||
|
def prime_factorization():
|
|||
|
try:
|
|||
|
num = int(input("Type a natural number to find it's prime factors:"))
|
|||
|
except Exception as e:
|
|||
|
print("Error:", e)
|
|||
|
|
|||
|
factors = []
|
|||
|
new_num = num
|
|||
|
while True:
|
|||
|
factor = get_smallest_prime_factor(new_num)
|
|||
|
if (factor == 1):
|
|||
|
factors.append(int(new_num))
|
|||
|
break
|
|||
|
else:
|
|||
|
factors.append(factor)
|
|||
|
new_num /= factor
|
|||
|
print(f"Prime factors of {num} are:")
|
|||
|
print(' x '.join([str(n) for n in factors]))
|
|||
|
|
|||
|
def simplify_sqrt():
|
|||
|
try:
|
|||
|
sqrt = int(input("Input a radical/square root number (without symbol) to find it's simplified form:"))
|
|||
|
except Exception as e:
|
|||
|
print("Error:", e)
|
|||
|
return
|
|||
|
|
|||
|
maybe_factor = 2
|
|||
|
max_factor = 1
|
|||
|
while (maybe_factor**2 <= sqrt):
|
|||
|
if (sqrt % maybe_factor**2 == 0):
|
|||
|
max_factor = maybe_factor
|
|||
|
maybe_factor += 1
|
|||
|
return max_factor*sympy.sqrt(int(sqrt/max_factor**2))
|
|||
|
|
|||
|
def solve_for_x():
|
|||
|
try:
|
|||
|
eq = input("Type an equation to solve for x. 0 = ")
|
|||
|
x = symbols("x")
|
|||
|
solutions = solve(eq, x)
|
|||
|
for s in solutions:
|
|||
|
print("x =", s)
|
|||
|
except BaseException as e:
|
|||
|
print(f"Error: {e}")
|
|||
|
|
|||
|
# This step does not have test
|
|||
|
----
|
|||
|
|
|||
|
== Step 29 - Create a Menu
|
|||
|
|
|||
|
Use print statements to create a menu that displays a numbered list of
|
|||
|
options. Then prompt for user input to choose an option. Use an `if`
|
|||
|
statement to print a different message for each option in the menu.
|
|||
|
|
|||
|
|
|||
|
+*In[28]:*+
|
|||
|
[source, ipython3]
|
|||
|
----
|
|||
|
# Write your code here
|
|||
|
from IPython.display import display
|
|||
|
|
|||
|
options = [("Simple calculations", arithematic),
|
|||
|
("Check if a number is prime", is_prime),
|
|||
|
("Prime factorize a number", prime_factorization),
|
|||
|
("Find simplified form of a square root", simplify_sqrt),
|
|||
|
("Solve an euqation for X", solve_for_x)]
|
|||
|
|
|||
|
def print_menu():
|
|||
|
print("What would you like to do?")
|
|||
|
for i in range(len(options)):
|
|||
|
print(f"{i+1}: {options[i][0]}")
|
|||
|
|
|||
|
# This step does not have test
|
|||
|
----
|
|||
|
|
|||
|
== Step 30 - Certification Project 1
|
|||
|
|
|||
|
Now put it all together to build a multi-function calculator. Use the
|
|||
|
menu and the functions you created in the previous steps. Define one
|
|||
|
more function of your own. Create the menu so that the user input will
|
|||
|
run a function.
|
|||
|
|
|||
|
|
|||
|
+*In[29]:*+
|
|||
|
[source, ipython3]
|
|||
|
----
|
|||
|
# Write your code here
|
|||
|
|
|||
|
print_menu()
|
|||
|
|
|||
|
try:
|
|||
|
selected = int(input())
|
|||
|
except BaseException as e:
|
|||
|
print("Error:", e)
|
|||
|
if selected < 1 or selected > len(options):
|
|||
|
print("Error: Invalid option selected")
|
|||
|
elif selected == 4: # for pretty printing sqrt symbol
|
|||
|
display(options[selected-1][1]())
|
|||
|
else:
|
|||
|
options[selected-1][1]()
|
|||
|
|
|||
|
# This step does not have test
|
|||
|
----
|
|||
|
|
|||
|
|
|||
|
+*Out[29]:*+
|
|||
|
----
|
|||
|
What would you like to do?
|
|||
|
1: Simple calculations
|
|||
|
2: Check if a number is prime
|
|||
|
3: Prime factorize a number
|
|||
|
4: Find simplified form of a square root
|
|||
|
5: Solve an euqation for X
|
|||
|
|
|||
|
4
|
|||
|
Input a radical/square root number (without symbol) to find it's simplified form: 32
|
|||
|
4*sqrt(2)----
|
|||
|
|
|||
|
|
|||
|
+*In[ ]:*+
|
|||
|
[source, ipython3]
|
|||
|
----
|
|||
|
|
|||
|
----
|