## First Assignment

#### 1) Apply the appropriate string methods to the **x** variable (as '.upper') to change it exactly to: "$Dichlorodiphenyltrichloroethane$".


```python
import numpy as np
import pandas as pd
```


```python
x = "DiClOrod  IFeNi  lTRicLOr oETaNo  DiChlorod iPHeny lTrichL oroEThaNe"
```


```python
print(x[34:-1].capitalize().replace(' ', ''))
```

    Dichlorodiphenyltrichloroethan


#### 2) Assign respectively the values: 'word', 15, 3.14 and 'list' to variables A, B, C and D in a single line of code. Then, print them in that same order on a single line separated by a space, using only one print statement.


```python
A,B,C,D = 'word', 15, 3.14, 'list'
print(A,B,C,D)
```

    word 15 3.14 list


#### 3) Use the **input()** function to receive an input in the form **'68.4 1.71'**, that is, two floating point numbers in a line separated by space. Then, assign these numbers to the variables **w** and **h** respectively, which represent an individual's weight and height (hint: take a look at the '.split()' method). With this data, calculate the individual's Body Mass Index (BMI) from the following relationship: 
    
\begin{equation}
BMI = \dfrac{weight}{height^2}
\end{equation}


```python
w,h = input("Enter your weight and height").split(' ',-1)

print(f"Your weight is {w} your height is {h} ")

BMI = float(w)/(float(h)**2)
print('Your body mass index (BMI) is {}'.format(BMI))
```

    Enter your weight and height68.4 1.71
    Your weight is 68.4 your height is 1.71 
    Your body mass index (BMI) is 23.39181286549708


#### This value can also be classified according to ranges of values, following to the table below. Use conditional structures to classify and print the classification assigned to the individual. 

<center><\center>  


(source: https://healthtravelguide.com/bmi-calculator/)


```python
if BMI < 18.5:
    print('Underweight')
elif BMI >=18.5 and BMI <25.0:
    print('Normal weight')
elif BMI >=25.0 and BMI <=29.9:
    print('Pre-obesity')
elif BMI > 29.9:
    print('Obese') 
else:
    print(f'BMI {BMI} not valid')
```

    Normal weight


#### 4) Receive an integer as an input and, using a loop, calculate the factorial of this number, that is, the product of all the integers from one to the number provided. 


```python
number = int(input("Write an integer: "))
fac = 1
n=1
while n <= number:
    fac = fac * n
    n=n+1
print(fac)
```

    Write an integer: 5
    120



```python
#alternative
number = int(input("Write an integer: "))
fac = 1
for n in range(1,number+1):
    fac =fac * n #das gleiche wie 'fac *= n'
print(fac)
```

    Write an integer: 4
    24


#### 5) Using a while loop and the input function, read an indefinite number of integers until the number read is -1. Present the sum of all these numbers in the form of a print, excluding the -1 read at the end. 


```python
n=0
summe=0
while n != -1:
    n = int(input("Write a number: "))
    summe = n + summe
summe+=1
print(summe)
```

    Write a number: 2
    Write a number: 3
    Write a number: 54
    Write a number: 6
    Write a number: 7
    Write a number: 8
    Write a number: -2
    Write a number: -1
    78


#### 6) Read the **first name** of an employee, his **amount of hours worked** and the **salary per hour** in a single line separated by commas. Next, calculate the **total salary** for this employee and show it to two decimal places.


```python
name,hours,salary_hour=input('Write your name, whole hours worked and salary per hour, separated by ","').split(',')
total_salary = int(hours) * float(salary_hour)
print(f"{name}'s total salary with {int(hours)} hours is {total_salary:.2f} Euros")
```

    Write your name, whole hours worked and salary per hour, separated by ","Luana,20,12
    Luana's total salary with 20 hours is 240.00 Euros


#### 7) Read three floating point values **A**, **B** and **C** respectively. Then calculate itens a, b, c, d and e: 


```python
A,B,C = input('Enter A,B,C: ').split(',')
A=float(A)
B=float(B)
C=float(C)
```

    Enter A,B,C: 3,6,8


    a) the area of the triangle rectangle with A as the base and C as the height.


```python
area_triangle = 1/2 * A  * C
print(area_triangle)
```

    12.0


    b) the area of the circle of radius C. (pi = 3.14159) 


```python
area_circle = C**2 * np.pi
print(area_circle)
```

    201.06192982974676


    c) the area of the trapezoid that has A and B for bases and C for height. 


