In [ ]:
# -*- coding: utf-8 -*-
"""
Created on Wed Mar 10 13:39:36 2021

@author: Gustavo Eduardo Marcatti
"""
####----------------------------------------------------------------------####
# a) Obter os quadrados dos números inteiros de 15 até 200
####----------------------------------------------------------------------####
# for 
for elemento in range(15, 201):
    print(elemento, "² = ", elemento**2, sep = '')

# while
elemento = 15
while elemento <= 200:
    print(elemento, "² = ", elemento**2, sep = '')
    elemento += 1 # elemento = elemento + 1

####----------------------------------------------------------------------####
# b) Obter os números naturais divisíveis 4 de 0 até 199
####----------------------------------------------------------------------####
# for
# list(range(200)) = list(range(0, 200)) = list(range(0, 200, 1))

for elemento in range(200):
    if elemento % 4 == 0:
        print(elemento, "é divisível por 4")

# # Extra: pares
# for elemento in range(1, 200):
#     if elemento % 2 == 0:
#         print(elemento, "é par")

# # Extra: ímpares
# for elemento in range(1, 200):
#     if not elemento % 2 == 0: # pode utilizar o ~ (not: inverte o booleano)
#         print(elemento, "é impar")

elemento = 0
while elemento < 200:
    if elemento % 4 == 0:
        print(elemento, "é divisível por 4")
    elemento += 1

####----------------------------------------------------------------------####
# c) Algoritmo de pesquisa em uma lista
####----------------------------------------------------------------------####
lista = [12, 32, 12, 45, 102, 2, 23, 19, 77, 5,
         201, 154, 303, 25, 12, 2, 534, 65, 91, 2]

# Como acessar os elementos de uma lista
# Alternativa 1: iterator (acessar os elementos com um iterator)
for elemento in lista:
    print(elemento)
    
# Alternativa 2: indexação (acessar os elementos pelo índice ou posição) 
for i in range(len(lista)):
    print(lista[i])

# Alternativa 1
def pesq_v1(l, num):
    indice = "Não existe"
    for i in range(len(l)):
        if l[i] == num:
            indice = i
    return(indice)

print(pesq_v1(lista, 401))
print(pesq_v1(lista, 102))
print(pesq_v1(lista, 1))
print(pesq_v1(lista, 77))
print(pesq_v1(lista, 12))

# Alternativa 2
def pesq_v2(l, num):
    for i in range(len(l)):
        if l[i] == num:
            return(i)
    return("Não existe")

print(pesq_v2(lista, 401))
print(pesq_v2(lista, 102))
print(pesq_v2(lista, 1))
print(pesq_v2(lista, 77))
print(pesq_v2(lista, 12))

# Alternativa 3
def pesq_v3(l, num):
    try:
        return(l.index(num))
    except ValueError:
        return("Não existe")

print(pesq_v3(lista, 401))
print(pesq_v3(lista, 102))
print(pesq_v3(lista, 1))
print(pesq_v3(lista, 77))
print(pesq_v3(lista, 12))

# Extra: algoritmo retona mais de um indice se existir
# def pesq_todos(l, num):
#     indices = []
#     for i in range(len(l)):
#         if l[i] == num:
#             indices.append(i)
#     if indices:
#         return(indices)
#     else:
#         return("Não existe")
                    
# print(pesq_todos(lista, 401))
# print(pesq_todos(lista, 102))
# print(pesq_todos(lista, 1))
# print(pesq_todos(lista, 77))
# print(pesq_todos(lista, 12))