<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Unidade 7 - Atividades
Step1:  Questão 1
Um vigarista usa uma moeda viesada para ganhar dinheiro com passantes na rua. Ele aposta R$ 2,00 que consegue fazer sua moeda mostrar cara 3 vezes seguidas em no máximo 5 lançamentos. Os passantes não sabem, mas sua moeda tem probabilidade 90% de mostrar cara e 10% de mostrar coroa. Em média ele consegue convencer 200 passantes a apostarem contra ele durante um dia de 'trabalho'. Faça um programa em Python que simule a aposta do vigarista com 200 passantes e que mostra na tela o quanto de dinheiro ele fez no dia.
Step2:  Questão 2
Um motorista descuidado não prestou atenção nas placas que sinalizavam o fim de uma rodovia. A rodovia era perfeitamente plana, e o veículo estava a uma velocidade de 50m/s quando foi projetado de um penhasco de 1000m de altura. 
A posição x do motorista no instante $t = 0$ é $0$ e varia com o tempo segundo a fórmula
$$x = 50t$$
A posição y do motorista no instante $t = 0$ é 1000 e varia com o tempo segundo a fórmula
$$y = 1000 - 4.9t^2$$
O intante em que ocorre o impacto é o instante $t$ que faz com que $y$ na equação acima seja igual a $0$.
Um observador distante filmava a cena com uma câmera amadora que registrava tudo a 1fps (1 foto por segundo). Faça um programa que mostre (num plot) a sobreposição das imagens capturadas pela câmera do observador. Utilize a opção 'o' na hora de fazer o plot. Utilize a mesma escala para os dois eixos do gráfico (como uma câmera fotográfica faria).
Step3:  Bêbado
Um bêbado segue por um trilho de trem abandonado muito comprido. Com
probabilidade 0.5 ele dá um passo para o leste e com probabilidade 0.5 ele dá um passo para o oeste.
Por conveniência, chame o ponto de partida do bêbado de ponto 0, e suponha que o trilho se
prolongue por 40 passos para o leste e por 80 passos para o oeste desse ponto. 
Questão 3
Faça um programa que simule o passeio do bêbado nesse trilho e que diga, no momento em que ele sai do trilho, se foi pela extremidade leste ou oeste.
Step4:  Questão 4
Agora suponha que, toda noite, o bêbado parte do ponto 0 com o
mesmo comportamento errante do exercício anterior. Modifique seu programa para estimar a
probabilidade de ele sair pelo lado oeste. Dica
Step5:  Porta da esperança
O Programa Sílvio Santos tinha uma quadro muito popular chamado Porta da Esperança que era baseado no show americano Let's Make a Deal apresentado por Monty Hall na década de 70. O quadro Porta da Esperança funcionava mais ou menos assim. 
Uma pessoa era selecionada para participar do show e ela tinha um sonho que gostaria de realizar (ganhar um carro, fazer uma viagem, encontrar com um ídolo, etc.). No palco havia três portas fechadas e atrás de uma delas estava o objeto do seu desejo (ou algém que iria realizar o seu desejo). Atrás das outras duas portas não havia nada.
O participante escolhia uma das três portas. O apresentador, então, abria uma das outras duas portas (que o participante não escolheu) e que não tinha o prêmio. Neste momento do show há apenas duas portas fechadas
Step6:  Questão 6
Faça um programa que simule o quadro porta da esperança 1000 vezes.
Em cada uma das 1000 iterações, seu programa deve
Step7:  Balística
Um morteiro é lançado da origem (do plano cartesiano), no tempo $t = 0$, com um ângulo de lançamento $\alpha$, para algum $\alpha$ entre 30 e 90 graus. Sua velocidade inicial é $50 m/s$. Uma câmera de vídeo filma o evento capturando $5 fps$ (5 frames per second). Ou seja, a câmera tira 5 fotos por segundo para depois compor o vídeo. 
Questão 7
Faça um programa que pergunte ao usuário o ângulo $\alpha$ e crie o gráfico que consiste da sobreposição de todas as fótos tiradas pela câmera, desde o lançamento do morteiro até o momento em que ele toca o chão novamente. Use a opção 'o' da função plot.
<ASSISTANT_TASK:>
Python Code:
import random as rd
Explanation: Unidade 7 - Atividades
End of explanation
cara = 0
vig = 0
for j in range(200):
    for i in range(5):
        rdnum = rd.random()
        if (rdnum < 0.90):
            cara += 1
    if cara > 3:
        #print('Vigarista ganhou')
        vig = vig + 2
        cara = 0
    else:
        #print('Ambulante ganhou')
        vig = vig - 2
        cara = 0
        
print('Lucro do vigarista é de: {}'.format(vig))
vig = 0
seq = 0
v = 0
for j in range(200):
    for i in range(5):
        rdnum = rd.random()
        if (rdnum < 0.90):
            seq += 1
            if seq == 3:
                v = v+1
        else: 
            seq = 0
