domingo, 10 de dezembro de 2023

22. Módulos e Pacotes

Modularização
Construir módulos para dividir o programa em menores partes e aumentar a legibilidade

uteis.py:
def fatorial(n):
    f = 1
    for i in range(1, n + 1):
        f *= i
    return f

def dobro(n):
    return n * 2

def triplo(n):
    return n * 3

numeros.py:
import uteis
num = int(input('Digite um número: '))
fat = uteis.fatorial(num)
print(f'O fatorial de {num} é {fat}')
print(f'O dobro de {num} é {uteis.dobro(num)}')
print(f'O triplo de {num} é {uteis.triplo(num)}')

Pacotes
São pastas contendo módulos
Exemplo: Pacote uteis com partes chamadas números, strigs, cores, datas 



Exercícios
107: Crie um módulo chamado moeda.py que tenha as funções incorporadas aumentar(), diminuir(), dobro() e metade(). Faça também um programa que importe esse módulo e use algumas dessas funções.

108: Adapte o código do exercício 107, criando uma função adicional chamada moeda() que consiga mostrar valores como um valor monetário formatado.

109: Modifique as funções que foram criadas no desafio 107 para que eles aceitem um parâmetro a mais, informando se o valor retornado por elas vai ser ou não formatado pela função moeda(), desenvolvida no exercício 108.

110: Adicione ao módulo moeda.py criado nos desafios anteriores, uma função chamada resumo(), que mostre na tela algumas informações geradas pelas funções que já temos no módulo criado até aqui. moeda.resumo(preço, aumento, redução)

111: Crie um pacote chamado utilidadesCeV que tenha dois módulos internos chados moeda e dado. Transfira todas as funções utilzadas nos desafios 107, 108 e 109 para o primeiro pacote e mantenha tudo funcionando.

112: Dentro do pacote utilidadesCeV que criamos no exercício 111, temos um módulo chamado dado. Crie uma função chamada leiaDinheiro() que seja capaz de funcionar como a função input(), mas com uma validação de dados para aceitar apenas valores que sejam monetários.

sábado, 9 de dezembro de 2023

Função 'Deseja continuar incluindo'

def resposta():
while True:
resp = str(input('Deseja continuar incluindo? [S/N] ')).strip().upper()[0]
if resp in 'SN':
break
else:
print('Resposta inválida! Digite apenas S ou N!')
if resp == 'S':
return True
if resp == 'N':
return False


numeros = []
while True:
n = int(input('Digite um número '))
numeros.append(n)
if resposta():
continue
else:
break
print(numeros)

 

21. Funções (parte2)

Interactive Help

função interna help()

em console python:

>>> help()

para sair: digitar 'quit'


outra forma:

help(print)


para imprimir a documentação:

print(input.__doc__)


Docstrigs
Ex.: Criando a função contador():

def contador(i, f, p):

    """

    -> Faz uma contagem e mostra na tela.

    :param i: inicio da contagem

    :param f: fim da contagem

    :param p: passao da contagem

    :return: sem retorno

    """

    c = i

    while c <= f:

        print(f'{c}', end='..')

c += p

    print('FIM')


contador(2, 10, 2)


Parâmetros Opcionais:

def somar(a = 0, b = 0, c = 0)

    s = a + b + c

    print(f'A soma vale {s}')


somar(3, 2, 5)

somar(8, 4) #se colocar menos parametros pode dar erro, caso eu nao coloque o valor padrão na função


Escopo de variáveis:

Variável global: Declarada no programa principal

Variável local: declarada dentro de uma função


def teste(a):

    a += 2

    b = 1

    c = 4

    print(f'a dentro vale {a}')

    print(f'b dentro vale {b}')

    print(f'c dentro vale {c}')



a = 5

print(f'a fora vale {a}')


teste(a)


a fora vale 5
a dentro vale 7
b dentro vale 1
c dentro vale 4


Cria-se duas variáveis a, uma global e uma local.


Para que a variável mude de valor também no escopo global usar o global:


def teste(b):

    global a  #é como se eu pedisse para o sistema não criar uma variavel a mais, mas usar a variavel global a

    a = 8

    b += 1

    c = 4

    print(f'a dentro vale {a}')

    print(f'b dentro vale {b}')

    print(f'c dentro vale {c}')



a = 5

print(f'a fora vale {a}')


teste(a)

print(f'a fora vale {a}')


a fora vale 5
a dentro vale 8
b dentro vale 6
c dentro vale 4
a fora vale 8

______________________________


Retorno de Valores
return

Exemplo:

def somar(a=0, b=0, c=0):

    s = a + b + c

    return s


c = somar(2, 3, 5) + somar(4, 7) + somar(5)

print(c)


def fatorial(num=1):

    f = 1

    for i in range(num, 0, -1):

f *= i

    return f



n = int(input('Digite um número: '))

print(f'O fatorial de {n} é {fatorial(n)}')


Posso retornar booleanos, strings etc.:


def par(n=0):

    if n % 2 == 0:

return True

    else:

return False


par(num)

if par(num):

    print('É par')

else:

    print('Não é par')



Exercícios
101: Crie um programa que tenha uma função chamada voto() que vai receber como parâmetro o ano de nascimento de uma pessoa, retornando um valor literal indicando se uma pessoa tem voto NEGADO, OPCIONAL ou OBRIGATÓRIO nas eleições.


102: Crie um programa que tenha uma função chamada fatorial() que receba dois parâmetros: o primeiro que indique o número a calcular e o outro chamado show, que será mostrado ou não na tela o processo de cálculo do fatorial.


103: Faça um programa que tenha uma função chamada ficha(), que recebe dois parâmetros opcionais: o nome de um jogador e quantos gols ele marcou. O programa deverá ser capaz de mostrar a ficha do jogador, mesmo que algum dado não tenha sido informado corretamente.