```python
area_trapezoid = (A+B)/2 * C
print(area_trapezoid)
```

    36.0


    d) the area of the square that has side B. 


```python
area_square = B**2
print(area_square)
```

    36.0


    e) the area of the rectangle that has sides A and B. 


```python
area_rectangle = A * B
print(area_rectangle)
```

    18.0


#### 8) Read **the values a, b and c** and calculate the **roots of the second degree equation** $ax^{2}+bx+c=0$ using [this formula](https://en.wikipedia.org/wiki/Quadratic_equation). If it is not possible to calculate the roots, display the message **“There are no real roots”**. 


```python
def quad_roots(a,b,c):
    N1=0
    N2=0
    w=b**2-4*a*c
    if w>=0:
        N1=(-b+np.sqrt(w))/(2*a)
        N2=(-b-np.sqrt(w))/(2*a)
        print(f"Roots are {N1} and {N2}")
        roots=True
    else:
        print("There are no real roots.")
        roots=False
    return N1,N2,roots
a,b,c = input('Enter a,b,c: ').split(',')
a=float(a);b=float(b);c=float(c)
```

    Enter a,b,c: -2,5,1



```python
quad_roots(a,b,c)
```

    Roots are -0.18614066163450715 and 2.686140661634507





    (-0.18614066163450715, 2.686140661634507, True)



#### 9) Read four floating point numerical values corresponding to the coordinates of two geographical coordinates in the cartesian plane. Each point will come in a line with its coordinates separated by space. Then calculate and show the distance between these two points. 

(obs: $d=\sqrt{(x_1-x_2)^2 + (y_1-y_2)^2}$)


```python
point_1 = input('Enter the coordinates of point 1 x y: ').split(' ')
x1 = float(point_1[0])
y1 = float(point_1[1])
point_2 = input('Enter the coordinates of point 2 x y: ').split(' ')
x2 = float(point_2[0])
y2 = float(point_2[1])
d = np.sqrt((x2-x1)**2+(y2-y1)**2)
print(f'The distance is {d:.2f}')
```

    Enter the coordinates of point 1 x y: 2 7
    Enter the coordinates of point 2 x y: 4 9
    The distance is 2.83


#### 10) Read **two floating point numbers** on a line that represent **coordinates of a cartesian point**. With this, use **conditional structures** to determine if you are at the origin, printing the message **'origin'**; in one of the axes, printing **'x axis'** or **'y axis'**; or in one of the four quadrants, printing **'q1'**, **'q2**', **'q3'** or **'q4'**. 


```python
def read_node():
    point = input('Enter the coordinates of point x y: ').split(' ')
    x = float(point[0])
    y = float(point[1])
    return x,y

def check_location(x,y):
    if x==0 and y==0:
        loc='Origin'
    elif x==0 and y!=0:
        loc='y axis'
    elif x!=0 and y==0:
        loc='x axis'
    elif x>0 and y>0:
        loc='q1'
    elif x<0 and y>0:
        loc='q2'
    elif x<0 and y<0:
        loc='q3'
    elif x>0 and y<0:
        loc='q4'
    return loc
```


```python
x,y = read_node()
loc=check_location(x,y)
print(loc)
```

    Enter the coordinates of point x y: 6 2
    q1


#### 11) Read an integer that represents a phone code for international dialing.  
#### Then, inform to which country the code belongs to, considering the generated table below:
(You just need to consider the first 10 entries)  


```python
import pandas as pd
df = pd.read_html('https://en.wikipedia.org/wiki/Telephone_numbers_in_Europe')[1]
df = df.iloc[:,:2]
df.head(20)
```