vig = 4 * v        
print('Lucro do vigarista é de: {}'.format(vig))
Explanation: Questão 1
Um vigarista usa uma moeda viesada para ganhar dinheiro com passantes na rua. Ele aposta R$ 2,00 que consegue fazer sua moeda mostrar cara 3 vezes seguidas em no máximo 5 lançamentos. Os passantes não sabem, mas sua moeda tem probabilidade 90% de mostrar cara e 10% de mostrar coroa. Em média ele consegue convencer 200 passantes a apostarem contra ele durante um dia de 'trabalho'. Faça um programa em Python que simule a aposta do vigarista com 200 passantes e que mostra na tela o quanto de dinheiro ele fez no dia.
End of explanation
import matplotlib.pyplot as pp
%matplotlib inline
import random as rd
import math
x = 0
y = 1000
t = 0
pp.axis('equal')
while y > -0.0001:
    pp.plot(x, y, 'o')
    t = t + 1
    x = 50*t
    y = 1000 - 4.9*t**2
Explanation: Questão 2
Um motorista descuidado não prestou atenção nas placas que sinalizavam o fim de uma rodovia. A rodovia era perfeitamente plana, e o veículo estava a uma velocidade de 50m/s quando foi projetado de um penhasco de 1000m de altura. 
A posição x do motorista no instante $t = 0$ é $0$ e varia com o tempo segundo a fórmula
$$x = 50t$$
A posição y do motorista no instante $t = 0$ é 1000 e varia com o tempo segundo a fórmula
$$y = 1000 - 4.9t^2$$
O intante em que ocorre o impacto é o instante $t$ que faz com que $y$ na equação acima seja igual a $0$.
Um observador distante filmava a cena com uma câmera amadora que registrava tudo a 1fps (1 foto por segundo). Faça um programa que mostre (num plot) a sobreposição das imagens capturadas pela câmera do observador. Utilize a opção 'o' na hora de fazer o plot. Utilize a mesma escala para os dois eixos do gráfico (como uma câmera fotográfica faria).
End of explanation
x = 0
y = 0
pp.axis('equal')
pp.plot(x, y, 'o')
while (x >= -80 and x <= 40):
    passo = rd.random()
    if (passo < 0.5):
        x += 1
    else:
        x -= 1
        y += 1
    pp.plot(x, y, 'o')
    
if x > 40:
    print('O bebado saiu pela extremidade a leste')
else:
    print('O bebado saiu pela extremidade a oeste')
Explanation: Bêbado
Um bêbado segue por um trilho de trem abandonado muito comprido. Com
probabilidade 0.5 ele dá um passo para o leste e com probabilidade 0.5 ele dá um passo para o oeste.
Por conveniência, chame o ponto de partida do bêbado de ponto 0, e suponha que o trilho se
prolongue por 40 passos para o leste e por 80 passos para o oeste desse ponto. 
Questão 3
Faça um programa que simule o passeio do bêbado nesse trilho e que diga, no momento em que ele sai do trilho, se foi pela extremidade leste ou oeste.
End of explanation
x = 0
y = 0
leste = 0
oeste = 0
for i in range(100):
    while (x >= -80 and x <= 40):
        passo = rd.random()
        if (passo < 0.5):
            x += 1
        else:
            x -= 1
    
    if x > 40:
        leste += 1
        x = 0
    else:
        oeste += 1
        x = 0
        
print('A probalidade do bebado sair a leste é {:.2f}% e {:.2f}% a oeste.'.format(leste, oeste))
Explanation: Questão 4
Agora suponha que, toda noite, o bêbado parte do ponto 0 com o
mesmo comportamento errante do exercício anterior. Modifique seu programa para estimar a
probabilidade de ele sair pelo lado oeste. Dica: repita a simulação do bêbado muitas vezes e veja com que frequência ele sai por cada extremidade.
End of explanation
a = 0
b = 0
door = rd.randint(1,3)
usr = int(input('Escolha um número dos números \n[1,2,3]\nSua opçao: '))
if door == usr:
    if usr == 1:
        a = rd.randint(2,3)
    elif usr == 2:
        a = rd.randrange(1,4,2)
    elif usr == 3:
        a = rd.randint(1,2)
elif (usr + door) == 3:
    a = 3
elif (usr + door) == 4:
    a = 2
elif (usr + door) == 4:
    a = 1
print('A porta {} foi aberta'.format(a))
usr = int(input('Escolha uma nova porta ou continue com a mesma\nSua opçao: '))
if usr == door:
    print('Você ganhou!!!')
else:
    print('Infelizmente a porta estava vazia...')
