Python FizzBuzz

Me han dado esta pregunta para hacer en Python:

Tome una lista de números del usuario y ejecute FizzBuzz en esa lista.

Cuando recorras la lista, recuerda las reglas:

1) Si el número es divisible entre 3 y 5, imprima FizzBuzz

2) Si es solo divisible por 3, imprima Fizz

3) Si es solo divisible por 5 Buzz impresión

4) De lo contrario, simplemente imprima el número

También recuerda a Elif!

He creado la siguiente secuencia de comandos, pero me da un error si n%3=True

 n=input() if n%3=True: print("Fizz") else if n%5=True: print ("Buzz") elif print n 

¿Alguien puede ayudar? ¡Muchas gracias!

Algunos problemas con su código aquí. El primer problema es que, para la comparación, debes usar == , no = , que es para la asignación .

El segundo problema es que desea verificar que el rest de las divisiones (que es lo que calcula el operador de módulo) sea cero , no que sea cierto , lo que realmente no tiene sentido.

Debería usar elif para “de lo contrario si …” y de lo else para “de lo contrario”. Y necesitas arreglar el formato de tu cláusula else .

Usted quiere:

 n=input() if n%3 == 0: print("Fizz") elif n%5 == 0: print ("Buzz") else: print n 

Finalmente, su código no cumple con la especificación:

1) Si el número es divisible entre 3 y 5, imprima “FizzBuzz”

Lo anterior no hará esto. Esta parte te la voy a dejar porque no estoy aquí para resolverte la tarea 🙂

Basado en esto

FizzBuzz: para enteros hasta e incluyendo 100, imprime FizzBuzz si el entero es divisible entre 3 y 5 (15); Fizz si es divisible por 3 (y no 5); Buzz si es divisible por 5 (y no 3); y el entero de lo contrario.

 def FizzBuzz(): for i in range(1,101): print { 3 : "Fizz", 5 : "Buzz", 15 : "FizzBuzz"}.get(15*(not i%15) or 5*(not i%5 ) or 3*(not i%3 ), '{}'.format(i)) 

El método .get() maravillas aquí.

Opera de la siguiente manera

Para todos los enteros de 1 a 100 (101 NO está incluido),
Imprima el valor de la clave del diccionario que llamamos obtener de acuerdo con estas reglas.

“Obtener el primer elemento no falso en la llamada de get o devolver el entero como una cadena”.

Al verificar un valor True , por lo tanto, un valor que podemos buscar, Python evalúa 0 en False . Si mod 15 = 0, eso es Falso, iríamos al siguiente.

Por lo tanto, NOT cada uno de los ‘mods’ (también conocido como rest), de modo que si el mod == 0, que == False, obtenemos una statement True. Multiplicamos True por la clave del diccionario que devuelve la clave del diccionario (es decir, 3*True == 3 )

Cuando el número entero no es divisible por 3, 5 o 15, entonces caemos en la cláusula predeterminada de imprimir el '{}'.format(i) int '{}'.format(i) simplemente inserta i en esa cadena, como una cadena.

Algo de la salida

Efervescencia
79
Zumbido
Efervescencia
82
83
Efervescencia
Zumbido
86
Efervescencia
88
89
FizzBuzz
91
92
Efervescencia
94
Zumbido
Efervescencia
97
98
Efervescencia
Zumbido

n % 3 (o n % cualquier número) no se evalúa como True o False , no es una expresión booleana. n % 3 == 0 por otro lado, lo hace.

Además, ¿qué sucede cuando n % 3 == 0 y n % 5 == 0 evalúan como True ?

Hazlo universal para cualquier entero, positivo o negativo. También puede hacerlo fácilmente expandible a otras palabras clave para cualquier entero creando un diccionario de palabras clave.

 def checkdict(divdict, i): out = "" for key in divdict: if key != 0: if i%key==0: out+=divdict[key] if key == 0 and i == 0: out+=divdict[key] if out == "": out = i print(out) if __name__ == "__main__": mydict = {3:"Fizz",5:"Buzz"} for i in range(-50,50): checkdict(mydict, i)