Ayuda practica Python
Publicado por toni (6 intervenciones) el 30/11/2017 20:13:09
Hola amigos, necesito ayuda con este script que no funciona bien y ya no se que cambiar, me seria de gran ayuda si alguien me ayudase, gracias.
El enunciado es el siguiente:
Realizar un script en python con el siguiente comportamiento:
Si se detecta movimiento (del sensor), se enciende un led amarillo, y se pregunta al
usuario por una palabra clave, de la siguiente manera:
al iniciar el script, se debe crear el siguiente diccionario:
contrasenas = {'color':'azul','flor':'amapola','animal':'perro','ciudad':'madrid','colegio':'salesianos'}
cuando se detecte movimiento, se generará un número aleatorio, y se preguntará al
usuario por el valor que coincide con la clave de la posición del número aleatorio.
Por ejemplo, si el número es el 0, se preguntará al usuario por un color, y si éste responde
“azul”, la respuesta se considerará como correcta, en caso contrario, como incorrecta; si
el número es el 3, se preguntará al usuario por un ciudad, y si éste responde “madrid”, la
respuesta se considerará como correcta, en caso contrario, como incorrecta.
Si la respuesta es correcta, se apaga el led y se vuelve a comprobar si se detecta
movimiento.
Si la respuesta es incorrecta, se enciende un led rojo y se genera una llamada automática
(a tu teléfono móvil) que al descolgar reproducirá el mensaje “se ha detectado
movimiento y la contraseña es incorrecta”.
Notas:
- Mientras no se detecte movimiento, se imprimirá por pantalla “no hay movimiento”.
- Generar el comportamiento dentro de un bucle infinito.
- Se deben controlar las interrupciones por teclado.
El codigo que llevo hecho es este:
El enunciado es el siguiente:
Realizar un script en python con el siguiente comportamiento:
Si se detecta movimiento (del sensor), se enciende un led amarillo, y se pregunta al
usuario por una palabra clave, de la siguiente manera:
al iniciar el script, se debe crear el siguiente diccionario:
contrasenas = {'color':'azul','flor':'amapola','animal':'perro','ciudad':'madrid','colegio':'salesianos'}
cuando se detecte movimiento, se generará un número aleatorio, y se preguntará al
usuario por el valor que coincide con la clave de la posición del número aleatorio.
Por ejemplo, si el número es el 0, se preguntará al usuario por un color, y si éste responde
“azul”, la respuesta se considerará como correcta, en caso contrario, como incorrecta; si
el número es el 3, se preguntará al usuario por un ciudad, y si éste responde “madrid”, la
respuesta se considerará como correcta, en caso contrario, como incorrecta.
Si la respuesta es correcta, se apaga el led y se vuelve a comprobar si se detecta
movimiento.
Si la respuesta es incorrecta, se enciende un led rojo y se genera una llamada automática
(a tu teléfono móvil) que al descolgar reproducirá el mensaje “se ha detectado
movimiento y la contraseña es incorrecta”.
Notas:
- Mientras no se detecte movimiento, se imprimirá por pantalla “no hay movimiento”.
- Generar el comportamiento dentro de un bucle infinito.
- Se deben controlar las interrupciones por teclado.
El codigo que llevo hecho es este:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import os
import time
import random
#!usr/bin/env/ python
import RPi.GPIO as GPIO
contrasenas = {'color':'azul','flor':'amapola','animal':'perro','ciudad':'madrid','colegio':'salesianos'}
clave = ('color','flor','animal','ciudad','colegio')
sensor = 14
led_amarillo = 2
led_rojo = 3
GPIO.setmode(GPIO.BCM)
GPIO.setup(2,GPIO.OUT)
GPIO.setup(3,GPIO.OUT)
GPIO.setup(14, GPIO.IN)
try:
while True:
if GPIO.input(14) == 0:
GPIO.output(2, True)
GPIO.output(3,False)
numero = random.randint(0,4)
print numero
print clave[numero]
pregunta = raw_input("Cual es la pregunta")
contrasenas.get(clave[numero])
print ("Contrasena correcta")
time.sleep(3)
GPIO.output(3,True)
GPIO.output(2,False)
print("Contrasena incorrecta")
os.system('cp contestador.call llamada.call')
os.system('mv llamada.call /var/spool/asterisk/outgoing')
else:
print("No hay movimiento")
time.sleep(3)
except KeyboardInterrupt:
GPIO.cleanup()
Valora esta pregunta


0