<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Country</th>
      <th>Country calling code</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>Austria</td>
      <td>43</td>
    </tr>
    <tr>
      <th>1</th>
      <td>Belgium</td>
      <td>32</td>
    </tr>
    <tr>
      <th>2</th>
      <td>Bulgaria</td>
      <td>359</td>
    </tr>
    <tr>
      <th>3</th>
      <td>Croatia</td>
      <td>385</td>
    </tr>
    <tr>
      <th>4</th>
      <td>Cyprus</td>
      <td>357</td>
    </tr>
    <tr>
      <th>5</th>
      <td>Czech Republic</td>
      <td>420</td>
    </tr>
    <tr>
      <th>6</th>
      <td>Denmark</td>
      <td>45</td>
    </tr>
    <tr>
      <th>7</th>
      <td>Estonia</td>
      <td>372</td>
    </tr>
    <tr>
      <th>8</th>
      <td>Finland</td>
      <td>358</td>
    </tr>
    <tr>
      <th>9</th>
      <td>France</td>
      <td>33</td>
    </tr>
    <tr>
      <th>10</th>
      <td>Germany</td>
      <td>49</td>
    </tr>
    <tr>
      <th>11</th>
      <td>Greece</td>
      <td>30</td>
    </tr>
    <tr>
      <th>12</th>
      <td>Hungary</td>
      <td>36</td>
    </tr>
    <tr>
      <th>13</th>
      <td>Iceland</td>
      <td>354</td>
    </tr>
    <tr>
      <th>14</th>
      <td>Ireland</td>
      <td>353</td>
    </tr>
    <tr>
      <th>15</th>
      <td>Italy</td>
      <td>39</td>
    </tr>
    <tr>
      <th>16</th>
      <td>Latvia</td>
      <td>371</td>
    </tr>
    <tr>
      <th>17</th>
      <td>Liechtenstein</td>
      <td>423</td>
    </tr>
    <tr>
      <th>18</th>
      <td>Lithuania</td>
      <td>370</td>
    </tr>
    <tr>
      <th>19</th>
      <td>Luxembourg</td>
      <td>352</td>
    </tr>
  </tbody>
</table>
</div>




```python
code=int(input('Enter an integer: '))
country=df[df["Country calling code"]==str(code)]["Country"].item()
print(country)
```

    Enter an integer: 371
    Latvia


#### 12) Write a piece of code that reads 6 numbers in a row. Next, show the number of positive values entered. On the next line, print the average of the values to one decimal place. 


```python
a = input("Write 6 numbers: ").split(',')
positive=0
summe=0
for number in a:
    if int(number)>0:
        positive=positive+1
        summe=summe+int(number)
print(f'The count of positive numbers is {positive}')
average=summe/positive
print(round(average,1))
```

    Write 6 numbers: -2,3,5,71,901,-45
    The count of positive numbers is 4
    245.0


#### 13) Read an integer **N**. Then print the **square of each of the even values**, from 1 to N, including N, if applicable, arranged one per line. 


```python
N = input('Write a number: ')
for x in range(1,int(N)+1):
    if x %2==0:
        x=x**2
        print(x)
```

    Write a number: 12
    4
    16
    36
    64
    100
    144


#### 14) Using **input()**, read an integer and print its classification as **'even / odd'** and **'positive / negative'** . The two classes for the number must be printed on the same line separated by a space. In the case of zero, print only **'null'**. 


```python
L = int(input('Write a number: '))
if L==0:
    print('null')
else:
    if L %2==0:
        print('even')
    else:
        print('odd')
    #------
    if L<0:
        print('negative')
    else:
        print('positive')
```

    Write a number: 302
    even
    positive


## Challenge
#### 15) Ordering problems are recurrent in the history of programming. Over time, several algorithms have been developed to fulfill this function. The simplest of these algorithms is the [**Bubble Sort**](https://en.wikipedia.org/wiki/Bubble_sort), which is based on comparisons of elements two by two in a loop of passes through the elements. Your mission, if you decide to accept it, will be to input six whole numbers ramdonly ordered. Then implement the **Bubble Sort** principle to order these six numbers **using only loops and conditionals**.  
#### At the end, print the six numbers in ascending order on a single line separated by spaces. 


```python
liste=input('Write six whole numbers: ').split(',')
test=1
while test>0:
    test=0
    for i in range(len(liste)-1):
        a=int(liste[i])
        b=int(liste[i+1])
        if a>b:
            liste[i]=b
            liste[i+1]=a
            test=test+1
print(liste)
```

    Write six whole numbers: 82,405,2,1,56,734
    [1, 2, 56, 82, 405, '734']



```python

```

05000076e8ee8851733bb1f062d59a11e378f576
ipynb
Jupyter Notebook
Assignments/Assignment_1.ipynb
luanabotello/Python_Course
bd1cb067817bc4ee3061793bf60e5b69dbedad0f
Apache-2.0
Assignments/Assignment_1.ipynb
luanabotello/Python_Course
bd1cb067817bc4ee3061793bf60e5b69dbedad0f
Apache-2.0
Assignments/Assignment_1.ipynb
luanabotello/Python_Course
bd1cb067817bc4ee3061793bf60e5b69dbedad0f
Apache-2.0
Qwen/Qwen-72B
1. YES
2. YES