104: Crie um programa que tenha a função leiaInt(), que vai funcionar de forma semelhante à função input() do Python, só que fazendo a validação para aceitar apenas um valor numérico. Ex.: n = leiaInt('Digite um n').


105: Faça um programa que tenha uma função notas() que pode receber várias notas de alunos e vai retornar um dicionário com as seguintes informações:

 - Quantidade de notas
 - A maior nota
 - A menor nota
 - A média da turma
 - A situação (opcional)


106: Faça um minissistema que utilize o Interactive Help do Python. O usuário vai digitar o comando e o manual vai aparecer. Quando o usuário digitar 'FIM', o programa 

segunda-feira, 4 de dezembro de 2023

20. Funções (Parte 1)

a = 4
b = 5
s = a + b
print(s)

a = 8
b = 9
s = a + b
print(s)

a = 2
b = 1
s = a + b
print(s)
 9
17
3
 Usando funções:
 def soma(a, b):
s = a + b
print(s)


soma(4, 5)
soma(8, 9)
soma(2, 1)
9
17
3
---------------------------------------------------
 def soma(a, b):
print(f'a = {a} e b = {b}')
s = a + b
print(f'A soma vale {s}')


soma(a = 4, b = 5)
soma(b = 8, a = 9)
soma(b = 2, a = 1)
a = 4 e b = 5
A soma vale 9
a = 9 e b = 8
A soma vale 17
a = 1 e b = 2
A soma vale 3
-----------------------------------
Empacotando parâmetros:
Preciso colocar o * para indicar múltiplos parâmetros par a variável num,
assim, será no fim criada uma Tupla 
 def contador(*num):
print(num)


contador(5, 7, 3, 1, 4)
contador(8, 4, 7)
(5, 7, 3, 1, 4)
(8, 4, 7)
------------
 Com listas:
def dobra(lst):
for i in range(len(lst)):
lst[i] *= 2

valores = [7, 2, 5, 0, 4]
dobra(valores)
print(valores)
[14, 4, 10, 0, 8]
Exercícios
096: Faça um programa que tenha uma função chamada área(), que receba as 
dimensões de um terreno retangular (largura e comprimento) e mostre a área 
do terreno.

097: Faça um programa que tenha uma função chamada escreva(), que receba um 
texto qualquer como parâmetro e mostre uma mensagem com tamanho adaptável.
Ex.:
escreva('Olá, Mundo!')
Saída:
-------------
Olá, Mundo!
-------------

098: Faça um programa que tenha uma função chamada contador(), que receba 
três parâmetros: início, fim e passo e realize a contagem.
Seu programa tem que realizar três contagens através da função criada:
a) De 1 até 10, de 1 em 1
b) De 10 até 0, de 2 em 2
c) Uma contagem personalizada

099: Faça um programa que tenha uma função chamada maior(), que receba 
vários parâmetros com valores inteiros. Seu programa tem que analisar todos 
os valores e dizer qual deles é o maior.

100: Faça um programa que tenha uma lista chamada números e duas funções 
chamadas sorteio() e somaPar(). A primeira função vai sortear 5 números e 
vai colocá-los dentro da lista e a segunda função vai mostrar a soma entre 
todos os valores PARES sorteados pela função anterior. 

segunda-feira, 27 de novembro de 2023

19. Variáveis Compostas (Dicionários)

