I trying to make a whatsapp bot which returns a response for specifics messages
#app.route("/sms", methods=['POST'])
def sms_reply():
# Fetch the message
msg = request.form.get('Body').lower()
responded = False
if ("hola" in msg or "buenos" in msg or "buenas" in msg or "info" in msg or "holi" in msg):
reply = "Buenos días bienvenido a Alcanza soy tu asistente virtual, ¿con quien tengo el gusto?"
menu = "Por Favor, selecciona la opcion de tu preferencia: 1 Citas con asesores 2 Informacion de servicios 3 Herramientas de diagnostico 4 Servicio al cliente"
resp = MessagingResponse()
resp.message(reply)
resp.message(menu)
elif ("1" in msg):
reply = "Bienvenido al menu de citas con asesores, por favor selecciona una opcion: 1 Agendar una cita 2 Modificar una existente 3Cancelar una cita 0 Volver al menú principal"
resp = MessagingResponse()
resp.message(reply)
elif ("2" in msg):
reply = "Bienvenido al menu de informacion de servicios, por favor seleciona un servicio para recibir mas informacion: Finanzas personales 1 Asesoría de inversión 2 Webinars y capacitaciones 3 Alcanza 360 0 Volver al menú principal"
resp = MessagingResponse()
resp.message(reply)
elif ("3" in msg):
reply = "Bienvenido al menu de herramientas de diagnostico, por favor seleciona la herramienta que necesitas: 1 Cuestionario de diagnóstico financiero 2 Perfil de deuda 3 Perfil de inversión 4 Costo de tu tiempo 5 Pago de tarjeta de crédito 6 Volver al menú principal"
resp = MessagingResponse()
resp.message(reply)
return str(resp)
So I create this function and when I get the input message "1" from whatsapp the code return me a sub menu, the point is that I want to add another if statement into de principal ifs with more options, for example first input== "1" return (sub menu) and first input == "1" and second input == "1" return (option 1 of the sub menu), I tried too many times and different ifs but the code stops working or ignore the sub ifs
Hello I am editing this code since I want to add a sub menu and a function in each selected option but whenever I add even a print it gives me an error and it is annoying I have tried in every way but the error is constant and annoying
import os
def menu():
"""
Función que limpia la pantalla y muestra nuevamente el menu
"""
os.system('clear') # NOTA para windows tienes que cambiar clear por cls
print ("Selecciona una opción")
print ("\t1 - primera opción")
print ("\t2 - segunda opción")
print ("\t3 - tercera opción")
print ("\t9 - salir")
while True:
# Mostramos el menu
menu()
# solicituamos una opción al usuario
opcionMenu = input("inserta un numero valor >> ")
if opcionMenu=="1":
print ("")
input("Has pulsado la opción 1...\npulsa una tecla para continuar")
elif opcionMenu=="2":
print ("")
input("Has pulsado la opción 2...\npulsa una tecla para continuar")
elif opcionMenu=="3":
print ("")
input("Has pulsado la opción 3...\npulsa una tecla para continuar")
elif opcionMenu=="9":
break
else:
print ("")
input("No has pulsado ninguna opción correcta...\npulsa una tecla para continuar")
for example in the first if
I want to add a sub menu like this
if opcionMenu=="1":
print ("Selecciona una opción")
print ("\t1 - primera opción")
print ("\t2 - segunda opción")
print ("\t3 - tercera opción")
print ("\t9 - salir")
n=input("Has pulsado la opción 1...\npulsa una tecla para continuar")
print(function(n))
if I wanted to do this inside it is useless is possible or some idea
chose=random.choice(words)
print(chose)
i=0
while i<chance:#ici nous crayons une boucle qui va nous permettre de repeter une instruction 8 fois
guess=input("\n Devinez une lettre qui peut se trouver dans ce truc.")
print("\n")
final_word=""
point=0
if (guess==chose and i<chance):#si cette instruction st remplie on a gagner
point=chance-(i)
print("Vous vennez de gagner\n")
print(point)
break
elif(guess!=chose):
for character in chose:
if character in guess:
final_word +=character
else:
final_word +="*"
print(final_word)
i+=1
#cette fonction nous aide à mettre sur place le nom et le score du jouer
def login():
user=input("Quel est votre nom ? ")
user=user.capitalize()
print("Bonjour monsieur {} et bienvenu dans le jeu.".format(user))
score={
user:point
}
with open('donee','wb') as db:
my_pickler=pickle.Pickler(db)
my_pickler.dump(score)
up there you can see my code, I want the result of my variable 'point' in the function traitement to be desplayed in the dictionary score;
how can i do that?
You don't. Local variables are by definition exactly that. You could use global values, but that is asking for trouble.
You can easily solve the problem by passing parameters to functions, and returning values from those functions.
I want to do a loop in python and how can i do a exit when?
In Turing what I want is
loop
put " Voulez vous jouer au 6-49 si oui entrez 'commencer' et n'oubliez pas qu'une "
put " partie coute 3$ " ..
color (green)
get word
color (black)
%Je clear l'ecrant
cls
put " Chargement en cour."
delay (500)
cls
put " Chargement en cour.."
delay (500)
cls
put " Chargement en cour..."
delay (500)
cls
%Je fais certain que le joueur a ecrit commencer
%Si il entre quelque choses d'autre que commencer le programme ne commence pas il demander de entre le mot commencer
exit when word = "commencer"
end loop
Now I need to do in Python but I don't know how to do that can someone help me out plzzz????
If I understand the semantics of the Turing code,
while True:
...
if word == "commencer":
break
I'm working on a code for a school which tells the students how many times they can skip classes. It doesn't work because there is an specific mistake that is always appearing:
Exception in Tkinter callback
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/tkinter/__init__.py", line 1533, in __call__
return self.func(*args)
File "/Users.py", line 52, in inicio
for line in improt:
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/encodings/ascii.py", line 26, in decode
return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 25: ordinal not in range(128)
I already tried to import mtTkinter but the program didn't recognize it. The mistake says tkinter is getting the wrong number of args. The line that caused the error was this one:
for line in importar:
lista.append(line)
But that seems like the right number of arguments, so what's going on?
There are also some strange mistakes that keep the program to run well.
Here I put my code so you can see if it works.
from tkinter import*
import math
import tkinter.filedialog
import traceback
import sys
ventana=Tk()
ventana.title("Este programa le dice cuantas veces mas puede faltar de ausencias 1, 2 y 3")
ventana.geometry("1000x1000")
lista=[]
clas=Label(ventana, text="Si tu materia es Tecno, Frances o Edufis, escribela tal cual en el cuadro").place(x=50,y=90)
classe=Entry(ventana)
classe.place(x=50,y=110)
segu=Label(ventana, text="Si tu materia es Español o Actualidad, escribela tal cual en el cuadro").place(x=50,y=140)
segun=Entry(ventana)
segun.place(x=50,y=160)
tercis=Label(ventana, text="Si tu materia es Qui, Math, Ingles o Filosofia, escribela tal cual en el cuadro").place(x=50,y=190)
terce=Entry(ventana)
terce.place(x=50,y=220)
a=Label(ventana, text="¿Cuantas veces ha faltado por ausencias o retardos 1?").place(x=50,y=250)
aa=Entry(ventana)
aa.place(x=50,y=270)
b=Label(ventana, text="¿Cuantas veces ha faltado por ausencias o retardos 2?").place(x=50,y=300)
bb=Entry(ventana)
bb.place(x=50,y=320)
c=Label(ventana, text="¿Cuantas veces ha faltado por ausencias o retardos 3?").place(x=50,y=350)
cc=Entry(ventana)
cc.place(x=50,y=380)
def inicio ():
global lista
global classe
global segu
global tercis
global aa
global bb
global cc
clases=(Entry.get(classe))
materias = filedialog.askopenfilename(filetypes=(("Archivo de texto","*.txt"),("Cualquier archivo","*.*")))
improt = open(materias,"r")
for line in improt:
lista.append(line)
if clases== Tecno:
Tecno= lista(0)
if clases== Frances:
Frances= lista(1)
if clases== Edufis:
Edufis= lista(2)
for i in range (0,2):
total=70
AM= (total*15)/100
A=(Entry.get(aa))
if A<AM:
res= AM-A
print("le quedan ", res, " ausencias o retardos 1")
if A==AM:
print("No puede tener mas ausencias o retardos 1")
if A>AM:
print("Ya se paso del maximo de ausencias o retardos 1")
segunda=(Entry.get(segun))
if segun== Español:
Español= lista(3)
if segun== Actualidad:
Actualidad= lista(4)
for i in range(3,4):
totala=140
BM= (totala*15)/100
B=(Entry.get(bb))
if B<AM:
tes= AM-B
print("le quedan ", tes, " ausencias o retardos 2")
if B==AM:
print("No puede tener mas ausencias o retardos 2")
if B>AM:
print("Ya se paso del maximo de ausencias o retardos 2")
tercera=(Entry.get(terce))
if terce== Qui:
Qui= lista(5)
if terce== Math:
Math= lista(6)
if terce== Ingles:
Ingles= lista(7)
if terce== Filo:
Filo= lista(8)
for i in range (5,8):
totale=175
CM= (totale*15)/100
C=(Entry.get(cc))
if C<BM:
pes= BM-C
print ("le quedan ", pes, " ausencias o retardos 2")
if C==BM:
print ("No puede tener mas ausencias o retardos 2")
if C>BM:
print ("Ya se paso del maximo de ausencias o retardos 2")
improt.close()
escoge = Button(ventana, text = "Escoge un archivo y despues escribe tu materia en el cuadro que corresponda", command = inicio).place(x =45, y = 30)
cierra = Button(ventana, text = "Cierra", command = ventana.destroy).place(x = 50, y = 420)
ventana.mainloop()
It looks like your system default is ASCII
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 25: ordinal not in range(128)
Assuming the language the file is using is Latin-1, try adding
#! /usr/bin/python ## (your shebang may be slightly different)
# -*- coding:latin-1 -*-
## next line after the shebang
## and then
for line.decode('latin-1') in improt:
If you open the file in Firefox and then View > Text Encoding, it should say what the encoding is. There are also websites that will do this. Also, this is a common problem (not a rare exception) so a search for "UnicodeDecodeError: 'ascii' codec can't decode byte" should produce a lot of hits