2014-11-20 3 views
0

Мне нужна помощь с моим приложением Python Flask. Я пытаюсь дать пользователю результат деления, который они определяют, но он не работает. Когда пользователь отправляет «5» и «2», например, он возвращает «2» вместо «2,5». Я понятия не имею, почему это будет сделано.Ошибка деления флагов Python

Ниже мой код ... может ли кто-нибудь выяснить, почему это произойдет?

from flask import Flask, session, render_template, request 
app = Flask(__name__) 
app.secret_key = 'wlFw0WP7SrNmAMF1wJaUSjWMTYdTay8EDIA3FPQhbo9c7wQ9rIdQrzJRzcN1o3mp' 

@app.route('/',methods=['GET','POST']) 
def index(): 
    [...] 
    if request.method == 'POST': 
     a = int(request.form['a']) 
     b = int(request.form['b']) 
     result = a/b 
     return render_template('index.html',session=session,result=result) 
    return render_template('index.html',session=session) 

# Other routes omitted 

if __name__ == '__main__': 
    app.run(host='0.0.0.0') 
+2

возможно дубликат [Python разделение] (HTTP: // StackOverflow .com/вопросы/2958684/python-division) – gengkev

ответ

3

В Python 2 деление int на другое int будет выполнять целочисленное деление.

Чтобы обойти эту проблему, вы можете умножить a на 1.0, превращая его в поплавка перед делением на Ь:

result = a*1.0/b 

Это должно дать вам ожидаемый 2.5 вместо 2.

+0

Спасибо, что сработало !! Я запомню это в будущем. –

+0

Или вы можете инициализировать a, b = .0, .0 без умножения на 1.0, в других ords, u должен сделать его как float – user3001937

0

добавьте эту строку в начале исходного кода ур.

from __future__ import division 
+0

Это круто! Почему это работает? Что такое '__future__'? –

+0

http://stackoverflow.com/questions/7075082/what-is-future-in-python-used-for-and-how-when-to-use-it-and-how-it-works – user3001937

-1

В зависимости от версии Python, которую вы используете, результаты могут быть разными. См. this question для получения более подробной информации. Но в двух словах, это выглядит, для того, чтобы увидеть результат с плавающей точкой, вам нужно будет преобразовать числа в поплавках первый как ниже

a = float(request.form["a"]) 
a = float(request.form["b"]) 
Смежные вопросы