Criando Dicionários:
dados = dict()
dados = {}
dados = {'nome':'Pedro, 'idade': 25}
print(dados['nome'])  Pedro
prind(dados['idade']) 25


Inserindo dados em um Dicionário:
O método append() não funciona nos dicionários

dados['sexo'] = 'M'
print(dados)   {'nome':'Pedro, 'idade': 25, 'sexo':'M'}


Apagar dados em um Dicionário:
del dados['idade']
print(dados)   {'nome':'Pedro, 'sexo':'M'}


Percorrendo Dicionários:
filme = {'titulo':'Star Wars',
'ano':1977,
'diretor':'George Lucas'
}

keys: 'titulo', 'ano', 'diretor' # é o nome do índice no dicionário
values: 'Star Wars', '1977', 'George Lucas' # é o dado que ocupa o espaço na memória
items: 'titulo':'Star Wars', 'ano':1977, 'diretor':'George Lucas'

print(filme.values())
print(filme.keys())
print(filme.items())


Usando o for
for k, v in filme.items():
    print(f'O {k} é {v}')

O título é Star Wars
O ano é 1977
O diretor é George Lucas

Juntando Listas e Dicionários
locadora = [{'titulo':'Star Wars', 'ano':1977 , 'diretor':'George Lucas'}, {'titulo':'Avengers', 'ano': 2012 , 'diretor':'Joss Whedon'}, {'titulo':'Matrix', 'ano': 1999 , 'diretor':'Wachowski'}]

print(locadora[0]['ano'])  1977
print(locadora[2]['titulo')  'Matrix'

locadora = [{'titulo':'Star Wars', 'ano':1977 , 'diretor':'George Lucas'},
{'titulo':'Avengers', 'ano': 2012 , 'diretor':'Joss Whedon'},
{'titulo':'Matrix', 'ano': 1999 , 'diretor':'Wachowski'}
]
for filme in locadora:
print(filme['titulo'])
print('-' * 20)
for cineastas in locadora:
print(cineastas['diretor'])
print('-' * 20)
for tempo in locadora:
print(tempo['ano'])
Star Wars
Avengers
Matrix
--------------------
George Lucas
Joss Whedon
Wachowski
--------------------
1977
2012
1999

Criando Dicionários com a iteração for
Em Dicionários temos o método copy() para copiar os dados pra dentro da lista

estado = dict()
brasil = list()
for c in range(0, 3):
    estado['uf'] = str(input('Unidade Federativa: '))
    estado['sigla'] = str(input('Sigla do Estado: '))
    brasil.append(estado.copy())
for e in brasil: # varre a lista brasil
    for k, v in e.items(): # varre cada dicionario dentro da lista brasil
        print(f'O campo {k} tem valor {v}.')
_____________________________________
Unidade Federativa: Ceará Sigla do Estado: CE Unidade Federativa: Bahia Sigla do Estado: BA Unidade Federativa: Rio de Janeiro Sigla do Estado: RJ O campo uf tem valor Ceará. O campo sigla tem valor CE. O campo uf tem valor Bahia. O campo sigla tem valor BA. O campo uf tem valor Rio de Janeiro. O campo sigla tem valor RJ.

Ordenando itens de um dicionário
resultados = {'jogador_1': 4, 'jogador_2': 3, 'jogador_3': 5, 'jogador_4': 1}

Queremos ordenar pela pontuação que cada jogador tem (pelos values e não pelas keys), para tanto será necessário importar o itemgetter da biblioteca operator combinado com o método sorted() para jogarmos dentro de uma nova lista os dados ordenados como se deseja

from operator import itemgetter
resultados = {'jogador_1': 4, 'jogador_2': 3, 'jogador_3': 5, 'jogador_4': 1} # dicionário original
ordenar = [] # lista onde serão jogados os itens do dicionário
print(resultados)
print('-' * 20)
ordenar = sorted(resultados.items(), key=itemgetter(1), reverse=True)
print(ordenar)

sorted(<dicionario.items(), keys=itemgetter(0 para key e 1 para o value)> se quiser em ordem decrescente acrescenta o reverse=True

Ver Exercício 091

Exercícios
090: Faça um programa que leia nome média de um aluno, guardando também a situação em um dicionário. No final, mostre o conteúdo da estrutura na tela.


091: Crie um programa onde 4 jogadores joguem um dado e tenham resultados aleatórios. Guarde esses resultados em um dicionário. No final, coloque esse dicionário em ordem, sabendo que o vencedor tirou o maior número no dado.
from random import randint as aleatorio
from time import sleep
from operator import itemgetter
resultados = {}
ordenar = []
for i in range(0, 4):
resultados[f'jogador_{i + 1}'] = aleatorio(1, 6)
# print(resultados)
for k, v in resultados.items():
sleep(1)
print(f'{k}: tirou {v}')
print('-' * 20)
ordenar = sorted(resultados.items(), key=itemgetter(1), reverse=True)
# print(ordenar)
print('== RANKING ==')
for i, jogador in enumerate(ordenar):
print(f' Em {i + 1}º lugar o {jogador[0]} com \033[1m{jogador[1]}\033[m pontos')
sleep(1)

092: Crie um programa que leia nome, ano de nascimento e carteira de trabalho e cadastre-os (com idade) em um dicionário se por acaso a CTPS for diferente de ZERO, o dicionário receberá também o ano de contratação e o salário. Calcule e acrescente, além da idade, com quantos anos a pessoa vai se aposentar (35 anos de contribuição).

093: Crie um programa que gerencie o aproveitamento de um jogador de futebol. O programa vai ler o nome do jogador e quantas partidas ele jogou. Depois vai ler a quantidade de gols feitos em cada partida. No final, tudo será guardado em um dicionário, incluindo o total de gols feitos durante o campeonato.
{'nome': 'Joelson', 'gols': [2, 1, 0, 0, 3], 'total': 6}

094: Crie um programa que leia nome, sexo e idade de várias pessoas, guardando os dados de cada pessoa em um dicionário e todos os dicionários em uma lista. No final, mostre:
a) Quantas pessoas foram cadastradas
b) A média de idade do grupo
c) Uma lista com todas as mulheres
d) Uma lista com todas as pessoas com idade acima da média

095: Aprimore o Exercício 093 para que ele funcione com vários jogadores, incluindo um sistema de visualização de detalhes do aproveitamento de cada jogador.






sábado, 25 de novembro de 2023

18. Variáveis Compostas (listas) - Parte 2

Listas Compostas
dados = ['Pedro', 25]
pessoas = list()

pessoas.append(dados[:])

pessoas = [['Pedro', 25], ['Maria', 19], ['João', 32]]

print(pessoas[0][0])  'Pedro'
print(pessoas[1][1])  19
print(pessoas[2][0]  'João'
print(pessoas[1])  ['Maria', 19]


Exemplos
-------------------
galera = [['João', 19], ['Ana', 33], ['Joaquim', 13], ['Maria', 45]]
for p in galera:
    print(p)

['João', 19]
['Ana', 33]
['Joaquim', 13]
['Maria', 45]


for p in galera:
    print(p[0])

João
Ana
Joaquim
Maria

---------------------
Preenchendo uma lista composta:

dados = list()
for c in range(0,3):
dados.append(str(input('Nome: ')))
dados.append(int(input('Idade: ')))
galera.append(dados[:])
dados.clear()
print(galera)

Nome: José
Idade: 15
Nome: Maria
Idade: 25
Nome: Antônio
Idade: 36
[['José', 15], ['Maria', 25], ['Antônio', 36]]

Exercícios

084: Faça um programa que leia nome e peso de várias pessoas, guardando tudo em uma lista. No final, mostre:
a) Quantas pessoas foram cadastradas.
b) Uma listagem com as pessoas mais pesadas.
c) Uma listagem com pessoas mais leves.

085: Crie um programa onde o usuário possa digitar sete valores numéricos e cadastre-os
em uma lista única que mantenha separados os valores pares e ímpares. No final, mostre os valores pares e ímpares em ordem crescente.

086: Crie um programa que crie uma matriz de dimensão 3x3 e preencha com valores lidos pelo teclado. No final, mostre a matriz na tela, com a formatação correta.

087: Aprimore o desafio anterior, mostrando no final:
a) A soma de todos os valores pares digitados.
b) A soma dos valores da terceira coluna.
c) O maior valor da segunda linha.

