Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Sumário  
  
1 Theory: Integer arithmetic 3  
1.1 Basic operations 4  
1.2 Writing complex expressions 4  
1.3 Other operations 4  
1.4 Operation priority 5  
1.5 PEP time! 5  
1.6 Practice 6  
1.6.1 Factorial of 3 6  
1.6.2 Adding together 6  
1.6.3 Division by zero 6  
1.6.4 Raise to power 6  
1.6.5 Calculate it 7  
1.6.6 A simple expression 7  
1.6.7 All operations 7  
1.6.8 Calculate a remainder 7  
1.6.9 An odd operation 7  
1.6.10 Let's do some math 7  
1.6.11 A complex expression 8  
1.6.12 Square root 8  
1.6.13 The power 9  
1.6.14 Priority order 9  
2 Theory : Naming variables 9  
2.1 Code style convention 9  
2.2 Other variable names best practices 10  
2.3 Conclusion 10  
2.4 Practice 10  
2.4.1 The best name 10  
2.4.2 Number of people in the class 10  
2.4.3 Good names 11  
2.4.4 Zeros and ones 11  
2.4.5 Character set 11  
2.4.6 The first char 11  
2.4.7 Why to name variables? 11  
2.4.8 A good style guide 11  
2.4.9 This is Python 11  
2.4.10 How to name a variable? 12  
2.4.11 Everest 12  
2.4.12 Fix str 12  
3 Theory: Program with numbers 12  
3.1 Reading numbers from user input 12  
3.2 Free air miles 13  
3.3 Advanced forms of assignment 13  
  
3.4 Counter variable 14  
3.5 Conclusion 14  
3.6 Practice 14  
3.6.1 Bad omen 14  
3.6.2 Undercover 15  
3.6.3 When you'll have a free trip? 15  
3.6.4 Calculating an expression 15  
3.6.5 The last digit of a number 15  
3.6.6 Divide nuts equally between squirrels 16  
3.6.7 The first digit of a two-digit number 17  
3.6.8 Savings account 17  
3.6.9 Good rest on vacation 17  
3.6.10 The sum of digits 18  
3.6.11 Desks 19  
4 Theory: Boolean logic 19  
4.1 Boolean type 19  
4.2 Boolean operations 20  
4.3 The precedence of boolean operations 20  
4.4 Truthy and falsy values 20  
4.5 Short-circuit evaluation 21  
4.6 Practice: 21  
4.6.1 Exclusive or 22  
5 Theory: Comparisons 23  
5.1 Comparison operators 23  
5.2 Comparing integers 24  
5.3 Comparison chaining 24  
5.4 Practice 24  
5.4.1 Carry on! 24  
5.4.2 Matchmaker 25  
5.4.3 Discount 25  
5.4.4 Focus on the positive 25  
5.4.5 Enrolling 26  
5.4.6 True test 27  
5.4.7 In the middle 27  
5.4.8 Very odd 27  
5.4.9 Guessing game 28  
5.4.10 Movie theater 29  
5.4.11 Order! 30  
5.4.12 Operator 31  
5.4.13 Program with numbers: The last digit of a number 31  
6 Theory: If statement 31  
6.1 Simple if statement 32  
6.2 Nested if statement 32  
  
  
STAGE 4 
What you'll do in this stage 4/4: Sustainable care <3  
Project:  Zookeeper  
Topics you need to learn in order to complete the current stage:  
  
1. Integer arithmetic  
  
2. Naming variables  
  
3. Program with numbers  
  
4. Boolean logic  
  
5. Comparisons  
  
6. If statement  
  
7. While loop  
  
Use the material from these topics and the skills you’ve learned to successfully complete this stage of                                  
the project.  
You will be working on the following in this project stage  
Finally, your program is able to work for as long as needed!  
Description  
Now it's time to make our project user-friendly. In this final stage, you'll make your software ready for the                                      
zoo staff to use. Your program should understand the habitat numbers, show the animals, and be able to                                    
work continuously without having to be restarted.  
Objectives  
Your tasks at this point:  
Your program should repeat the behavior from the previous stage, but now in a loop.  
Do not forget to include an exit opportunity: inputting  exit  should end the program.  
When the program is done running, it should print:  See you later!  
  
  
  
1 Theory: Integer arithmetic  
  
In real life, we often perform arithmetic operations. They help us to calculate the change from a                                  
purchase, determine the area of a room, count the number of people in a line, and so on. The same                                        
operations are used in programs.  
https://hyperskill.org/projects/98
https://hyperskill.org/projects/98/stages/542/preview
https://hyperskill.org/projects/98/stages/542/preview
https://hyperskill.org/projects/98/stages/542/preview
https://hyperskill.org/projects/98/stages/542/preview
https://hyperskill.org/projects/98/stages/542/preview
https://hyperskill.org/projects/98/stages/542/preview
https://hyperskill.org/projects/98/stages/542/preview
https://hyperskill.org/projects/98/stages/542/preview
https://hyperskill.org/projects/98/stages/542/preview
  
1.1 Basic operations  
  
Python supports basic arithmetic operations:  
addition +  
subtraction -  
multiplication   *  
division   /  
integer division //  
  
