|
52
|
Programación / Scripting / (Python 3.5) Problema con variables globales y funciones
|
en: 19 Diciembre 2016, 21:55 pm
|
def preg(nm,ap,m,j): nm = input(m,": Ingresa nombre de,",j,": ") while len(nm)>20 or not nm.isalpha() or len(nm)<=2: nm = input(m,"Demasiados car. (min 3 y max 20) o car. invalido,",j,"ingrese otra vez el nombre: ") limpiar() ap = input(m,": Ingresa apellido de 1er jugador: ") while len(ap)>20 or not ap.isalpha() or len(ap)<=2: ap = input(m,"Demasiados car. (min 3 y max 20) o car. invalido,",j,"ingrese otra vez el apellido: ") def programa(): #Definir el programa para poder hacer la funcion reinicio global nm1,nm2,nm3,nm4,ap1,ap2,ap3,ap4 print () print ("|----------------|") print ("|Lista de ajedrez|") print ("|----------------|") print () print () input("PRESIONA ENTER PARA INICIAR EL REGISTRO DE PRIMERA MESA| ") #Inicio primera mesa limpiar() global nm1,ap1,nm2,ap2,nm3,ap3,nm4,ap4 #Define a las variables mencionadas a globales preg(nm1,ap1,"MESA 1","JUGADOR 1") limpiar() preg(nm2,ap2,"MESA 1","JUGADOR 2") limpiar()
Tengo un problema con este codigo, al parecer es por el estado de las variables. Error: |----------------| |Lista de ajedrez| |----------------| PRESIONA ENTER PARA INICIAR EL REGISTRO DE PRIMERA MESA| Traceback (most recent call last): File "CAJ_optimizado.py", line 199, in <module> programa() File "CAJ_optimizado.py", line 169, in programa preg(nm1,ap1,"MESA 1","JUGADOR 1") NameError: name 'nm1' is not defined
Hice la funcion preg() para optimizar mi codigo y asignar las variables con los parametros. Pero tengo un global en TODAS mis funciones y aun asi no me sirve, como soluciono esto?
|
|
|
54
|
Programación / Programación General / Libreria
|
en: 17 Diciembre 2016, 08:06 am
|
Probablemente esta sea una pregunta bastante tonta pero en wikipedia no me ha quedado muy claro. Que es una librería?? Por ejemplo en Python una librería serian todos sus modulos, las secciones los modulos separados(por ejemplo math,os,etc) y los libros sus funciones?
|
|
|
55
|
Programación / Scripting / (Python 3.5) Problema al manejar excepciones
|
en: 15 Diciembre 2016, 22:17 pm
|
try: nm1 = input("MESA 1: Ingresa nombre de 1er jugador: ") except KeyboardInterrupt: while True: try: limpiar() nm1 = input("MESA 1: Ingresa nombre de 1er jugador: ") break except KeyboardInterrupt: continue while len(nm1)>20 or not nm1.isalpha() or len(nm1)<=2: try: nm1 = input("Demasiados car. (min 3 y max 20) o car. invalido, ingrese otra vez: ") while len(nm1)>20 or not nm1.isalpha() or len(nm1)<=2: nm1 = input("Demasiados car. (min 3 y max 20) o car. invalido, ingrese otra vez: ") limpiar() break except KeyboardInterrupt: limpiar() continue limpiar() try: ap1 = input("MESA 1: Ingresa apellido de 1er jugador: ") except KeyboardInterrupt: while True: try: limpiar() ap1 = input("MESA 1: Ingresa apellido de 1er jugador: ") break except KeyboardInterrupt: continue while len(ap1)>20 or not ap1.isalpha() or len(ap1)<=2: try: ap1 = input("Demasiados car. (min 3 y max 20) o car. invalido, ingrese otra vez: ") while len(ap1)>20 or not ap1.isalpha() or len(ap1)<=2: ap1 = input("Demasiados car. (min 3 y max 20) o car. invalido, ingrese otra vez: ") limpiar() break except KeyboardInterrupt: limpiar() continue
Tengo un problema al intentar poner el apellido del jugador 1, por ejemplo: MESA 1: Ingresa nombre de 1er jugador: elhacker MESA 1: Ingresa apellido de 1er jugador: """Pulso Ctrl+C para invocar a la excepcion KeyboardInterrupt. Deberia mostrar lo mismo y consultarme el apellido del primer jugador pero...""" MESA 1: Ingresa nombre de 1er jugador: """Aqui como que se devuelve y me pregunta el nombre del 1er jugador pero esta asignando mi entrada a la del apellido del jugador 1, deberia preguntarme el apellido."""
Alguien sabe cual es el error y como lo soluciono?? Gracias. PD: En las etiquetas geshi se ve el indentando mas largo, le hize copy-paste a mi codigo y quedo asi. En mi editor el indentando esta bien
|
|
|
56
|
Programación / Scripting / Re: [python] problemilla con timedelta
|
en: 14 Diciembre 2016, 18:10 pm
|
El tipo (str) es una cadena de caracteres como "hola". Los strings (str) van delimitados por comillas simples o dobles. (Deberías saber que es un string si llevas 2 meses con python) ¿ como hacer que te pregunte que numero sumar y lo sume (el momento en el que me salta el error)?
Puedes usar input (en python 3x) o raw input (en 2.x) para recibir entradas del usuario y poder interactuar con ellas. Puedes asignar una variable con un input, por ejemplo: nombre = input("Cual es tu nombre?")
Esto asignara la variable nombre a la entrada del usuario cuando tu le preguntaste cual era su nombre. Saludos!
|
|
|
58
|
Programación / Scripting / (Python 3.5) 2 veces un input
|
en: 14 Diciembre 2016, 03:54 am
|
Hola, tengo un error en este codigo. while True: com = input("Esperando cambio de hora o entrada de administrador, !!buen juego!!: ") if com == ("admin"): limpiar() menum2()
Funcion menum2: def menum2(): global nm1,ap1,nm2,ap2,nm3,ap3,nm4,ap4 #Declara todas las variables mencionadas a global print("""MODO ADMINISTRACION TOTAL ACTIVADO: Ver MESA 1: vm1 Ver MESA 2: vm2 Reiniciar: reinicio Ajustar J1 de primera mesa: aj1 Ajustar J2 de primera mesa: aj2 Ajustar J1 de segunda mesa: aj3 Ajustar J2 de segunda mesa: aj4 Esperar: esperar Salir: salir""") respuad = input("admin: ") limpiar() if respuad == ("vm1"): print (nm1,ap1,"|",nm2,ap2) input("Presione enter: ") limpiar() menum2() elif respuad == ("vm2"): print (nm3,ap3,"|",nm4,ap4) input("Presione enter: ") limpiar() menum2() elif respuad == ("reinicio"): programa() elif respuad == ("aj1"): nm1 = input("PRIMERA MESA: Ingresa nombre de 1er jugador: ") while (len(nm1)>20) or (not (nm1.isalpha()) or (len(nm1)<=2)): nm1 = (input("Demasiados car. (min 3 y max 20) o car. invalido, ingrese otra vez: ")) limpiar() ap1 = input("PRIMERA MESA: Ingresa apellido de 1er jugador: ") while (len(ap1)>20) or (not (ap1.isalpha()) or (len(ap1)<=2)): ap1 = (input("Demasiados car. (min 3 y max 20) o car. invalido, ingrese otra vez: ")) limpiar() input("Presione enter: ") limpiar() menum2() elif respuad == ("aj2"): nm2 = input("PRIMERA MESA: Ingresa nombre de 2do jugador: ") while (len(nm2)>20) or (not (nm2.isalpha()) or (len(nm2)<=2)): nm2 = (input("Demasiados car. (min 3 y max 20) o car. invalido, ingrese otra vez: ")) limpiar() ap2 = input("PRIMERA MESA: Ingresa apellido de 2do jugador: ") while (len(ap2)>20) or (not (ap2.isalpha()) or (len(ap2)<=2)): ap2 = (input("Demasiados car. (min 3 y max 20) o car. invalido, ingrese otra vez: ")) limpiar() input("Presione enter: ") limpiar() menum2() elif respuad == ("aj3"): nm3 = input("SEGUNDA MESA: Ingresa nombre de 1er jugador: ") while (len(nm3)>20) or (not (nm3.isalpha()) or (len(nm3)<=2)): nm3 = (input("Demasiados car. (min 3 y max 20) o car. invalido, ingrese otra vez: ")) limpiar() ap3 = input("Segunda MESA: Ingresa apellido de 1er jugador: ") while (len(ap3)>20) or (not (ap3.isalpha()) or (len(ap3)<=2)): ap3 = (input("Demasiados car. (min 3 y max 20) o car. invalido, ingrese otra vez: ")) limpiar() input("Presione enter: ") limpiar() menum2() elif respuad == ("aj4"): nm4 = input("SEGUNDA MESA: Ingresa nombre de 2do jugador: ") while (len(nm4)>20) or (not (nm4.isalpha()) or (len(nm4)<=2)): nm4 = (input("Demasiados car. (min 3 y max 20) o car. invalido, ingrese otra vez: ")) limpiar() ap4 = input("SEGUNDA MESA: Ingresa apellido de 2do jugador: ") while (len(ap4)>20) or (not (ap4.isalpha()) or (len(ap4)<=2)): ap4 = (input("Demasiados car. (min 3 y max 20) o car. invalido, ingrese otra vez: ")) limpiar() input("Presione enter: ") limpiar() menum2() elif respuad == ("esperar"): limpiar() com = input("Esperando cambio de hora o entrada de administrador, !!buen juego!!: ") if com == ("admin"): limpiar() menum2() elif respuad == ("salir"): quit() else: input("Comando invalido, presione enter: ") limpiar() menum2()
Al llegar a "Esperando cambio de administrador, buen juego" y poner "admin", no pasa nada y me lo vuelve a mostrar y cuando pongo "admin" esta vez si lo acepta. Ejemplo: Esperando cambio de hora o entrada de administrador, !!buen juego!!: admin #No pasa nada Esperando cambio de hora o entrada de administrador, !!buen juego!!: admin #Esta vez si me lleva al menu admin
Porque pasa esto y como lo arreglo? EDIT: No se porque a python le dan ganas de trollearme, pero no hice nada en el codigo y al poner admin se activaba el menú.
|
|
|
59
|
Programación / Scripting / (PYTHON 3.5) Else no funcona
|
en: 13 Diciembre 2016, 22:25 pm
|
#!usr/bin/env python def vocales(string): if "A" or "a" or "E" or "e" or "I" or "i" or "O" or "o" or "U" or "u" in string: nvocalesami = (string.count("a")) nvocalesama = (string.count("A")) nvocalesemi = (string.count("e")) nvocalesema = (string.count("E")) nvocalesimi = (string.count("i")) nvocalesima = (string.count("I")) nvocalesomi = (string.count("o")) nvocalesoma = (string.count("O")) nvocalesumi = (string.count("u")) nvocalesuma = (string.count("U")) part1 = (nvocalesami + nvocalesama + nvocalesemi + nvocalesema + nvocalesimi + nvocalesima) part2 = (nvocalesomi + nvocalesoma + nvocalesumi + nvocalesuma) todo = (part1 + part2) return ("Hay",todo,"vocales en la frase") else: return("No hay vocales en la frase")
Tengo un problema con este codigo al utilizar la funcion vocales con un argumento sin vocales por ejemplo: Salida vocales(r) Hay 0 vocales en la frase
----------------------- Porque no sale "No hay vocales en la frase"?
|
|
|
60
|
Programación / Scripting / (Python 3.5) Bucle for
|
en: 10 Diciembre 2016, 18:36 pm
|
Hola, tengo una duda respecto a este codigo con bucle for. for letra in "string": print(letra)
Salida: s t r i n g --------- Mi duda es: ¿porque el programa imprime cada letra de la palabra "string" si yo nunca especifique en el codigo que tomara cada letra y la imprima? Gracias.
|
|
|
|
|
|
|