088: Faça um programa que ajude um jogador da MEGA SENA a criar palpites. O programa vai perguntar quantos jogos serão gerados e vai sortear 6 números entre 1 e 60 para cada jogo, cadastrando tudo em uma lista composta.

089: Crie um programa que leia nome e duas notas de vários alunos e guarde tudo em uma lista composta. No final, mostre um boletim contendo a média de cada um e permita que o usuário possa mostrar as notas de cada aluno individualmente.

17. Variáveis Compostas (Listas) - Parte 1

Listas (parte 1)
lanche = ['hambúrguer', 'suco', 'pizza', 'pudim']

listas são entre
[]

Lanche = ['hambúrguer', 'suco', 'pizza', 'pudim']
lanche[3] = 'picolé'
lanche = ['hambúrguer', 'suco', 'pizza', 'picolé']


Adicionar novos elementos:
1. Usando o
.append():
lanche.append('Cookie')
lanche = ['hambúrguer', 'suco', 'pizza', 'picolé', 'cookie']

2. Usando o .insert():
lanche.insert(0,'hot dog')
lanche = ['hot dog', 'hambúrguer', 'suco', 'pizza', 'picolé', 'cookie']


Apagar elementos:
1. Usando o
del:
del lanche[3]

2. Usando o
pop():
lanche.pop(3) # se usado sem parâmetro, elimina o último elemento da lista

3. Usando o
remove():
lanche.remove('pizza')

lanche = ['hot dog', 'hambúrguer', 'suco', 'picolé','cookie']

usando o
if:

if 'pizza' in lanche
    lanche.remove('pizza')


ou

num =[2, 5, 9, 1]
if 5 in num:
    num.remove(5)
else:
    print('não achei o número 5')
print(num)
print(f'Essa lista tem {len(num)} elementos.')



Criar listas com range
valores = list(range(4, 11))
valores = [4, 5, 6, 7, 8, 9, 10]


Colocando valores em ordem:
valores = [8, 2, 5, 4, 9, 3, 0]
valores.sort() = [0, 2, 3, 4, 5, 8, 9]
valores.sort(reverse=True) = [9, 8, 5, 4, 3, 2, 0]
len(valores) = 7


Criando uma lista:
valores = [] #ou valores = list()
valores.append(5)
valores.append(9)
valores.append(4)

for v in valores:
   print(f'{v}...', end='')

5... 9... 4...


ou

for c, v in enumerate(valores):
    print(f'Na posição {c} encontrei o valor {v}!')
print('Cheguei ao final da lista')

Lendo valores de uma lista pelo teclado:
valores = list()
for cont in range(0,5):
    valores.append(int(input('Digite um valor: )))


Igualdade de listas
a = [2, 3, 4, 7]
b = a

print(f'Lista A: {a}')
print(f'Lista B: {b}')

Lista A: [2, 3, 4, 7]
Lista B: [2, 3, 4, 7]


Se eu mexer na lista
b, a mesma mudança se dá na lista a

a = [2, 3, 4, 7]
b = a
b[2] = 8

print(f'Lista A: {a}')
print(f'Lista B: {b}')

Lista A: [2, 3, 8, 7]
Lista B: [2, 3, 8, 7]


Então como fazemos cópia de listas?

a = [2, 3, 4, 7]
b = a[:]  #copio todos os elementos de a para dentro de uma lista b
b[2] = 8

print(f'Lista A: {a}')
print(f'Lista B: {b}')

Lista A: [2, 3, 4, 7]
Lista B: [2, 3, 8, 7]

frase = '   Olha só que    , coisa interessante       '
lista_frase_crua = frase.split(sep=',') # Usa o split() para separar
print(lista_frase_crua)

lista_frase_fixed = []
for i in range(len(lista_frase_crua)):
    lista_frase_fixed.append(lista_frase_crua[i].strip()) # Usa o strip() para arrumar

print(lista_frase_fixed)

frase_fixed = ', '.join(lista_frase_fixed) # Usa o join() para unir os elementos de uma lista

print(frase_fixed)



Exercícios

078: Faça um programa que leia 5 valores numéricos e guarde-os em uma lista. No final, mostre qual foi o maior e o menor valor digitado e as suas respectivas posições na lista.

💀079: Crie um programa onde o usuário possa digitar vários valores numéricos e cadastre-os em uma lista. Caso o número já exista lá dentro, ele não será adicionado. No final, serão exibidos todos os valores únicos digitados, em ordem crescente.

💀080: Crie um programa onde o usuário possa digitar cinco valores numéricos e cadastre-os em uma lista, já na posição correta de inserção (sem usar o sort()). No final, mostre a lista ordenada na tela.

081: Crie um programa que vai ler vários números e colocar em uma lista. Depois disso vai mostrar:
a) Quantos números foram digitados.
b) A lista de valores, ordenada de forma decrescente.
c) Se o valor 5 foi digitado e está ou não na lista.

082: Crie um programa que vai ler vários números e colocar em uma lista. Depois disso, crie duas listas que vão conter apenas os valores pares e os valores ímpares digitados, respectivamente. Ao final, mostre o conteúdo das três listas geradas.

💀083: Crie um programa onde o usuário digite uma expressão qualquer que use parênteses. Seu aplicativo deverá analisar se a expressão passada está com os parênteses abertos e fechados na ordem correta.


terça-feira, 21 de novembro de 2023

16. Variáveis Compostas (Tuplas)

São variáveis compostas em Python:
Tuplas; () - Pode até ser sem parênteses
Listas; []
Dicionários {}

Tuplas são variáveis que ocupam mais de um espaço na memória.

Limitação: As tuplas são imutáveis, não posso alterar os dados que a compõe.

  • Usar print para exibir os dados da Tupla
  • Usar len para exibir o tamanho da Tupla
  • Usar estrutura de Repetição for associada à Tuplas