The examples below show how it works for numbers.  
print (10 + 10) # 20 
print (100 - 10) # 90 
print (10 * 10) # 100 
print (77 / 10) # 7.7 
print (77 // 10) # 7 
  
There is a difference between division / and integer division //. The first produces a floating-point                                
number (like 7.7), while the second one produces an integer value (like 7) ignoring the decimal part.  
Python raises an error if you try to divide by zero.  
ZeroDivisionError: division by zero 
  
1.2 Writing complex expressions  
Arithmetic operations can be combined to write more complex expressions:  
print (2 + 2 * 2) # 6 
The calculation order coincides with the rules of arithmetic operations. Multiplication has a higher                            
priority level than addition and subtraction, so the operation 2 * 2 is calculated first.  
To specify an order of execution, you can use parentheses, as in the following:  
print ((2 + 2) * 2) # 8 
Like in arithmetic, parentheses can be nested inside each other. You can also use them for clarity.  
The minus operator has a unary form that negates the value or expression. A positive number becomes                                  
negative, and a negative number becomes positive.  
print (-10) # -10 
print (-(100 + 200)) # -300 
print (-(-20)) # 20 
1.3 Other operations  
The remainder of a division. Python modulo operator % is used to get the remainder of a division. It may                                        
come in handy when you want to check if a number is even. Applied to 2, it returns 1 for odd numbers                                            
and 0 for the even ones.  
print (7 % 2) # 1, because 7 is an odd number 
print (8 % 2) # 0, because 8 is an even number 
Here are some more examples:  
# Divide the number by itself  
print (4 % 4)# 0 
# At least one number is a float  
print (11 % 6.0) # 5.0 
  
# The first number is less than the divisor  
print (55 % 77) # 55 
# With negative numbers, it preserves the divisor sign  
print (-11 % 5) # 4 
print (11 % -5) # -4 
Taking the remainder of the division by 0 also leads to ZeroDivisionError. 
  
The behavior of the mod function in Python might seem unexpected at first glance. While 11 % 5 = 1                               
and -11 % -5 = -1 when both numbers on the left are of the same sign, 11 % -5 = -4 and -11 %                             
5 = 4 if we have one negative number.   
The thing is, in Python, the remainder always has the same sign as the divisor.  
  
In the first case, 11 % -5 = -4, as the remainder should be negative, we need to compare 15 and 11, not                                              
10 and 11: 11 = (-5) * (-3) + (-4).   
In the second case, -11 % 5 = 4, the remainder is supposed to be positive: -11 = 5 * (-3) + 4.  
  
Exponentiation . Here is a way to raise a number to a power:  
  
print(10 ** 2) # 100 
This operation has a higher priority over multiplication.  
1.4 Operation priority  
To sum up, there is a list of priorities for all considered operations:  
1. parentheses  
2. power  
3. unary minus  
4. multiplication, division, and remainder  
5. addition and subtraction  
As mentioned above, the unary minus changes the sign of its argument.  
Sometimes operations have the same priority:  
print(10 / 5 / 2) # 1.0 
print(8 / 2 * 5) # 20.0 
The expressions above may seem ambiguous to you, since they have alternative solutions depending on                              
the operation order: either 1.0 or 4.0 in the first example, and either 20.0 or 0.8 in the second one. In                                          
such cases, Python follows a left-to-right operation convention from mathematics. It's a good thing to                              
know, so try to keep that in mind, too!  
1.5 PEP time!  
There are a few things to mention about the use of binary operators, that is, operators that influence                                    
both operands. As you know, readability matters in Python. So, first, remember to surround a binary                                
operator with a single space on both sides:  
number=30+12 # No! 
number = 30 + 12 # It's better this way 
Also, sometimes people use the break after binary operators. But this can hurt readability in two ways:  
● the operators are not in one column,  
● each operator has moved away from its operand and onto the previous line:  
  
# No: operators sit far away from their operands  
income = (gross_wages + 
 taxable_interest + 
  
 (dividends - qualified_dividends) - 
 ira_deduction - 
 student_loan_interest) 
Mathematicians and their publishers follow the opposite convention in order to solve the readability                            
problem. Donald Knuth explains this in his Computers and Typesetting series: "Although formulas within                            
a paragraph always break after binary operations and relations, displayed formulas always break before                            
binary operations". Following this tradition makes the code more readable:  
  
# Yes: easy to match operators with operands  
income = (gross_wages 
 + taxable_interest 
 + (dividends - qualified_dividends) 
 - ira_deduction 
 - student_loan_interest) 
In Python code, it is permissible to break before or after a binary operator, as long as the convention is                                        
consistent locally. For new code, Knuth's style is suggested, according to PEP 8.  
  
1.6 Practice  
1.6.1 Factorial of 3  
Write a program that prints the product of these three numbers 1 * 2 * 3.  
  
Solution:  
print ( 1 * 2 * 3 )  
  
1.6.2 Adding together  
Write a program that takes two integer numbers a and b and prints their sum.  
  
The variables have already been defined.  
  
Sample Input 1: 8 11  
Sample Output 1: 19  
Solution:  
a = int ( input ()) 
b = int ( input ()) 
print ( a + b )  
1.6.3 Division by zero  
What will happen if you divide any number by zero in Python? Select one option from the list:  
0  
undefined  
ZeroDivisionError exception (X)  
InvalidOperation exception  
1.6.4 Raise to power  
It's time for really big numbers! Calculate this 2 179 and print what you got.  
Solution:  
print ( 2 ** 179 )  
  
1.6.5 Calculate it  
Print the result of executing the following expression: multiply 1234567890 by 987654321, then add                            
67890.  
Solution:  
print ( 1234567890 * 987654321 + 67890 ) 
  
1.6.6 A simple expression  
Write a program that takes 3 integer numbers a, b and c, calculates a times b and then subtracts c from                                          
the product. The program should print the result.  
There's no need to create the variables, just use them in the code below.  
Sample Input 1: 8 11 63  
Sample Output 1: 25  
Solution:  
a = int ( input ()) 
b = int ( input ()) 
c = int ( input ()) 
 
print ( a * b - c )  
1.6.7 All operations  
Match each name of a mathematical operation with its corresponding symbol.  
  
remainder of the division %  
raising to power **  
addition +  
subtraction -  
multiplication *  
division /  
integer division //  
1.6.8 Calculate a remainder  
Write a program that calculates the remainder of 10 divided by 3 and prints the result.  
Solution: print ( 10 % 3 )  
1.6.9 An odd operation  
Which arithmetic operation doesn't have its own operator in Python? Select one option from the list:  
Division  
Raising to power  
Square root (X)  
Unary minus  
Integer division  
The remainder of division  
  
1.6.10 Let's do some math  
What is the result of the following Python expression?  
  
print(((3 + 5) // 2 * 2 ** 3) % 7) 
Enter a number: (Solution:) 4 
  
1.6.11 A complex expression  
Write a program that takes a single integer number n and then performs the following operations in the                                    
following order:  
● adds n to itself  
● multiplies the result by n  
● subtracts n from the result  
● exactly divides the result by n (that means, you need to carry out integer division).  
Then print the result of the division. The example is given below:8 + 8 = 16 
16 * 8 = 128 
128 - 8 = 120 
120 // 8 = 15 
Sample Input: 8  
Sample Output: 15  
  
Solution:  
n = int(input()) 
soma = n + n 
mult = soma * n 
subt = mult - n 
divi = subt // n 
print(divi) 
  
Outras resoluções:  
n = int(input()) 
result = n + n 
result = result * n 
result = result - n 
result = result // n 
print(result) 
____ 
n = int(input()) 
print(((n + n) * n - n) // n) 
 
n = int(input()) 
print((((n + n) * n) - n) // n) 
n = int(input()) 
____ 
 
def complex_expression(x): 
 sum_tot = x + x 
 mult = sum_tot * x 
 subst = mult - x 
 return subst // x 
 
result = complex_expression(n) 
print(result) 
____  
1.6.12 Square root  
Extracting the square root of a number is equivalent to raising this number to a certain power. What                                    
power are we talking about?  
Solution: 0,5  
  
1.6.13 The power  
Please, print() the result of the following expression: raise 31 to the power of 331 and then get the                                      
remainder of the result's division by 20.  
n = ( 31 ** 331 ) % 20 
print ( n )  
1.6.14 Priority order  
Sort a list from mathematical operations with the highest priority to operations with the lowest priority.  
Thus, operations executed in the first turn will be at the top of your list.  
  
01. parentheses ()  
02. power   **  
03. unary minus -  
04. multiplication, division, integer division, and remainder * / // %  
05. addition and subtraction + -  
2 Theory : Naming variables  
As you know, every variable has a name that uniquely identifies it among other variables. Giving a good                                    
name to a variable may not be as simple as it seems.   
Experienced programmers are careful when naming their variables to ensure that their programs are                            
easy to understand. It is important because programmers spend a lot of time reading and understanding                                
code written by other programmers. If variables have bad names, even your own code will seem unclear                                  
to you in a few months. In this topic, we will consider how to choose good names for your variables in                                          
accordance with conventions and best practices established in the Python community.  
2.1 Code style convention  
PEP 8 provides some rules for variable names to increase code readability.  
Use lowercase and underscores to split words. Even if it's an abbreviation.  
http_response # yes! 
httpresponse # no 
myVariable # no, that's from Java 
However, if you want to define a constant, it's common to write its name in all capital letters and, again,                                        
separate words with underscores. Normally, constants are stored in special files called modules.                          
Although we'll cover this later, here is a small example:  
SPEED_OF_LIGHT = 299792458 
Avoid names of one letter that could be easily mixed up with numbers like 'l' (lowercase letter el), 'O'                                      
(uppercase letter oh), or 'I' (uppercase letter eye).  
l = 1 # no 
O = 100 # no, if you use this variable name further in your code, it 
may look like a zero 
Although you can use any Unicode symbols, the code style convention recommends limiting variable                            
names with ASCII characters.  
# Using Cyrillic instead of Latin can cause an evening of useless 
headache 
# These are different variables! 
copy = "I'm written in Latin alphabet" # yes! 
сору = "And I'm written in Cyrillic!" # no 
If the most suitable variable name is some Python keyword, add an underscore to the end of it.  
class_ = type(var) # yes! 
https://en.wikipedia.org/wiki/List_of_Unicode_characters
http://www.asciitable.com/
  
klass = type(var) # no 
All the code style rules regarding names are described in PEP 8 .  
2.2 Other variable names best practices  
There are also some best practices that are common for many programming languages.  
Choose a name that makes sense. The variable name must be readable and descriptive and should                                
explain to the reader what sort of values will be stored in it.  
score # yes! 
s # no 
 
count # yes! 
n # no 
Don't use too generic names. Try to choose a name that will explain the meaning of the variable. But                                      
don't make it too wordy. 1-3 words are usually enough.  
http_response # yes! 
var1 # no 
http_response_from_the_server # no, some words can be dropped 
If a word is long, try to find the most common and expected short form to make it easier to guess later.  
output_file_path # yes! 
fpath # no 
output_flpth # no 
Avoid names from the built-in types list.  
str = 'Hello!' # no, because in the further code you can't use str 
type as it's overridden 
Note, the last best practice is pretty Python-specific.  
2.3 Conclusion  
All the naming conventions and best practices are optional, but it is strongly recommended to follow                                
them. As we mentioned at the beginning of this lesson, they make your code more readable and                                  
self-descriptive for you and other programmers.  
  
2.4 Practice  
2.4.1 The best name  
Which of the following variable names is the best according to naming conventions?  
_uha  
userHomeAddress  
userhomeaddress  
the_home_address_of_the_user  
user_home_address (X)  
2.4.2 Number of people in the class  
The name number_of_people_in_the_class is a very long name for a variable. What is the best way to                                  
shorten it?  
n_o_p  
nopitc  
https://www.python.org/dev/peps/pep-0008/#naming-conventions
  
n_of_people_inc  
number_of_people  
2.4.3 Good names  
Here's a list of variables:  
number_of_people_in_the_room = 10 
model_score = 0.9875 
client_name = "Bob" 
colorOfTheShirt = "red" 
  
Some of them are named according to naming conventions and best practices, others are not.  
Copy only the lines with those variables that have good names in your code. You don't need to use the                                        
print() function.  
Solution:  
model_score = 0.9875 
client_name = "Bob"  
2.4.4 Zeros and ones  
Apart from texting, the abbreviation lol can be easily mistaken for anumerical sequence. What number                                
is it? Solution: 101  
2.4.5 Character set  
Letters from which standard are recommended for naming variables? Select one option from the list:  
Unicode  
Runic  
ANSEL  
ASCII (X)  
2.4.6 The first char  
The Python naming conventions specify groups of characters that are allowed at the beginning of a                                
variable name. What characters cannot start a name? Select one option from the list:  
digits (X)  
lowercase letters  
uppercase letters  
underscores  
2.4.7 Why to name variables?  
Why should a developer care about variable names? Select all that apply.  
Select one or more options from the list  
To increase the code readability. (X)  
To make the code easier to understand. (X)  
To increase the code artistry.  
To make the code compilable.  
2.4.8 A good style guide  
What is the name of the document in which you can find official Python recommendations for variable                                  
naming? Solution: PEP8  
2.4.9 This is Python  
  
Rename the variables in the code below according to the Python code style convention.  
http_response = 'mocked response' 
  
http_error = 404  
2.4.10 How to name a variable?  
Select all the correct variable names according to PEP 8 code style convention. Select one or more                                  
options from the list:  
error_message (X)  
int  
correctAnswer  
class_ (X)  
O  
2.4.11 Everest  
  
In your program, you need a variable to store the height of mount Everest (8, 848 m). There are other                                        
heights and other mountains in the program, so you cannot simply call it height . The name of the                                      
variable should reflect the fact that the value is constant and refer to the measure and the object .  
What would be an optimal name for that variable?  
the_height_of_everest_in_meters  
height_of_everest  
everest_height  
MOUNTAIN_HEIGHT  
mount_everest  
EVEREST_HEIGHT (X)  
2.4.12 Fix str  
The previous developer accidentally named a variable str. Since this name is reserved for a built-in type,                                  
now the code fails.  
Please fix the variable name by adding an underscore, as suggested in the topic. The value of your new                                      
variable shouldn't change, i.e. it should look like Hello10 . You don't have to print anything.  
Remember that the str() function returns the string version of the given object.  
str = "Hello" 
str = str + str(10) 
Failed. Runtime error 
Error: Traceback (most recent call last): 
 File "jailed_code", line 2, in <module> 
 str_ = str_ + str_(10) TypeError: 'str' object is not callable 
Solution:  
str_ = "Hello" 
str_ = str_ + str ( 10 ) 
  
3 Theory: Program with numbers  
Programs in which there's nothing to calculate are quite rare. Therefore, learning to program with                              
numbers is never a bad idea. An even more valuable skill we are about to learn is the processing of user                                          
data. With its help, you can create interactive and by far more flexible applications. So let's get started!  
  
3.1 Reading numbers from user input  
Since you have become familiar with the input() function in Python, it's hardly new to you that any data                                      
passed to this function is treated as a string. But how should we deal with numerical values? As a                                      
general rule, they are explicitly converted to corresponding numerical types:  
integer = int(input()) 
floating_point = float(input()) 
Pay attention to current best practices: it's crucial not to name your variables as built-in types (say, float                                    
or int). Also, we should take into account user mistakes: if a user types an inaccurate input, say, a string                                        
'two' instead of a number 2, a ValueError will occur. At the moment, we won't focus on it; but don't worry,                                          
more information about errors is available in a dedicated topic. Now, consider a more detailed and                                
pragmatic example of handling numerical inputs.  
3.2 Free air miles  
Imagine you have a credit card with a free air miles bonus program (or maybe you already have one). As                                        
a user, you are expected to input the amount of money you spend on average from this card per month.                                        
Let's assume that the bonus program gives you 2 free air miles for every dollar you spend. Here's a                                      
simple program to figure out when you can travel somewhere for free:  
# the average amount of money per month 
money = int(input("How much money do you spend per month: ")) 
# the number of miles per unit of money 
n_miles = 2 
# earned miles 
miles_per_month = money * n_miles 
# the distance between London and Paris 
distance = 215 
# how many months do you need to get 
# a free trip from London to Paris and back 
print(distance * 2 / miles_per_month) 
This program will calculate how many months it takes to travel the selected distance and back.  
Although it is recommended to write messages for users in the input() function, avoid them in our                                  
educational programming challenges, otherwise your code may not pass our tests.  
3.3 Advanced forms of assignment  
Whenever you use an equal sign =, you actually assign some value to a name. For that reason, = is                                        
typically referred to as an assignment operator. Meanwhile, there are other assignment operators you                            
can use in Python. They are also called compound assignment operators, for they carry out an                                
arithmetic operation and assignment in one step. Have a look at the code snippet below:  
# simple assignment 
number = 10 
number = number + 1 # 11 
This code is equivalent to the following one:  
# compound assignment 
number = 10 
number += 1 # 11 
One can clearly see from the example that the second piece of code is more concise (for it doesn't                                      
repeat the variable's name).  
  
Naturally, similar assignment forms exist for the rest of arithmetic operations: -=, *=, /=, //=,                       
%=, **=. Given the opportunity, use them to save time and effort.  
One possible applicationof compound assignment comes next.  
3.4 Counter variable  
In programming, loops are used alongside special variables called counters. A counter counts how many                              
times a particular code is run. It also follows that counters should be integers. Now we are getting to the                                        
point: you can use the operators += and -= to increase or decrease the counter respectively.  
Consider this example where a user determines the value by which the counter is increased:  
counter = 1 
step = int(input()) # let it be 3 
counter += step 
print(counter) # it should be 4, then 
In case you need only non-negative integers from the user (we are increasing the counter after all!), you                                    
can prevent incorrect inputs by using the abs() function. It is a Python built-in function that returns the                                    
absolute value of a number (that is, value regardless of its sign). Let's readjust our last program a bit:  
counter = 1 
step = abs(int(input())) # user types -3 
counter += step 
print(counter) # it's still 4 
As you can see, thanks to the abs() function we got a positive number.  
For now, it's all right that you do not know much about the mentioned details of errors, loops and built-in                                        
functions in Python. We will catch up and make sure that you know these topics comprehensively. Keep                                  
learning!  
3.5 Conclusion  
Thus, we have shed some light on new details about integer arithmetic and the processing of numerical                                  
inputs in Python. Feel free to use them in your future projects.  
An airline company "Happy travel" has a loyalty system for its customers: for each spent dollar they get                                    
0.01 free miles on their account and then can use them to travel for free. Below is the code for free air                                            
miles calculation for one customer who plans to travel from London to Paris and back:  
# the number of free miles per dollar 
n_miles = 0.01 
# money spent per month (in dollars) 
money = 2000 
# number of miles earned each month 
miles_per_month = money * n_miles 
# distance from London to Paris and back (in miles) 
total_distance = 215 * 2 
3.6 Practice  
3.6.1 Bad omen  
  
Take a look at the code below:  
step = 666 
counter += step 
print (counter) 
  
 
It's not working for some reason. What's wrong with it? Select one option from the list:  
The step value should be a floating-point number.  
The step value is extremely large.  
One of the variables hasn't been defined. (X)  
The compound assignment operator should be =+.  
3.6.2 Undercover  
Which of the following operators has nothing to do with compound assignment?   
Select one option from the list:  
+=  
-=  
**=  
//=  
%=  
== (X)  
Well done! The equality operator ̀==` is used to compare values, not to assign them. 
  
3.6.3 When you'll have a free trip?  
An airline company "Happy travel" has a loyalty system for its customers: for each spent dollar they get                                    
0.01 free miles on their account and then can use them to travel for free. Below is the code for free air                                            
miles calculation for one customer who plans to travel from London to Paris and back:  
  
# the number of free miles per dollar 
n_miles = 0.01 
 
# money spent per month (in dollars) 
money = 2000 
 
# number of miles earned each month 
miles_per_month = money * n_miles 
 
# distance from London to Paris and back (in miles) 
total_distance = 215 * 2 
 
What would be the correct final line to calculate how many months it will take for this client to make the                                          
desired trip free of charge? Select one option from the list:  
total_distance * 2 / miles_per_month  
total_distance / miles_per_month  
total_distance * 2  
total_distance * miles_per_month  
3.6.4 Calculating an expression  
Write a program that reads an integer value n from the standard input and prints the result of the                                      
expression:  
((n + 1) * n + 2) * n + 3  
  
Sample Input 1: 3  
Sample Output 1: 45  
  
Solution:  
n = int ( input ()) 
print ((( n + 1 ) * n + 2 ) * n + 3 ) 
  
3.6.5 The last digit of a number  
Write a program that reads an integer and outputs its last digit.  
Sample Input 1:   425  
Sample Output 1: 5  
  
Hints:  
I had to do a bit of googling and found that % 10 will always give the last digit of a number.  
you'll want the user to input a number, but make sure its an integer.  
last_digit = number % 10 # having % 10 will ALWAYS give only the last digit.   
lastly, print the last_digit  
  
number = .... 
last_digit = number % 10 
print(.....) 
 
Solution:  
number01 = int ( input ()) 
last_digit = number01 % 10 
print ( last_digit ) 
  
Outras resoluções:  
a = int ( input ()) 
print (a % 10 ) 
 
number = list ( str ( input ())) 
print (number[ -1 ]) 
 
num = list ( input ( '' )) 
last_index = num[ -1 ] 
print (last_index) 
 
input_number = int ( input ()) # put your python code here 
print ( str (input_number)[ -1 ]) 
 
n = input () 
print (n[ -1 ]) 
 
n = input () # take a number as string 
print (n[ -1 ]) # print the the last char in the string index > -1 
 
print ( input ()[ -1 ])  
3.6.6 Calculating S V P  
Ask the user about parameters of a rectangular parallelepiped (3 integers representing the length, width                              
and height) and print the sum of edge lengths, its total surface area and volume.  
  
Sum of lengths of all edges: s = 4(a + b + c)s=4(a+b+c)  
Surface area: S = 2(ab + bc + ac)S=2(ab+bc+ac)  
Volume: V = abc  
  
  
Solution:  
a = int ( input ()) 
b = int ( input ()) 
c = int ( input ()) 
 
len_edges = 4 * ( a + b + c ) 
area_surf = 2 * (( a * b ) + ( b * c ) + ( a * c )) 
vol_par = a * b * c 
 
print ( len_edges ) 
print ( area_surf ) 
print ( vol_par )  
  
Outras resoluções:  
print (( lambda a, b, c: (f "{4 * (a + b + c)}\n{2 * (a * b + b * c + c * a)}\n{a * b * 
c}" ))( int ( input ()), int ( input ()), int ( input ()))) 
____ 
a, b, c = int ( input ()), int (input ()), int ( input ()) 
print ( "{}\n{}\n{}" . format ( 4 * (a + b + c), 2 * (a * b + b * c + a * c), a * b * c)) 
____ 
a, b, c = int ( input ()), int ( input ()), int ( input ()) 
 
s = 4 * (a + b + c) 
S = 2 * ((a * b) + (b * c) + (a * c)) 
V = a * b * c 
 
print (s, S, V, sep= "\n" )  
3.6.7 Divide nuts equally between squirrels  
N squirrels found K nuts and decided to divide them equally. Determine how many nuts each squirrel will                                    
get.  
Input data format: There are two positive numbers N and K, each of them is not greater than 10000.  
  
Sample Input 1: 3 14  
Sample Output 1: 4  
  
Solution:  
N = int ( input ()) 
K = int ( input ()) 
 
print ( K // N ) 
  
Outras resoluções:  
n = int ( input ()) 
print ( int ( input ()) // n) 
____ 
N = abs ( int ( input ())) 
K = abs ( int ( input ())) 
print (K // N) 
  
3.6.8 The first digit of a two-digit number  
Write a program that will take an input of a two-digit integer and print its first digit (i.e. the number of                                          
tens).  
Sample Input 1: 42  
Sample Output 1: 4  
  
Solution:  
que = int ( input ()) 
print ( que // 10 ) 
Outras resoluções:  
number = input () 
print (number[ 0 ]) 
____ 
print ( input ()[ 0 ]) 
3.6.9 Difference of times  
You will get the values for two moments in time of the same day: when Megan went for a walk, and                                          
when it started to rain. It is known that the first event happened earlier than the second one. Find out                                        
how many seconds passed between them.  
  
The program gets the input of six integers, each on a separate line. The first three integers represent                                    
hours, minutes, and seconds of the first event, and the rest three integers define similarly the second                                  
event. Print the number of seconds between these two moments of time.  
  
Sample Input 1: 1 1 1 2 2 2  
Sample Output 1: 3661  
Sample Input 2: 1 2 30 1 3 20  
Sample Output 2: 50  
Solution:  
hour1 = int ( input ()) 
min1 = int ( input ()) 
sec1 = int ( input ()) 
hour2 = int ( input ()) 
min2 = int ( input ()) 
sec2 = int ( input ()) 
 
first_event = ( hour1 * 3600 ) + ( min1 * 60 ) + sec1 
second_event = ( hour2 * 3600 ) + ( min2 * 60 ) + sec2 
 
print ( second_event - first_event ) 
  
Outras resoluções:  
hour1 = int ( input ()) 
minute1 = int ( input ()) 
second1 = int ( input ()) 
time_1 = hour1 * 3600 + minute1 * 60 + second1 
hour2 = int ( input ()) 
minute2 = int ( input ()) 
second2 = int ( input ()) 
time_2 = hour2 * 3600 + minute2 * 60 + second2 
print ( abs (time_1 - time_2)) 
____  
  
print ( abs (hours_2 * 3600 + minutes_2 * 60 + seconds_2 - hours_1 * 3600 - minutes_1 * 60 
- seconds_1)) 
  
3.6.10 The sum of digits  
Given a three-digit integer (i.e., an integer from 100 to 999). Find the sum of its digits and print the result.  
  
To get the separate digits of the input integer, make use of % and // (for example, you can get 8 from the                                              
number 508 by taking the remainder of the division by 10).  
  
Sample Input 1: 476  
Sample Output 1: 17  
  
Solution:  
number = list ( str ( input ())) 
sum_dig = ( int ( number [ 0 ]) + int ( number [ 1 ]) + int ( number [ 2 ])) 
 
print ( sum_dig ) 
  
Outras resoluções:  
n = abs ( int ( input ())) 
 
hundreds = n // 100 
tens = (n % 100 ) // 10 
units = n % 10 
 
print (hundreds + tens + units) 
____ 
n = int ( input ()) 
print (n // 100 + n % 100 // 10 + n % 10 ) 
____ 
n = int ( input ()) 
print (( int (n / 100 )) + ((n // 10 ) % 10 ) + (n % 10 )) 
____ 
number = int ( input ()) 
a = number // 100 
b = number // 10 - a * 10 
c = number % 10 
print (a + b + c) 
____ 
print ( sum ([ int (x) for x in str ( input ())])) 
* Correct, but can be improved. 1 code style error  
____  
number = str ( input ()) 
count = 0 
for i in number: 
 count += int (i) 
print (count) 
  
____  
num = str ( input ()) 
f = num[ 0 ] 
s = num[ 1 ] 
t = num[ 2 ] 
f = int (f) 
s = int (s) 
t = int (t) 
res = f + s + t 
print (res) 
3.6.11 Pumpkin pie  
Paul has baked a pumpkin pie and asked his guests how many pieces they wanted to take home:  
  
n_pieces = int(input("How many pieces of the pumpkin pie can I offer you?")) 
  
It's so nice of him! However, this program crashed as one guest entered the value 2.5. What are possible                                      
actions to prevent the error in the code? There is more than just one correct answer.  
Let's assume that no guest should leave without a treat! You also don't have to think about cases when a                                        
guest enters something different than a number in this task. Select one or more options from the list:  
Leave the whole pie for you.  
Convert the input value to float rather than int . (X)  
Read the numbers as floats and then round them up to the closest integer. (X)  
Print a message for the guests that pieces should be whole.  
3.6.12 Savings account  
For the given amount of money, calculate the income from this savings account with a 5% interest rate                                    
after one year.  
Save the result into the variable income. You DO NOT need to print it.  
Solution:  
amount = 1000 
interest_rate = 5 
years = 1 
income = ( amount * ( interest_rate / 100 ))  
3.6.13 Good rest on vacation  
Write a program that will help people who are going on vacation. The program should calculate the total                                    
required sum (e.g. $) of money to have a good rest for a given duration.  
There are four parameters that have to be considered:  
● duration in days  
● total food cost per day  
● one-way flight cost  
● cost of one night in a hotel (the number of nights is equal to the duration of days minus one)  
Read integer values of these parameters from the standard input and then print the result.  
Sample Input 1: 7 30 100 40  
Sample Output 1: 650  
Solution:  
n_days = abs ( int ( input ())) 
food_day = abs ( int ( input ())) 
flight = abs ( int ( input ())) 
h_per_night= abs ( int ( input ())) 
 
  
hotel_total = abs ( int ( n_days - 1 ) * h_per_night ) 
 
print (( n_days * food_day ) + ( flight * 2 ) + hotel_total ) 
  
3.6.14 Desks  
A school has decided to create three new math groups and equip three classrooms for them with new                                    
desks. Your task is to calculate the minimum number of desks to be purchased. To do so, you'll need the                                        
following information:  
  
● The number of students in each of the three groups is known: your program will receive three                                  
non-negative integers as the input. It is possible that one or more of them will be zero, so you                                      
should take it into account.  
● Each group will sit in its own classroom. It means that you should calculate the number of desks                                    
for each classroom separately, and only then add them up!  
● At most two students may sit at any desk. You are expected to output the minimum number of                                    
desks to buy, so there should be as many as possible desks taken by two students rather than                                    
one.  
Most probably, you'll need operations // and % in your program!  
Sample Input 1: 20 21 22  
Sample Output 1: 32  
Sample Input 2: 16 18 20  
Sample Output 2: 27  
Solution:  
stud_01 = abs ( int ( input ())) 
stud_02 = abs ( int ( input ())) 
stud_03 = abs ( int ( input ())) 
 
print (( stud_01 // 2 + stud_02 // 2 + stud_03 // 2 ) 
 + ( stud_01 % 2 + stud_02 % 2 + stud_03 % 2 )) 
  
  
  
4 Theory: Boolean logic  
4.1 Boolean type  
The Boolean type, or simply bool , is a special data type that has only two possible values: True and                                      
False . In Python the names of boolean values start with a capital letter.  
In programming languages the boolean, or logical, type is a common way to represent something that                                
has only two opposite states like on or off, yes or no, etc.  
If you are writing an application that keeps track of door openings, you'll find it natural to use bool to                                        
store the current door state.  
is_open = True 
is_closed = False 
 
print(is_open) # True 
print(is_closed) # False 
4.2 Boolean operations  
There are three built-in boolean operators in Python: and, or and not . The first two are binary                                
operators which means that they expect two arguments. not is a unary operator, it is always applied to a                                      
single operand. First, let's look at these operators applied to the boolean values.  
  
  
● and is a binary operator, it takes two arguments and returns True if both arguments are true,                                  
otherwise, it returns False .  
a = True and True # True 
b = True and False # False 
c = False and False # False 
d = False and True # False 
● or is a binary operator, it returns True if at least one argument is true, otherwise, it returns                                    
False .  
a = True or True # True 
b = True or False # True 
c = False or False # False 
d = False or True # True 
● not is a unary operator, it reverses the boolean value of its argument.  
to_be = True # to_be is True 
not_to_be = not to_be # not_to_be is False 
4.3 The precedence of boolean operations  
Logical operators have a different priority and it affects the order of evaluation. Here are the operators in                                    
order of their priorities: not, and, or. So, not is considered first, then and, finally or. Having this in mind,                                        
consider the following expression:  
print(False or not False) # True 
First, the part not False gets evaluated, and after evaluation, we are left with False or True. This results in                                        
True, if you recall the previous section.  
While dealing solely with the boolean values may seem obvious, the precedence of logical operations                              
will be quite important to remember when you start working with so-called truthy and falsy values.  
4.4 Truthy and falsy values  
Though Python has the boolean data type, we often want to use non-boolean values in a logical context.                                    
And Python lets you test almost any object for truthfulness. When used with logical operators, values of                                  
non-boolean types, such as integers or strings, are called truthy or falsy . It depends on whether they are                                    
interpreted as True or False .  
The following values are evaluated to False in Python:  
● constants defined to be false: None and False ,  
● zero of any numeric type: 0, 0.0, 
● empty sequences and containers: "", [], {}. 
Anything else generally evaluates to True . Here is a couple of examples:  
print(0.0 or False) # False 
print("True" and True) # True 
print("" or False) # False 
Generally speaking, and and or could take any arguments that can be tested for a boolean value.  
Now we can demonstrate more clearly the difference in operator precedence:  
# “and” has a higher priority than “or” 
truthy_integer = False or 5 and 100 # 100 
Again, let's break the above expression into parts.   
Since the operator and has a higher priority than or , we should look at the 5 and 100 part. Both 100                                   
and 5 happen to be truthy values, so this operation will return 100. You have never seen this before, so                                        
it's natural to wonder why we have a number instead of the True value here. The explanation is as                                      
follows:  
  
  
  
Coming back to the original expression, you can see that the last part False or 100 does exactly the                                
same thing, returns 100 instead of True .  
Another tricky example is below:  
tricky = not (False or '') # True 
A pair of parentheses is a way to specify the order in which the operations are performed.   
Thus, we evaluate this part of the expression first: False or '' .   
This operand '' evaluates to False and or returns this empty string. Since the result of the enclosed                                  
expression is negated, we get True in the end: not '' is thesame as True .   
Why didn't we get, say, a non-empty string? The not operator creates a new value, which by default has                                      
the boolean type. So, as stated earlier, the unary operator always returns a logical value.  
4.5 Short-circuit evaluation  
The last thing to mention is that logical operators in Python are short-circuited . That's why they are also                                    
called lazy . That means that the second operand in such an expression is evaluated only if the first one                                      
is not sufficient to evaluate the whole expression.  
● x and y returns x if x is falsy; otherwise, it evaluates and returns y.  
● x or y returns x if x is truthy; otherwise, it evaluates and returns y.  
For instance:  
# division is never evaluated, because the first argument is True 
lazy_or = True or (1 / 0) # True 
 
# division is never evaluated, because the first argument is False 
lazy_and = False and (1 / 0) # False 
Those were the very basics of boolean values and logical operations in Python. It's definitely good to                                  
know them right from the beginning!  
4.6 Practice:  
4.6.1 Boolean type  
Which values are considered boolean in Python? Select one or more options from the list  
  
True (X) "True" None  
1 0 False (X)  
4.6.2 Priority  
Sort boolean operations from the highest priority to the lowest: not, (1) and, (2) or (3)  
4.6.3 Boolean values  
Assuming that variables have the following boolean values:  
a = True 
b = not a 
Enter the result by evaluating the expression:  
not (a and b) 
The operators or and and return one of their operands, not necessarily of the boolean type.                                
Nonetheless, not always returns a boolean value.  
  
4.6.4 False in Python  
Choose all the values that are considered False in Python. Select one or more options from the list  
False (X)  
"" (X)  
"False"  
0 (X)  
1  
"0"  
  
4.6.5 Exclusive or  
Exclusive OR , or simply XOR , is a binary logical operation. It returns True only if both arguments are                                    
different (one is True , the other is False ).  
Here is a table with XOR outputs for different values of variables a and b :  
  
Select all the expressions that give the same result as applying XOR to the boolean variables a and b                                      
(that is, the expressions acting as a XOR b ).  
  
Select one or more options from the list:  
not a or b  
(a or b) and not (a and b)  
(a and b) or not (a or b)  
(a and not b) or (not a and b)  
a and not b  
4.6.6 Logical operations  
In Python, logical operators and and or follow short-circuit evaluation rule.   
There are two boolean variables:  
a = True 
b = False  
Choose the expressions that should be evaluated fully to determine their value. This means that the                                
whole expression will be evaluated, not just part of it.   
Here is the main rule:  
● a and b returns a if a is False; otherwise, it evaluates and returns b ;   
● a or b returns a if a is True ; otherwise, it evaluates and returns b .  
Select one or more options from the list  
not a and b  
b and a  
a   b   XOR  
True   True   False  
True   False   True  
False   True   True  
False   False   False  
You might be familiar with ̂ , the bitwise XOR operator in Python. Although it can be used to solve this                                        
task, keep in mind that it works with binary representations of data, whereas boolean operations have                                
no such limitation.  
  
a or b  
a and b (X)  
not a or b (X)  
b or a (X)  
  
Note the following in your thought process.  
"or" expressions only evaluates the second argument if the first one is false  
"and" expressions only evaluates the second argument if the first one is true  
  
4.6.7 Boolean expression  
What will be the boolean value of the following expression? Write the result.  
  
not None or 1 
 
Answer: True 
  
  
5 Theory: Comparisons  
Writing code without comparing any values in it will get you only so far. Now, it's time to master this skill.  
5.1 Comparison operators  
Comparison or relation operations let you compare two values and determine the relation between                            
them. There are ten comparison operators in Python:  
● < strictly less than 
● <= less than or equal 
● > strictly greater than 
● >= greater than or equal 
● == equal 
● != not equal 
● is object identity 
● is not negated object identity 
● in membership 
● not in negated membership. 
The result of applying these operators is always bool . The following sections focus on the first six                                  
operators ( <, <=, >, >=, ==, != ), but you can find more details about identity and membership                        
testing in the next topics.  
  
5.2 Comparing integers  
In this topic, we will cover only integer comparison.  
a = 5 
b = -10 
c = 15 
 
result_1 = a < b # False 
result_2 = a == a # True 
result_3 = a != b # True 
result_4 = b >= c # False 
  
Any expression that returns integer is a valid comparison operand too:  
calculated_result = a == b + c # True 
Given the defined variables a, b and c , we basically check if 5 is equal to -10 + 15 , which is true.  
  
5.3 Comparison chaining  
Since comparison operations return boolean values, you can join them using logical operators.  
x = -5 
y = 10 
z = 12 
result = x < y and y <= z # True  
In Python, there is a fancier way to write complex comparisons. It is called chaining . For example, x <                                   
y <= z is almost equivalent to the expression you saw in the last example. The difference is that y is                                      
evaluated only once.  
result = 10 < (100 * 100) <= 10000 # True, the multiplication is evaluated once 
  
  
5.4 Practice  
5.4.1 Carry on!  
  
If you've ever traveled by plane, you know that there are strict rules when it comes to carry-on luggage. A                                        
handbag has three dimensions: width, length and height. Some company set the following rule for the                                
carry-on:  
  
allowed = (height <= 10 <width <= 35 < length <= 40) or (height + width + length <= 80) 
  
Which carry-ons are going to be allowed on a plane? Select one or more options from the list  
height = 4, width = 30, length = 50  
height = 15, width = 25, length = 37 (X)  
height = 25, width = 30, length = 23 (X)  
height = 10, width = 35, length = 35 (X)  
  
5.4.2 Matchmaker  
Here are the values of some variables:  
x = 1 
y = 1 
z = 1000 
q = 1000 
m = 37 
 
What operator should be used instead of the underscore in the code below so that the expressions                                  
would have intended value? Match the options.  
z _ y : False < x _ y : True   == m _ q : False >  
Please pay attention to the fact that tools for code quality often recommend chaining comparisons  
instead of joining them.  
  
5.4.3 Discount  
The museum gives discounts to people according to the following rule:  
age = ... 
discount = (age < 21 ) or (age >= 65 ) 
 
A family of five wants to visit this museum. Which family members will get a discount, if these are their                                        
ages:  
Mary - 49 Andrew - 50 Dora - 21 John - 15 Ann - 75  
Select one or more options from the list:  
Andrew  
Ann (X)  
Dora  
John (X)  
Mary  
5.4.4 Focus on the positive  
  
Write a program that reads an integer value from the input and checks if it is positive.  
Hint: 0 is not a positive number.   
  
A comparison already returns a boolean, so if you need the result of the comparison, you can print                                    
it, like this print(5 > 9) # False 
  
Sample Input 1: 8 Sample Output 1: True  
  
Solution: 
a = int ( input (). strip ()) 
print ( a > 0 ) 
5.4.5 Enrolling  
Imagine, you are developing a rule in terms of logical and comparison operations to determine whether                                
you should enroll a student in your course or not. The rule itself looks like this:  
  
enroll_student = ((average_grade >= 40 and recommended_by_tutor) 
 or (finished_introductory_course and introductory_course_grade > 85 )) 
 
Parameters meaning:  
● average_grade is an integer variable that shows the student's average grade.  
● recommended_by_tutor is a bool variable that shows whether the student has a recommendation                          
from the tutor.  
● finished_introductory_course is a bool variable that shows whether the student finished the                        
introductory course.  
● introductory_course_grade is an integer variable that shows the student's introductory course                      
grade.  
The table of students who wish to enroll:  
 
  
  
  
  
  
  
Using this rule select all the students to enroll. Select one or more options from the list:  
Anne (X)  
John  
Frank (X)  
Victoria (X)  
Mary  
Sam  
5.4.6 True test  
Select all the values of variable a such that is True.  
  
a = ... 
  
test_result = a <= 0 or a > 200 
 
Select one or more options from the list  
-100 (X)  
0 (X)  
100  
200  
500 (X) 
5.4.7 In the middle  
Write a program that reads an integer value from input and checks if it is less than 10 or greater than                                          
250.  
  
Sample Input 1: 0 
Sample Output 1: True 
Solution:  
print ( a > 250 or a < 10 )  
5.4.8 Very odd  
Find out if the result of dividing A by B is an odd number.  
  
The input format:  
The first line is the dividend (A) and the second line is the divisor (B). It is guaranteed that the numbers                                          
are divided without remainder.  
The output format:  
True or False  
Sample Input 1: 99 3  
Sample Output 1: True  
   average_grade   recommended_by_tutor   finished_introductory_course   introductory_course_grade  
Anne   49   True   False   0  
John   41   False   True   76  
Frank   37   True   True   97  
Victoria   40   True   True   86  
Mary   49   False   True   85  
Sam   33   False   True   51  
  
Remember the thing that if the result % 2 equals 1 then the result is odd, else if the result % 2 equals                                              
0 then the result is even.  
  
Solution:  
A = int ( input ()) 
B = int ( input ()) 
result = A / B 
print ( not result % 2 == 0 ) 
 
outras resoluções:  
print (( int ( input ()) / int ( input ())) % 2 != 0 ) 
a = int ( input ()) 
b = int ( input ()) 
c = a // b 
if c % 2 == 0 : 
 print ( 'False' ) 
else : 
 print ( 'True' ) 
____ 
a = int ( input ()) 
b = int ( input ()) 
print ((a / b) % 2 != 0 ) 
5.4.9 Guessing game  
You are playing a guessing game with a user. Imagine that you came up with an integer stored in a                                        
variable set_number . Check if set_number is equal to the product of two integers entered by the                              
user.  
The input format:  
Two lines containing integer numbers for you to multiply.  
The output format:  
True if the user guessed correctly and False otherwise.  
  
Sample Input: 3 11 Sample Output: False  
  
Solution: 
set_number = 847 
 
mu1 = int ( input ()) 
mu2 = int ( input ()) 
 
print ( mu1 * mu2 == set_number ) 
  
Outras Resoluções:  
set_number = 6557 
print (( lambda x, y: x * y == set_number)( int ( input ()), int ( input ()))) 
____ 
“Best”  
set_number = 6557 
print (set_number == int ( input ()) * int ( input ()))  
____  
  
set_number = 6557 
a = ( lambda x, y: x * y == set_number)( int ( input ()), int ( input ())) 
print (a) 
____ 
set_number = 6557 
a = abs ( int ( input ())) 
b = abs ( int ( input ())) 
prod = a * b 
print (set_number == prod) 
5.4.10 Movie theater  
The movie theater has cinema halls that can accommodate a certain number of viewers each.   
Figure out if a movie theater can hold a given number of viewers that plan to visit it on a particular day.  
 
The input format:  
The first line is number of halls , the second line is their capacity , and the third line is the                                  
planned number of viewers. The output format: True or False.  
Sample Input 1: 9 68 589  
Sample Output 1: True  
Primeira tentativa (Errada):  
n_halls_max = int(9) 
capacity_max = int(68) 
n_viewers_max = int(589) 
 
n_halls = int(input()) 
capacity = int(input()) 
n_viewers = int(input()) 
print(n_halls <= n_halls_max and capacity <= capacity_max andn_viewers <= n_viewers_max) 
Hint: Use int in input 3 inputs use print ( xxxxx * xxxx >= xxxxx)  
Solution: 
n_halls = int ( input ()) 
capacity = int ( input ()) 
n_viewers = int ( input ()) 
 
print ( n_halls * capacity >= n_viewers ) 
  
Outras resoluções:  
print ( int ( input ()) * int ( input ()) >= int ( input ())) 
____ 
halls, capacity, viewers = ( int ( input ()) for _ in range ( 3 )) 
print (halls * capacity >= viewers) 
____ 
x = [ int ( input ()) for i in range ( 3 )] 
print (x[ 2 ] <= x[ 1 ] * x[ 0 ]) 
____ 
capacity = int ( input ()) * int ( input ()) 
viewers = int ( input ()) 
____ 
if viewers <= capacity: 
 print ( True ) 
else : 
 print ( False ) 
5.4.11 Order!  
Get three large numbers from input and check that they are given in ascending order. The subsequent                                  
number must be greater than the previous one.  
The input format:  
Three lines with three numbers.  
The output format:  
True or False  
  
Sample Input 1: 7.790.765.547.678.990 7.790.765.557.679.990 7.790.765.557.778.900  
Sample Output 1: True  
Solution:  
a = int(input()) 
b = int(input()) 
c = int(input()) 
 
print(a < b < c)  
5.4.12 Operator  
  
Which of the following are NOT comparison operators in Python?  
Select one or more options from the list  
is  
=== (X)  
==  
>=  
<=  
!=  
not in  
=> (X)  
5.4.13 Don't want to delete? Comment!  
Sometimes, it is useful to comment out some parts of a program if you don't need them now and                                      
want to save them for later. Look at the following code and decide what line(s) of code to convert to                                        
comment so that when you run this block of code, the program will print only an integer 7.  
Solution:  
# print(1 + 2 + 3 + 6) 
print ( 1 + 3 + 3 ) # print(1 + 2 + 3)  
  
6 Theory: If statement  
  
6.1 Simple if statement  
There are situations when your program needs to execute some piece of the code only if a particular                                    
condition is true. Such a piece of the code should be placed within the body of an if statement. The                                        
pattern is the same as in the English language: first comes the keyword if , then a condition, and then a                                          
list of expressions to execute. The condition is always a Boolean expression, that is, its value equals                                  
either True or False . Here is one example of how the code with a conditional expression should look                                    
like:  
  
biscuits = 17 
if biscuits >= 5 : 
 print ( "It's time for tea!" ) 
 
Note that the condition ends with a colon and a new line starts with an indentation. Usually, 4 spaces                                      
are used to designate each level of indentation. A piece of code in which all lines are on the same level of                                            
indentation is called a block of code . In Python, only indentation is used to separate different blocks of                                    
code, hence, only indentation shows which lines of code are supposed to be executed when the if                                  
statement is satisfied, and which ones should be executed independently of the if statement. Check out                                
the following example:  
  
if biscuits >= 5 : 
 print ( "It's time for tea!" ) 
 print ( "What tea do you prefer?" ) 
print ( "What about some chocolate?" ) 
 
In this example, the line "It's time for tea!" , as well as "What tea do you prefer?", will                      
be printed only if there are 5 or more biscuits. The line "What about some chocolate?" will be                              
printed regardless of the number of biscuits.  
  
An if statement is executed only if its condition holds (the Boolean value is True ), otherwise, it's                                  
skipped.  
  
Boolean values basically make it clear whether a piece of code needs to be executed or not. Since                                    
comparisons result in bool , it's always a good idea to use them as a condition.  
  
There is one pitfall, though. You should not confuse the comparison operator for equality == with the                                  
assignment operator =. Only the former provides for a proper condition. Try to avoid this common                                
mistake in your code.  
6.2 Nested if statement  
Sometimes a condition happens to be too complicated for a simple if statement. In this case, you can                                    
use so-called nested if statements. The more if statements are nested, the more complex your code                                
gets, which is usually not a good thing. However, this doesn't mean that you need to avoid nested if                                      
statements at all costs. Let's take a look at the code below:  
  
rainbow = "red, orange, yellow, green, blue, indigo, violet" 
warm_colors = "red, yellow, orange" 
my_color = "orange" 
  
if my_color in rainbow: 
 print ( "Wow, your color is in the rainbow!" ) 
 if my_color in warm_colors: 
 print ( "Oh, by the way, it's a warm color." )  
  
The example above illustrates a nested if statement. If the variable my_color is a string that contains the                                    
name of a color from the rainbow, we enter the body of the first if statement. First, we print the message                                          
and then check if our color belongs to the warm colors. The membership operator in simply shows                                  
whether my_color is a substring of the respective string, rainbow or warm_colors. Just like arithmetic                              
comparisons, it returns a boolean value.  
  
Here is what we will see in our case:  
  
Wow, your color is in the rainbow! 
Oh, by the way, it's a warm color. 
 
When it comes to nested if statements, proper indentation is crucial, so do not forget to indent each                                    
statement that starts with the if keyword.  
  
6.3 Practice  
6.3.1 Bouquet  
Florist Lillian finds it easier to arrange flowers when their number is odd. So, if the number of flowers in a                                          
bouquet happens to be even, she usually adds one more flower. How would you replicate this procedure                                  
in code?  
Make sure to indent your code properly: hitting the right arrow button once equals to adding 4 spaces for                                      
indentation.To reorder the lines of code you can either use up and down arrows that are placed to the right of each                                            
line of code, or drag them with the mouse.  
Rearrange the lines to make the code work. Use the arrow buttons to add indentation.  
1 n_flowers = int(input()) 
2 if n_flowers % 2 == 0: 
3 n_flowers += 1  
6.3.2 Bad Omen  
Which of the following expressions will result in an error message when used as a condition after if ?  
Select one option from the list:  
x >= 666  
x = 666 (X)  
x < 666  
x == 666  
6.3.3 Boolean logic  
Which logical operator is an alternative to the nested if statements?  
Suppose we were about to rewrite this code snippet  
  
if sound == "music": 
 if n_people > 10: 
 print("We are at the party!") 
as follows:  
if sound == "music" ... n_people > 10: 
 print("We are at the party!") 
How would you change ... in this case? Enter a short text (answer): and  
6.3.4 Indentation  
What symbols are used to indent if blocks in Python?  
backslashes  
curly braces  
  
colons  
spaces (X)  
6.3.5 University  
Here's a piece of code that tells you what university the course is read in.  
  
harvard = "linguistics, physics, programming, fine arts" 
stanford = "biology, classics, geophysics, music" 
  
arts = "linguistics, fine arts, classics, music" 
sciences = "physics, programming, biology, geophysics" 
  
major = "..." 
if major in harvard: 
 if major in arts: 
 print ( "This is an arts program at Harvard" ) 
 if major in sciences: 
 print ( "This is a sciences program at Harvard" ) 
if major in stanford: 
 if major in arts: 
 print ( "This is an arts program at Stanford" ) 
 if major in sciences: 
 print ( "This is a sciences program at Stanford" ) 
 
What will be the result if major = "biology" ? Answer: This is a sciences program at Stanford 
6.3.6 Underworld  
Charon the Ferryman carries souls across the river Styx to the world of the dead but does so only for a                                          
fee. It's a business after all.  
  
Check whether the recently deceased has a coin, if any, print Welcome to Charon's boat! 
  
The variable coin stores a Boolean value, so it qualifies as a condition. If coin has False value, alas!                                      
There's nothing to be done about it.  
  
In conclusion, let's warn everyone in the underworld (both those in the boat and those overboard) by                                  
printing the message There is no turning back. 
  
Solution:  
coin = bool(int(input())) 
 
if coin > 0: 
 print("Welcome to Charon's boat!") 
print("There is no turning back.") 
6.3.7 The minimum  
Look at the program below. It's supposed to find the minimum of two numbers, a and b, and print it out.                                          
Unfortunately, the lines got mixed up, and the indentation disappeared. Fix this to solve the task.  
1 minimum = a 
2 if b < minimum: 
3 minimum = b 
4 print(minimum) 
 
  
6.3.8 Cook book  
Any recipe starts with a list of ingredients. Below is an extract from a cookbook with the ingredients for                                      
some dishes. Write a program that tells you what recipe you can make based on the ingredient you have.  
The input format: A name of some ingredient.  
  
The output format: A message that says "food time!" where " food " stands for the dish that                      
contains this ingredient. For example, " pizza time! ". If the ingredient is featured in several recipes,                            
write about all of them in the order they're featured in the cook book.  
  
Sample Input 1: basil  
Sample Output 1: pasta time!  
  
Sample Input 2: flour  
Sample Output 2: apple pie time! chocolate cake time!  
Solution:  
pasta = "tomato, basil, garlic, salt, pasta, olive oil" 
apple_pie = "apple, sugar, salt, cinnamon, flour, egg, butter" 
ratatouille = "aubergine, carrot, onion, tomato, garlic, olive oil, pepper, 
salt" 
chocolate_cake = "chocolate, sugar, salt, flour, coffee, butter" 
omelette = "egg, milk, bacon, tomato, salt, pepper" 
 
food = input () 
 
if food in pasta : 
 print ( "pasta time!" ) 
if food in apple_pie : 
 print ( "apple pie time!" ) 
if food in ratatouille : 
 print ( "ratatouille time!" ) 
if food in chocolate_cake : 
 print ( "chocolate cake time!" ) 
if food in omelette : 
 print ( "omelette time!" ) 
Outras resoluções:  
recipes = dict (pasta=pasta, apple_pie=apple_pie, ratatouille=ratatouille, 
chocolate_cake=chocolate_cake, 
 omelette=omelette) 
ingredient = input () 
for key, value in recipes.items(): 
 if ingredient in value: 
 print (f "{' '.join(key.split('_'))} time!" ) 
____ 
foods = { 'pasta' : pasta, 'apple pie' : apple_pie, 'ratatouille' : ratatouille, 'chocolate 
cake' : chocolate_cake, 'omelette' : omelette} 
 
ingredient = input () 
for food in foods: 
 if ingredient in foods[food]: 
 print (food, 'time!' ) 
____ 
dishes = { 
  
 pasta: "pasta" , 
 apple_pie: "apple pie" , 
 ratatouille: "ratatouille" , 
 chocolate_cake: "chocolate cake" , 
 omelette: "omelette" 
} 
 
ingredient = input () 
 
for dish in dishes: 
 if ingredient in dish: 
 print (dishes[dish] + " time!" ) 
____ 
food = [pasta, apple_pie, ratatouille, chocolate_cake, omelette] 
dish = [ "pasta" , "apple pie" , "ratatouille" , "chocolate cake" , "omelette" ] 
ingredient = input () 
 
for i in enumerate (food): 
 if ingredient in food[i[ 0 ]]: 
 print (f "{dish[i[0]]} time!" ) 
 
7 Theory: While loop  
Sometimes one iteration (=execution) of a statement is not enough to get the result you need. That is                                    
why Python offers a special statement that will execute a block of code several times. Meet the loop                                    
command and one of the universal loops — the while loop.  
  
People generally don't choose Python to write fast code. The main advantages of Python are readability                                
and simplicity. As the while loop requires the introduction of extra variables, iteration takes up more                                
time. Thus, the while loop is quite slow and not that popular. It resembles a conditional operator: usingthe while loop, we can execute a set of statements as long as the condition is true.  
  
The condition itself (2) is written before the body of the loop (some call it the conditional code) and is                                        
checked before the body is executed. If the condition is true (3a), the iterations continue. If the condition                                    
is false (3b), the loop execution is terminated and the program control moves further to the next                                  
operation.  
  
  
7.1 Visualization  
If we visualize the while loop, it’ll look like this:  
  
number = 0 
while number < 5 : 
 print (number) 
 number += 1 
print ( 'Now, the number is equal to 5' ) 
 
The variable number plays here the role of a counter – a variable that changes its value after each                                      
iteration. In this case, the iterations continue until the number is equal to 5 (note that the program                                    
outputs the value of the number before increasing it). When the value of a counter reaches 5, the                                    
program control moves to the next operation and prints the message. Here you can see the output of                                    
this code:  
  
0 
1 
2 
3 
4 
Now, the number is equal to 5 
  
7.2 The infinite loop  
If you delete a part of the conditional code where you increase the value of a counter, you will bump into                                          
the infinite loop . What does it mean? Since you don’t increase your variable, a condition never becomes                                  
false and can work forever. Usually, it is a logical fallacy, and you'll have to stop the loop using special                                        
statements or finishing the loop manually.  
  
Sometimes the infinite loop can be useful, e.g. in querying a client when the loop works continuously to                                    
provide the constant exchange of information with a user. You can implement it by writing True as a                                    
condition after the while header.  
 
while True: 
 ... 
 
7.3 Conclusion  
Now you are familiar with the while loop and its usage. Don’t forget about the role of a counter,                                      
otherwise, you’ll have to deal with the infinite loop. After you’ve written the code, try to "run" it as if you                                          
were a Python program. That’ll help you understand how the loop works.  
  
Programming is all about simplification, so the code should be readable, short, and clear. Don’t forget                                
about comments and syntax. In the beginning, it may seem that the while loop is not that easy to                                      
implement, but after a couple of times, you’ll see that it’s a very useful tool. 
7.4 Practice  
7.4.1 Something about loops  
Find the wrong suggestion:  
The while loop statement is written before the body of the loop.  
"While True" statement always leads to an infinite loop.  
If the while loop statement is true, loop iterations are over.  
An infinite loop is usually a logical mistake.

Mais conteúdos dessa disciplina