Tengo una simple tarea de matemáticas, estoy teniendo problemas de ejecución, involucrando al azar de importación.
La idea es que no es un cuestionario de 10 generada aleatoriamente preguntas. Tengo los números que van desde (0,12) mediante el azar.la función randint, que funciona bien. La siguiente parte de la elección de un operador aleatorio estoy teniendo problemas con [‘+’, ‘-‘, ‘*’, ‘/’].

Tengo mis más sofisticado de codificación de vuelta en la escuela, pero esta es mi practica que todo lo que necesita es la capacidad de crear de forma aleatoria una pregunta y pedir que, además de ser capaz de responder por sí misma para determinar si la respuesta dada es correcta.
Aquí está mi código:

import random

ops = ['+', '-', '*', '/']
num1 = random.randint(0,12)
num2 = random.randint(0,10)
operation = random.choice(ops)

print(num1)
print(num2)
print(operation)

maths = num1, operation, num2

print(maths)

A partir de ahora, aunque, mi salida es un poco desordenado.
Por ejemplo:

3
6
*
(3, '*', 6)

Claramente que no puede determinar la respuesta de (3, ‘*’, 6). Voy a estar cambiando de esta operación en una subrutina en mi otro programa, pero es necesario trabajar primero!

Y que me perdone si no es muy bien hecho, esta fue una rápida reconstrucción de la tarea que me dejó en la escuela, y yo también soy bastante nuevo en esto, con un conocimiento limitado. Gracias de antemano!

  • No sólo quiere print(num1, operation, num2) (o print(*maths))? Podrían aclarar el resultado que estamos esperando?
  • Debes editar tu pregunta, así como para realmente hacer una pregunta.
  • Bueno, la idea es que luego de hacer la pregunta, mientras que sabiendo la pregunta para ser capaz de responder a ella misma y se va a restablecer a sí mismo después de cada pregunta, así que supuse que una variable sería útil para ambas situaciones. Y estoy bastante seguro de que es una pregunta, solo mal escrito? Pero voy a tratar de reformulación de la misma. Gracias.
InformationsquelleAutor Obahar | 2014-10-08

3 Comentarios

  1. -5

    Hay una función en Python llamado eval() que evalúa las cadenas que contienen expresiones matemáticas.

    import random
    
    ops = ['+', '-', '*', '/']
    num1 = random.randint(0,12)
    num2 = random.randint(0,10)
    operation = random.choice(ops)
    
    print(num1)
    print(num2)
    print(operation)
    
    maths = eval(str(num1) + operation + str(num2))
    
    print(maths)

    Usted necesita para convertir sus números a cadenas, porque la función está a la espera de algo como la cadena ‘4*2’, ‘3+1’ etc. etc.

    • Otra cosa que yo no sabía! Gracias por el aporte, voy a estar seguro para probarlo y convertir números a cadenas. Gracias por su ayuda!
    • Probablemente no es una buena idea para convertir todo en una cadena y, a continuación,evel. Especialmente cuando Python le da la aritmética funciones como operadores.
  2. 19

    Acerca de cómo hacer un diccionario que asigna el operador del personaje (por ejemplo,’+’) para el operador (por ejemplo,operator.add). A continuación, muestra que, del formato de la cadena, y realizar la operación.

    import random
    import operator

    La generación aleatoria de expresión matemática

    def randomCalc():
        ops = {'+':operator.add,
               '-':operator.sub,
               '*':operator.mul,
               '/':operator.truediv}
        num1 = random.randint(0,12)
        num2 = random.randint(1,10)   # I don't sample 0's to protect against divide-by-zero
        op = random.choice(list(ops.keys()))
        answer = ops.get(op)(num1,num2)
        print('What is {} {} {}?\n'.format(num1, op, num2))
        return answer

    Preguntando al usuario

    def askQuestion():
        answer = randomCalc()
        guess = float(input())
        return guess == answer

    Finalmente, hacer un multi-cuestionario pregunta

    def quiz():
        print('Welcome. This is a 10 question math quiz\n')
        score = 0
        for i in range(10):
            correct = askQuestion()
            if correct:
                score += 1
                print('Correct!\n')
            else:
                print('Incorrect!\n')
        return 'Your score was {}/10'.format(score)

    Algunas pruebas

    >>> quiz()
    Welcome. This is a 10 question math quiz
    
    What is 8 - 6?
    2
    Correct!
    
    What is 10 + 6?
    16
    Correct!
    
    What is 12 - 1?
    11
    Correct!
    
    What is 9 + 4?
    13
    Correct!
    
    What is 0 - 8?
    -8
    Correct!
    
    What is 1 * 1?
    5
    Incorrect!
    
    What is 5 * 8?
    40
    Correct!
    
    What is 11 / 1?
    11
    Correct!
    
    What is 1 / 4?
    0.25
    Correct!
    
    What is 1 * 1?
    1
    Correct!
    
    'Your score was 9/10'
    • No me había dado cuenta que había un operador de directorio, que habría sido útil saber. Y el diccionario idea es genial!!! Gracias por la ayuda!
    • Lo siento, traté de tu respuesta primero y luego su. Me encontré con su un poco más fácil de seguir y ejecutar en mi situación. Cuando hice clic en la mejor respuesta se demostró que la suya fue desactivada por lo que supuse que estaba todo hecho. Lo siento por eso
  3. 0

    Utilizar una lista de los operadores e.g operador = [‘+’, ‘‘,’ -‘, ‘/’]
    a continuación, puede utilizar
    A continuación, puede utilizar una elección al azar en la lista para llamar a un operador aleatorio (+,-,
    ,/) x = (al azar.elección(operador))
    Finalmente, usted necesita para convertir su num1 & num2 a las cadenas de
    algo como esto eval(str(num1)+ x + str(num2)) Que debe hacer su prueba completamente al azar

Dejar respuesta

Please enter your comment!
Please enter your name here