Ex.:
lanche ('Hambúrguer', 'Suco', 'Pizza', 'Pudim')
print(lanche) ('Hambúrguer', 'Suco', 'Pizza', 'Pudim')
print(lanche[1]) 'Suco'
print(lanche[-2]) 'Pizza'
print(lanche[1:3]) ('Suco', 'Pizza)
print(lanche[2:] ('Pizza', 'Pudim')


e

lanche = ('Hambúrguer', 'Suco', 'Pizza', 'Pudim')
for comida in lanche:
    print(f'Eu vou comer {comida}')
print('Comi muito')

ou com um contador

lanche = ('Hambúrguer', 'Suco', 'Pizza', 'Pudim', 'Batata frita')
for comida in range(0, len(lanche))
    print(lanche[cont])


ou

lanche = ('Hambúrguer', 'Suco', 'Pizza', 'Pudim', 'Batata frita')
for comida in range(0, len(lanche))
    print(cont, lanche[cont])



Dessa ultima forma explicita-se a posição de cada item da tupla
o que também pode ser feito usando o enumerate:

for pos, comida in enumerate(lanche):
    print(pos, lanche)

0 Hambúrguer
1 Suco
2 Suco
3 Pizza
4 Pudim
5 Batata frita


Método sorted()

Organiza a tupla em ordem alfabética, mas não muda a tupla permanentemente

lanche = ('Hambúrguer', 'Suco', 'Pizza', 'Pudim', 'Batata frita')
print(sorted(lanche))
print(lanche)

['Batata frita', 'Hambúrguer', 'Pizza', 'Pudim', 'Suco']
('Hambúrguer', 'Suco', 'Pizza', 'Pudim', 'Batata frita')


Soma de tuplas
a = (2, 5, 4)
b = (5, 8, 1, 2)
c = a + b
d = b + a
print(c)
print(d)
print(len(c))
print(c.count(5)) #quantas vezes aparece o 5 na tupla c
print(c.index(8)) #qual posição está o 8 (na primeira ocorrência)
print(c.index(5, 1)) #posição do 5 a partir da posição 1

(2, 5, 4, 5, 8, 1, 2)
(5, 8, 1, 2, 2, 5, 4)
7
2
4
5


Deletando Tupla (inteira) dentro da execução do programa com del

pessoa = ('Gustavo', 39, 'M', 99.99) #podemos colocar diferentes tipos de variaveis dentro de uma tupla
del(pessoa)
print(pessoa)

NameError: name 'pessoa' is not defined


Obs.: Não é possível deletar um único item de uma tupla

Exercícios

072: Crie um programa que tenha uma tupla totalmente preenchida com uma contagem por extenso, de zero até vinte.
Seu programa deverá ler um número pelo teclado (entre 0 e 20) e mostrá-lo por extenso.

073: Crie uma tupla preenchida com os 20 primeiros colocados da Tabela do Campeonato Brasileiro de Futebol, na ordem de colocação. Depois mostre:
a) Apenas os 5 primeiros colocados.
b) Os últimos 4 colocados da tabela.
c) Uma lista com os times em ordem alfabética.
d) Em que posição na tabela está o time da Chapecoense.

074: Crie um programa que vai gerar cinco números aleatórios e colocar em uma tupla.
Depois disso, mostre a listagem de números gerados e também indique o menor e o maior valor que estão na tupla.

075: Desenvolva um programa que leia quatro valores pelo teclado e guarde-os em uma tupla. No final, mostre:
a) Quantas vezes apareceu o valor 9.
b) Em que posição foi digitado o primeiro valor 3
c) Quais foram os números pares.

076: Crie um programa que tenha uma tupla única com nomes de produtos e seus respectivos preços, na sequência. No final, mostre uma listagem de preços, organizando os dados em forma tabular.

077: Crie um programa que tenha uma tupla com várias palavras (sem acentos). Depois disso, você deve mostrar, para cada palavra, quais são as suas vogais.

segunda-feira, 20 de novembro de 2023

15. Estrutura de Repetição while (Parte 2)

Interropendo Repetições while com o break

 
Exemplo de loop eterno

cont = 1
while cont <=10:
    print(cont, ' → ', end='')
print('Acabou')

ou

cont = 1
while True:
    print(cont, ' → ', end='')
print('Acabou')


o que vai fazer entrar num loop infinito

n = s = 0
while n != 999:
    n = int(input('Digite um número: '))
    s += n
s -= 999
print(f'A soma vale {s}')


vai ficar executando até o flag 999 ser digitado

n = s = 0
while True:
    n = int(input('Digite um número: '))
    if n == 999
        break
    s += n
print(f'A soma vale {s}')


O comando
break leva a execução do programa pra fora da estrutura de repetição while.

Exercícios

066: Crie um programa que leia vários números inteiros pelo teclado. O programa só vai parar quando o usuário digitar o valor 999, que é a condição de parada (flag). No final, mostre quantos números foram digitados e qual foi a soma entre eles (desconsiderando o flag).

067: Faça um programa que mostre a tabuada de vários números, um de cada vez, para cada valor digitado pelo usuário. O programa será interrompido quando o número solicitado for negativo.

068: Faça um programa que jogue par ou ímpar com o computador. O jogo será interrompido quando jogador PERDER, mostrando o total de vitórias consecutivas que ele conquistou no final do jogo.

069: Crie um programa que leia a idade e o sexo de várias pessoas. A cada pessoa cadastrada, o programa deverá perguntar se o usuário que ou não continuar. No final, mostre:
a) Quantas pessoas tem mais de 18 anos.
b) Quantos homens foram cadastrados.
c) Quantas mulheres tem menos de 20 anos.

