Foro De Python - Discusión General

Extremadamente trivial con expresiones regulares, se hace en una sola línea:

Python:
import re

def del_consecutives(char, string):
    return re.sub(char + "{2,}",char,string)

print(del_consecutives("a", "abracaadaaabraaaa"))

Solamente sería validar que char sea 1 caracter, eso es todo.
Aun no he estudiado el tema de expresiones regulares, se ve muy interesante, gracias por la info.
 
loco es el ejercicio de la tabla de futbol futbol con ordenamiento quicksort, pero no he podido avanzar casi nada, tengo mas o omenos esto pero lo que me tiene parado es la funcion de ordenamiento, ya lo tengo con ordenamiento burbuja pero porque me ayudaron, falta ordenamiento quicksort, dejo el codigo:

Python:
#funciones

def calcular_puntos(pg,pe):
    puntos=[]
    for i in range(N):
        pun=pg[i]*3+pe[i]*1
        puntos.append(pun)
    return puntos

def ordenamiento_burbuja(nombres,pg,pe,pp,puntos):
    for i in range(0,N-1,1):
        for j in range(i+1,N,1):
            if puntos[i]<=puntos[j]:
                t=nombres[i]
                nombres[i]=nombres[j]
                nombres[j]=t

                t=pg[i]
                pg[i]=pg[j]
                pg[j]=t

                t=pe[i]
                pe[i]=pe[j]
                pe[j]=t 

                t=pp[i]
                pp[i]=pp[j]
                pp[j]=t 

                t=puntos[i]
                puntos[i]=puntos[j]
                puntos[j]=t         
    return nombres,pg,pe,pp,puntos

#programa principal

N=int(input("cantiad de equipos: "))
nombres=[]
pg=[]
pe=[]
pp=[]
puntos=[]
for i in range(N):
    nom=input("nombre equipos: ")
    p_g=int(input("partidos ganados: "))
    p_e=int(input("partidos empatados: "))
    p_p=int(input("partidos perdidos: "))
    nombres.append(nom)
    pg.append(p_g)
    pe.append(p_e)
    pp.append(p_p)

  
#calcular puntos

puntos=calcular_puntos(pg,pe)
#ordenamiento

nombres,pg,pe,pp,puntos=ordenamiento_burbuja(nombres,pg,pe,pp,puntos)

#falta imprimir porque no se como presentar los datos


lanero si no es mucha molestia podria explicar su codigo para dummys? entiendo que esta creando una funcion llamada del_consecutives, a esa funcione le asignan los parametros char y string luego pide que retorne algo pero ahi me perdi despues del retur.
Podrías colocar un ejemplo de llamadas a las funciones y el resultado esperado?. Así como colocar los docstrings a las funciones para entenderla mejor?

En la linea ===> for j in range(i+1,N,1):
el step (el último 1), lo podrías quitar.
 
Pregunta alguien que sepa de pythn 3, tengo este programa pero me bota que no deben ser float, no entiendo bien el ejercicio.
Python:
#Funciónqué será llamada para imprimir un texto y una cantidad
def imprimir(texto, valor):
    print('{} {}\n'.format(texto, valor))

def promedio(datos):
    sumatoria = sum(datos)
    imprimir('La sumatoria es: ', sumatoria)

    longitud = float(len(datos))
    imprimir('La longitud es: ', longitud)

    resultado = sumatoria / longitud
    imprimir('El resultado es: ', resultado)

def moda(datos):
    repeticiones = 0

    for i in datos:
        n = datos.count(i)
        if n> repeticiones:
            repeticiones = n

    moda = [] #Arreglo donde se guardara el o los valores de mayor frecuencia

    for i in datos:
        n = datos.count(i) # Devuelve el número de veces que x aparece enla lista.
        if n== repeticiones and i not in moda:
            moda.append(i)

    if len(moda) != len(datos):
        imprimir ('Moda: ', moda)
    else:
        print ('No hay moda')

def media(datos):
    datos.sort() #.sort Ordena los ítems dela lista

    if len(datos) % 2 == 0:
        n = len(datos)
        mediana = (datos[n / 2 - 1] + datos[n / 2]) / 2
    else:
        mediana = datos[len(datos) / 2]

    imprimir ('Media: ', mediana)

def main():
    datos = list() #Lista donde cada dato será guardado

    salir = int(input('Cuantos valores quieres ingresar? : '))

    for i in range(salir):
            number = int(input('Escribe el dato: '))
            datos.append(number) #Agregar un nuevo valor a la lista

    promedio(datos)
    moda(datos)
    media(datos)

if __name__ == '__main__': #Inicio del programa
    main()
Traceback (most recent call last):
File "c:/Users/ferpi/Desktop/virtual/wo_func_da.py", line 60, in <module>
main()
File "c:/Users/ferpi/Desktop/virtual/wo_func_da.py", line 57, in main
media(datos)
File "c:/Users/ferpi/Desktop/virtual/wo_func_da.py", line 42, in media
mediana = datos[len(datos) / 2]
TypeError: list indices must be integers or slices, not float

En la linea 42 el resultado del calculo "datos / 2" es siempre un número decimal, ya que el signo / siempre retorna un float. Luego ese valor float, al intentar pasarlo como una posición o indice en una lista da un error, ya que los indices de listas siempre son números enteros. Lo corriges con el signo de division entera: // el cual siempre retorna un int
 

Los últimos mensajes

Los últimos temas