Explanation: Porta da esperança
O Programa Sílvio Santos tinha uma quadro muito popular chamado Porta da Esperança que era baseado no show americano Let's Make a Deal apresentado por Monty Hall na década de 70. O quadro Porta da Esperança funcionava mais ou menos assim. 
Uma pessoa era selecionada para participar do show e ela tinha um sonho que gostaria de realizar (ganhar um carro, fazer uma viagem, encontrar com um ídolo, etc.). No palco havia três portas fechadas e atrás de uma delas estava o objeto do seu desejo (ou algém que iria realizar o seu desejo). Atrás das outras duas portas não havia nada.
O participante escolhia uma das três portas. O apresentador, então, abria uma das outras duas portas (que o participante não escolheu) e que não tinha o prêmio. Neste momento do show há apenas duas portas fechadas: a que o participante escolheu e uma outra, e sabe-se que o prêmio está atrás de uma delas.
Em seguida, Sílvio Santos perguntava ao participante se ele gostaria de manter a sua escolha ou se ele gostaria de trocar de porta. Após longo período de exploração sentimental do participante, uma vez que ele tomou sua decição (trocar ou ficar), o apresentador abria a porta combinada e o participante ganhava ou não o prêmio.
Há uma certa discórdia com relação a qual seria a melhor estratégia para o participante. Algumas pessoas argumentam que é sempre mais vantagioso trocar de porta depois que o apresentador abriu uma delas, pois a chance do participante ter acertado a porta na primeira escolha era de apenas 1/3. Outras dizem que tanto faz trocar ou ficar pois, como restaram duas portas, a chance do prêmio estar atrás de qualquer uma delas é 50%. Chamemos o primeiro grupo de Grupo A e o segundo de Grupo B.
Primeiro, reflita um pouco sobre o problema e veja com qual desses grupos você acha que concorda. 
Questão 5
Faça um programa que simule o comportamento do Sílvio Santos. Seu programa deve:
1. escolher aleatóriamente uma das três portas e colocar o prêmio atrás dela (não informe o usuário onde está o prêmio);
2. pedir ao usuário que ele escolha uma das três portas;
3. abrir uma porta que não tenha o prêmio e que o usuário não tenha escolhido (se houver mais de uma escolha para a porta a ser aberta, seu programa deve abrir qualquer uma delas com igual probabilidade);
4. mostrar ao usuário qual porta foi aberta;
5. perguntar ao usuário se ele deseja manter sua escolha inicial ou se ele deseja trocar de porta;
mostrar ao usuário se ele ganhou ou não o prêmio.
End of explanation
countdif = 0
counteq = 0
for i in range(1,1001):
    a = 0
    b = 0
    door = rd.randint(1,3)
    usr = rd.randint(1,3)
    if door == usr:
        if usr == 1:
            a = rd.randint(2,3)
        elif usr == 2:
            a = rd.randrange(1,4,2)
        elif usr == 3:
            a = rd.randint(1,2)
    elif (usr + door) == 3:
        a = 3
    elif (usr + door) == 4:
        a = 2
    elif (usr + door) == 4:
        a = 1
    if a == 1:
        usr1 = rd.randint(2,3)
    elif a == 2:
        usr1 = rd.randrange(1,4,2)
    elif a == 3:
        usr1 = rd.randint(1,2)
    if usr1 == door and usr1 != usr:
        countdif += 1
    elif usr1 == door and usr1 == usr:
        counteq += 1 
print('Acertos sem mudar de porta: {}\nAcertos mudando de porta: {}'.format(counteq,countdif))
Explanation: Questão 6
Faça um programa que simule o quadro porta da esperança 1000 vezes.
Em cada uma das 1000 iterações, seu programa deve:
1. escolher aleatóriamente uma das três portas e colocar o prêmio atrás dela;
2. simular uma escolha aleatória de uma dessas três portas pelo participante;
3. abrir uma porta que não tem o prêmio e que o participante não tenha escolhido (se houver mais de uma escolha para a porta a ser aberta, seu programa deve abrir qualquer uma delas com igual probabilidade);
4. decidir quem ganha: aquele que quis manter a porta ou aquele que decidiu trocar.
No final das 1000 simulações mostre quantas vezes o participante teria ganhado o prêmio se ele:
1. sempre trocasse de porta;
2. sempre mantivesse a escolha inicial.
End of explanation
alpha = float(input('Digite um angulos entre 30º a 90º: '))
fps = 5
v_0 = 50
v_x = v_0 * math.cos(alpha)
v_y = v_0 * math.sin(alpha)
x = 0.0
y = 0.0
t = 0
pp.axis('equal')
while y > -0.0001:
    pp.plot(x, y, 'or')
    t = t + 1 / fps
    x = v_x * t
    y = v_y * t - 4.9 * t**2
    
Explanation: Balística
Um morteiro é lançado da origem (do plano cartesiano), no tempo $t = 0$, com um ângulo de lançamento $\alpha$, para algum $\alpha$ entre 30 e 90 graus. Sua velocidade inicial é $50 m/s$. Uma câmera de vídeo filma o evento capturando $5 fps$ (5 frames per second). Ou seja, a câmera tira 5 fotos por segundo para depois compor o vídeo. 
Questão 7
Faça um programa que pergunte ao usuário o ângulo $\alpha$ e crie o gráfico que consiste da sobreposição de todas as fótos tiradas pela câmera, desde o lançamento do morteiro até o momento em que ele toca o chão novamente. Use a opção 'o' da função plot.
End of explanation
<END_TASK>