070: Crie um programa que leia o nome e o preço de vários produtos. O programa deverá perguntar se o usuário vai continuar. No final, mostre:
a) Qual é o total gasto na compra.
b) Quantos produtos custam mais de R$ 1.000,00
c) Qual é o nome do produto mais barato.

071: Crie um programa que simula o funcionamento de um caixa eletrônico. No início, pergunte ao usuário qual será o valor a ser sacado (número inteiro) e o programa vai informar quantas cédulas de cada valor serão entregues.
Obs.: Considere que o caixa possui cédulas de R$ 50,00, R$ 20,00, R$ 10,00 e R$ 1,00.







domingo, 19 de novembro de 2023

14. Estrutura de Repetição while (Parte 1)

A estrutura de repetição while é superior à estrutura for, pois funciona mesmo quando não conhecemos os limites da variável de controle. Ela também pode ser usada em todos os casos que usamos o for, porém nesses casos, se pudermos escolher, vamos usar o for, pois precisaremos de menos linhas para criar o programa.

Exemplo de programa onde se conhece o limite da variável de controle usando o for e o while:

for c in range(0, 10): #Aqui eu conheço o limite (limitação do for tbm)
   print(c, end=' ')
print('FIM')
  

e

c = 1
while c < 10:       #Aqui eu conheço o limite (limitação do for tbm)
   print(c, end=' ')
   c = c + 1
print('FIM')

O while tem a vantagem de poder ser usado quando não se sabe o limite: 

Ex.: Quando se precisar  parar uma digitação quando se digitar o número 0 (flag ou "condição de parada")

Exemplos:
n = 1
while n != 0
   n = int(input('Digite um valor: '))
print('FIM')


Com uma String:
r = 'S'
while r == 'S':
   n = int(input('Digite um valor: '))
   r = str(input('Quer continuar? [S/N] '))
print('Fim')


Contador de pares e ímpares:
n = 1
par = impar = 0
while n != 0:
   n = int(input('Digite um valor: '))
   if n % 2 == 0:
      par += 1
   else:
      impar += 1
print(f'Você digitou {par} números pares e {impar} números ímpares!')

Exercícios

057: Faça um programa que leia o sexo de uma pessoa, mas só aceite os valores 'M' ou 'F'.
Caso esteja errado, peça a digitação novamente até ter um valor correto.

058: Melhore o jogo do Exercício 028 onde o computador vai "pensar" em um número entre 0 e 10. Só que agora o jogador vai tentar adivinhar até acertar, mostrando no final quantos palpites foram necessários para vencer.

059: Crie um programa que leia dois valores e mostra um menu na tela:
[1] somar
[2] multiplicar
[3] maior
[4] novos números
[5] sair do programa
Seu programa deverá realizar a operação solicitada em cada caso.

060: Faça um programa que leia um número qualquer e mostre o seu fatorial.

061: Refaça o Exercício 051, lendo o primeiro termo e a razão de uma PA, mostrando os 10
primeiros termos da progressão usando a estrutura
while.

062: Melhore o Exercício 061, perguntando para o usuário se ele quer mostrar mais alguns termos.
O programa encerra quando ele disser que quer mostrar 0 termos.

063: Escreva um programa que leia um número n inteiro qualquer e mostre na tela os n primeiros elementos de uma Sequencia de Fibonacci.

Ex.: 0 → 1 → 1 → 2 → 3 → 5 → 8 → 13

064: Crie um programa que leia vários números inteiros pelo teclado. O programa só vai parar quando o usuário digitar o valor 999, que é a condição de parada (flag). No final, mostre quantos números foram digitados e qual foi a soma entre eles (desconsiderando o flag).

065: Crie um programa que leia vários números inteiros pelo teclado. No final da execução,
mostre a média entre todos os valores e qual foi o maior e menor valores lidos. O programa deve perguntar ao usuário se ele quer ou não continuar a digitar valores.

 

13. Estrutura de Repetição for

 Laços, Repetições ou Iterações

1. Repetição for (mais simples)

for c in range(1,10):  #c é uma variável de controle
print(c) # a identação indica que está dentro do laço

Ex.:

 for c in range(1, 6)   #ele ignora o último (6), logo aqui só mostra Oi 5 vezes
print('Oi')
print('FIM')


Contagem regressiva

 for c in range(6, 0, -1) #A terceira posição indica o passo
print(c)
print('FIM')

obs.: s = s + n (s recebe s mais n) pode em python ser representado por s += n.


Exercícios:

046: Faça um programa que mostre na tela uma contagem regressiva para o estouro de fogos de artifício, indo de 10 até 0, com uma pausa de 1 segundo entre eles.

047: Crie um programa que mostre na tela todos os números pares que estão no intervalo entre 1 e 50.

048: Faça um programa que calcule a soma entre todos os números ímpares que são múltiplos de três e que se encontram no intervalo de 1 até 500.

049: Refaça o Exercício 009, mostrando a tabuada de número que o usuário escolher, só que agora utilizando um laço for.

050: Desenvolva um programa que leia seis números inteiros e mostre a soma apenas daqueles que forem pares. Se o valor for ímpar, desconsidere-o.

051: Desenvolva um programa que leia o primeiro termo e a razão de uma PA. No final, mostre os 10 primeiros termos dessa progressão.

052: Faça um programa que leia um número inteiro e diga se ele é ou não um número primo.

053: Crie um programa que leia uma frase qualquer e diga se ela é um palíndromo, desconsiderando os espaços.
Ex.: APÓS A SOPA; A SACADA DA CASA; A TORRE DA DERROTA; O LOBO AMA O BOLO; ANOTARAM A DATA DA MARATONA

054: Crie um programa que leia o ano de nascimento de sete pessoas. No final, mostre quantas pessoas ainda não atingiram a maioridade e quantas já são maiores.

055: Faça um programa que leia o peso de cinco pessoas. No final, mostre qual foi o maior e o menor peso lidos.

