## First Assignment

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


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


```python
y = x.replace(' ','')
print(y[27:].capitalize())
```

    Dichlorodiphenyltrichloroethane


#### 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(f'{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
weight, height = input("Enter weight and height, seperated by space: ").split()
BMI = float(weight)/float(height)**2
print(BMI)

```

#### 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 <= 24.9:
    print("Normal weight")
elif BMI <= 29.9:
    print("Pre-obesity")
elif BMI <= 34.9:
    print("Obesity class I")
elif BMI <= 39.9:
    print("Obesity class II")
else:
    print("Obesity class III")
```

    Obesity class III


#### 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("Insert an integer:"))
fact = 1
for i in range(1, number+1, 1):
    fact = fact * i
print(fact)
```

    Insert an integer:14
    87178291200


#### 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
sum_input, number_input = 0, 0

while number_input != -1:
    sum_input += number_input
    number_input = int(input("Enter an integer: "))
print(f"Sum of input = {sum_input}")
```

    Enter an integer: 4
    Enter an integer: 6
    Enter an integer: -1
    Sum of input = 10


#### 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 = input("Insert name of the employee, amount of hours worked and salary per hour, separated by commas:").split(",")
totalSalary = float(hours)*float(salary)
print(f"{name} earns {round(totalSalary,2)}")
```

    Insert name of the employee, amount of hours worked and salary per hour, separated by commas:Heinz, 23, 193.440021
    Heinz earns 4449.12


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


```python
x, y, z = input("Enter the values for A, B, C separated by comma").split(",")
A, B, C = float(x), float(y), float(z)

```

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


```python
print("Area of the triangle:", A*C/2)
```

    Area of the triangle: 5.0


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


```python
print("Area of the circle:", 3.14159*C**2)
```

    Area of the circle: 78.53975


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


```python
print("Area of the trapezoid:", (A+B)*C/2)
```

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


```python
print("Area of the square:", B**2)
```

    Area of the square: 9.0


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


```python
print("Area of the rectangle:", A*B)
```

    Area of the rectangle: 6.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
a, b, c = [float(x) for x in input("Enter the values of a, b and c, separated by commas: ").split(",")]
root  = (b**2) - (4*a*c)
if   root < 0:
     print("There are no real roots")
elif root == 0:
        x = -b/(2*a)
        print(f"Root: {x}")
else:
        x1 = (-b+root**2)/(2*a)
        x2 = (-b-root**2)/(2*a)
        print(f"Roots: {x1}, {x2}")

```

    Enter the values of a, b and c, separated by commas: 2, 6666, 1
    Roots: 493629481513409.5, -493629481516742.5


#### 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
x1, x2 = [float(a) for a in input("Enter coordinates x1 and x2, separated by comma ").split(",")]
y1, y2 = [float(a) for a in input("Enter coordinates y1 and y2: separated by comma ").split(",")]
d = ((x1-x2)**2+(y1-y2)**2)**0.5
print(f"d = {d}")
```

    Enter coordinates x1 and x2, separated by comma 2, 6
    Enter coordinates y1 and y2: separated by comma 6, 2
    d = 5.656854249492381


#### 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
x, y = [float(x) for x in input("Insert a float for x, y: ").split(",")]

if x == 0 and y == 0:
    print('Origin')
elif x == 0:
    print('y axis')
elif y == 0:
    print('x axis')
elif x > 0 and y > 0:
    print('q1')
elif x > 0:
    print('q4')
elif y > 0:
    print('q2')
else:
    print('q3')
```

#### 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
country_code = int(input("Enter the country calling code:"))
code_dict = {43:'Austria',
             32:'Belgium',
             359:'Bulgaria',
             385:'Croatia',
             357:'Cyprus',
             420:'Czech Republic',
             45:'Denmark',
             372:'Estonia',
             359:'Finland',
             33:'France',
            }
if country_code in code_dict.keys():
    print(code_dict[country_code])
else:
    print('Cannot find country.')
```

    Enter the country calling code:33
    France


#### 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
numbers = [float(x) for x in input("Enter six values separated by commas: ").split(",")]

pos, total = 0, 0
for i in numbers:
    total += i
    if i > 0:
        pos += 1
print(f"{pos} positive numbers")
print(f"Average = {round(total/6 , 1)}")
```

    Enter six values separated by commas: 5, 2, 5, 7, 2, 0
    5 positive numbers
    Average = 3.5


#### 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 = int(input("Enter integer: "))
for x in range(1,N+1,1):
    if x%2==0:
        print(x**2)
```

    Enter integer: 10
    4
    16
    36
    64
    100


#### 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
number = int(input("Enter an integer:"))
class_even = "even" if number%2 == 0 else "odd"
class_pos = "positive" if number == abs(number) else "negative" 
if number == 0:
    print("null")
else:
    print(class_even, class_pos)
```

    Enter an integer:-15
    odd negative


## 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

```

19d84d6fbd2ad03cb3a9fdda6cc7f921dd902567
ipynb
Jupyter Notebook
Assigments/Assignment_1.ipynb
stkiesling/Python_Course
57e953677c9d5913da6a7744ca82e2eaf66c2638
Apache-2.0
Assigments/Assignment_1.ipynb
stkiesling/Python_Course
57e953677c9d5913da6a7744ca82e2eaf66c2638
Apache-2.0
Assigments/Assignment_1.ipynb
stkiesling/Python_Course
57e953677c9d5913da6a7744ca82e2eaf66c2638
Apache-2.0
Qwen/Qwen-72B
1. YES
2. YES