056: Desenvolva um programa que leia o nome, idade e sexo de 4 pessoas. No final do programa, mostre:

a) A média de idade do grupo.

b) Qual o nome do homem mais velho.

c) Quantas mulheres têm menos de 20 anos.

12. Cores no Terminal com ANSI

 Cores no Terminal

 

ANSI: Escape Sequence

começa com \+código

cor em Python: \033[<código>m<texto>
Style (estilo da fonte);text(cor do texto); back(cor do fundo)
Ex.: \033[0;33;44m


style

0 - none (sem estilo)
1 - bold (negrito)
4 - underline (sublinhado)
7 - negative

Text

30 - branco
31 - vermelho
32 - verde
33 - amarelo
34 - azul
35 - roxo
36 - ciano
37 - cinza

back

40 - branco
41 - vermelho
42 - verde
43 - amarelo
44 - azul
45 - roxo
46 - ciano
47 - cinza

print('\033[0;34mOlá, Mundo!\033[m') #Olá mundo azul kkk

11. Condicionais Aninhadas (Condicionais Parte 2)

Condições Aninhadas

if

elif

else

---------

SIMPLES

nome = str(input('Qual é seu nome?'))
if nome == 'Ayrton':
print('Que nome bonito!')
print(f'Tenha um bom dia dia, {nome}!)

---------

COMPOSTA

nome = str(input('Qual é seu nome?'))
if nome == 'Ayrton':
print('Que nome bonito!')
else:
print('Seu nome é bem normal.')
print(f'Tenha um bom dia dia, {nome}!)

---------

ANINHADA

nome = str(input('Qual é seu nome?'))
if nome == 'Ayrton':
print('Que nome bonito!')
elif nome == 'Pedro' or nome == 'Maria' or nome == 'Paulo':
print('Seu nome é bem comum no Brasil.')
elif nome in 'Ana Claudia Jessica Juliana'
print('Que belo nome feminino')
else: #opcional
print('Seu nome é bem normal.')
print(f'Tenha um bom dia dia, {nome}!)


Exercícios

036: Escreva um programa para aprovar o empréstimo bancário para a compra de uma casa. O programa vai perguntar o valor da casa, o salário do comprador e em quantos anos ele vai pagar. Calcule o valor da prestação mensal, sabendo que ela não pode exceder 30% do salário ou então o empréstimo será negado.

037: Escreva um programa que leia um número inteiro qualquer e peça para o usuário escolher qual será a base de conversão:
- 1 para binário
- 2 para octal
- 3 para hexadecimal

038: Escreva um programa que leia dois números inteiros e compare-os, mostrando na tela uma mensagem:
- O primeiro valor é maior
- O segundo valor é maior
- Não existe valor maior, os dois são iguais

039: Faça um programa que leia o ano de nascimento de um jovem e informe, de acordo com sua idade:
- Se ele vai se alistar ao serviço militar.
- Se é a hora de se alistar.
- Se já passou do tempo do alistamento.

Seu programa também deverá mostrar o tempo que falta ou que passou do prazo.

040: Crie um programa que leia duas notas de um aluno e calcule sua média, mostrando uma mensagem no final,

de acordo com a média atingida:
- Média abaixo de 5.0: REPROVADO
- Média entre 5.0 e 6.9: RECUPERAÇÃO
- Média 7.0 ou superior: APROVADO

041: A Confederação Nacional de Natação precisa de um programa que leia o ano de nascimento de um atleta e mostra sua categoria, de acordo com a idade:
- Até 9 anos: MIRIM
- Até 14 anos: INFANTIL
- Até 19 anos: JÚNIOR
- Até 20 anos: SÊNIOR
- Acima de 20 anos: MASTER

042: Refaça o EXERCÍCIO 35 dos triângulos, acrescentando o recurso de mostrar que tipo de triângulo será formado:
- Equilátero: todos os lados iguais
- Isósceles: dois lados iguais
- Escaleno: todos os lados diferentes

043: Desenvolva uma lógica que leia o peso e a altura de uma pessoa, calcule seu IMC e mostre seu status, de acordo com a tabela abaixo:
- Abaixo de 18.5: Abaixo do peso
- Entre 18.5 e 25: peso ideal
- 25 até 30: Sobrepeso
- 30 até 40: Obesidade
- Acima de 40: Obesidade mórbida

044: Elabore um programa que calcule o valor a ser pago por um produto, considerando o seu preço normal e condição de pagamento:
- à vista dinheiro/cheque: 10% de desconto
- à vista no cartão: 5% de desconto
- em até 2x no cartão: preço normal
- 3x ou mais no cartão: 20% de juros

045: Crie um programa que faça o computador jogar Joquempô com você.

10. Condicionais (Parte 1)

Condicionais

nome = str(input('Qual é o seu nome? ')
if nome == 'Ayrton':
print('Que nome lindo você tem!')
else:
print('Seu nome é muito normal!')
print(f'Bom dia, {nome}!')

ou

(condicional simples)

nome = str(input('Qual é o seu nome? ')
if nome == 'Ayrton':
print('Que nome lindo você tem!')
print(f'Bom dia, {nome}!')
 

Exercícios

028: Escreva um programa que faça o computador "pensar" em um número inteiro entre 0 e 5 e peça para o usuário tentar descobrir qual foi o número escolhido pelo computador. O programa deverá escrever na tela se o usuário venceu ou perdeu.

029: Escreva um programa que leia a velocidade de um carro. Se ele ultrapassar 80 km/h, mostra uma mensagem dizendo que ele foi multado. A multa vai custar R$ 7,00 por cada km acima do limite.

030: Crie um programa que leia um número inteiro e mostre na tela se ele é PAR ou ÍMPAR.

031: Desenvolva um programa que pergunte a distância de uma viagem em quilômetros. Calcule o preço da passagem, cobrando R$ 0,50 por km para viagens de até 200 km e R$ 0,45 para viagens mais longas.

032: Faça um programa que leia um ano qualquer e mostre se ele é BISSEXTO.

033: Faça um programa que leia três números e mostre qual é o maior e qual é o menor.

034: Escreva um programa que pergunte o salário de um funcionário e calcule o valor do seu aumento. Para salários superiores a R$ 1.250,00, calcule um aumento de 10%. Para os inferiores ou iguais, o aumento é de 15%.

035: Desenvolva um programa que leia o comprimento de três retas e diga ao usuário se elas podem ou não formar um triângulo.

9. Manipulando Strings

Manipulando cadeias de Texto

O que é uma cadeia de caracteres?
frase = 'Curso em Vídeo Python'
Curso em Vídeo Python

012 3456781011121314151617181920


Fatiamento de string
frase[9] = V
frase[9:13] == Vide
frase[9:14] == Vídeo #ele exclui o último
frase[9:21] == Vídeo Python
frase[9:21:2] == VdoPto #pula de 2 em 2
frase[:5] == Curso #quando omito o inicial, ele inicia do zero
frase[15:] == Python #Quando omite o último, ele vai até o último. Muito útil quando não conhecemos o número total de caracteres.
frase[9::3] == VePh

 

Análise de String
len(frase) é o comprimento da frase
len(frase) == 21
frase.count('o') == 3 #quantas vezes aparece o minúsculo na frase.
frase.count('o',0,'13) == 1 #quantas vezes aparece a letra o antes do 13.
frase.find('deo') == 11 (começou na posição 11) #encontra a string "deo" na string.
frase.find('Andriod') == -1 #-1 significa que a string procurada não foi encontrada
'Curso' in frase == True #Dentro da strig tem a string 'Curso'? A resposta é booleana.

 

Transformação
frase.replace('Python', 'Android') #Substitui na str onde tem Python por Android
frase.upper() == CURSO EM VÍDEO PYTHON
frase.lower() == curso em vídeo python
frase.capitalize() == Curso em vídeo python
frase.title() == Curso Em Vídeo Python

 

Vamos mudar a frase:
frase = ' Aprenda Python '
frase.strip() = 'Aprenda Python' #Elimina os espaços vazios desnecessários (Arrumar)
frase.rstrip() = ' Aprenda Python' #Elimina os espaços desnecessários à direita
frase.lstrip() = 'Aprenda Python ' #Elimina os espaços desnecessários à esquerda Divisão de strings
frase = 'Curso em vídeo Python'
frase.split() == 'Curso''em''vídeo''Python' #gera uma lista de string (pode splitar de outras formas... estudar)

frase = 'Curso em Vídeo Python'
dividido = frase.split()
print(dividido)
print(dividido[0])
print(dividido[2][3])
Retorna, respectivamente:
['Curso', 'em', 'Vídeo', 'Python'] #uma lista
Curso #o primeiro termo da lista e a quarta letra do terceiro item da lista

 

Junção de strings

'-'.join(frase) == 'Curso-em-Vídeo-Python

 

Exercícios

022: Crie um programa que leia o nome completo de uma pessoa e mostre:
- O nome com todas as letras maiúsculas
- O nome com todas minúsculas
- Quantas letras ao todo sem considerar os espaços
- Quantas letras tem o primeiro nome

023: faça um programa que leia um número de 0 a 9999 e mostre na tela cada um dos dígitos separados.
Ex.: Digite um número: 1834
unidade: 4
dezena: 3
centena: 8
milhar: 1

024: Crie um programa que leia o nome de uma cidade e diga se ela começa ou não com nome "SANTO".

025: Crie um programa que leia o nome de uma pessoa e diga se ela tem "SILVA" no nome.

026: Faça um programa que leia uma frase pelo teclado e mostre:
- Quantas vezes aparece a letra "A".
- Em que posição ela aparece a primeira vez.
- Em que posição ela aparece a última vez.

027: Faça um programa que leia o nome completo de uma pessoa, mostrando em seguida o primeiro e o último nome separadamente.
Ex: Ana Maria de Souza
primeira = Ana
Último = Souza

Obs.: Como inverter um texto:

txt = "Inverter texto"[::-1]
print(txt)
otxet retrevnI

8. Utilizando Módulos

Módulos (Bibliotecas)


Ex.: Biblioteca math

- ceil: arredonda pra cima

- floor: arredonda pra baixo

- pow: potencia

- sqrt: raíz quadrada

- factorial: fatorial

import math #importa toda a biblioteca math

se eu precisar usar só algumas funcionalidades da Biblioteca math:

from math import sqrt

ou from math import sqrt, ceil #assim importa duas funcionalidades da Biblioteca.

Ctrl+espaço mostra as funcionalidades de um pacote pra importar.


Instruções para The Python Standard Library: https://docs.python.org/3/library/index.html

Projetos de pacotes independentes: https://pypi.org/

 

Exercícios:

016: Crie um programa que leia um número real qualquer pelo teclado e mostre na tela a sua porção inteira.

Ex.: Digite um número: 6.127

       O número 6.127 tem a parte inteira 6.

017: Faça um programa que leia o comprimento do cateto oposto e do cateto adjacente de um triângulo retângulo, calcule e mostre o comprimento da hipotenusa.

018: Faça um programa que leia um ângulo qualquer e mostre na tela o valor do seno, cosseno e tangente desse ângulo.

019: Um professor quer sortear um dos seus quatro alunos para apagar o quadro. Faça um programa que ajude ele, lendo o nome deles e escrevendo o nome do escolhido.

020: O mesmo professor do desafio anterior quer sortear a ordem de apresentação de trabalhos dos alunos. Faça um programa que leia o nome dos quatro alunos e mostre a ordem sorteada.

021: Faça um programa em Python que abra e reproduza o áudio de um arquivo em mp3.