在这种情况下我做错了什么?

时间:2015-06-27 21:56:58

标签: python function

我正在开发一个codecademy.com Python课程,我无法找到这段代码的错误:

def greater_less_equal_5(answer):
    if answer >= 5:
         return 1
    elif answer <= 5:
         return -1
    else:
         return 0

print greater_less_equal_5(4)
print greater_less_equal_5(5)
print greater_less_equal_5(6)

它返回:

-1
1
1

我的代码出了什么问题?

2 个答案:

答案 0 :(得分:1)

您的代码中存在逻辑错误。当您使用参数answer>=5调用greater_less_equal_5函数时,您将输入第一个5语句,因为它满足1的条件。因此,每当您使用参数if调用answer=5函数时,您将获得返回值0

为了使其正确,只需查看两个File "/home/matt/work/bsureunion/venv/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__return self.wsgi_app(environ, start_response) File "/home/matt/work/bsureunion/venv/lib/python2.7/site-packages/flask/app.py", line 1820, in wsgi_app response = self.make_response(self.handle_exception(e)) File "/home/matt/work/bsureunion/venv/lib/python2.7/site-packages/flask/app.py", line 1403, in handle_exception reraise(exc_type, exc_value, tb) File "/home/matt/work/bsureunion/venv/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app response = self.full_dispatch_request() File "/home/matt/work/bsureunion/venv/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request rv = self.handle_user_exception(e) File "/home/matt/work/bsureunion/venv/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception reraise(exc_type, exc_value, tb) File "/home/matt/work/bsureunion/venv/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request rv = self.dispatch_request() File "/home/matt/work/bsureunion/venv/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request return self.view_functions[rule.endpoint](**req.view_args) File "/home/matt/work/bsureunion/run.py", line 71, in contact if form.validate_on_submit(): File "/home/matt/work/bsureunion/venv/lib/python2.7/site-packages/flask_wtf/form.py", line 166, in validate_on_submit return self.is_submitted() and self.validate() File "/home/matt/work/bsureunion/venv/lib/python2.7/site-packages/wtforms/form.py", line 310, in validate return super(Form, self).validate(extra) File "/home/matt/work/bsureunion/venv/lib/python2.7/site-packages/wtforms/form.py", line 152, in validate if not field.validate(self, extra): File "/home/matt/work/bsureunion/venv/lib/python2.7/site-packages/wtforms/fields/core.py", line 200, in validate Display the sourcecode for this frameOpen an interactive python shell in this framestop_validation = self._run_validation_chain(form, chain) File "/home/matt/work/bsureunion/venv/lib/python2.7/site-packages/wtforms/fields/core.py", line 220, in _run_validation_chain validator(form, self) File "/home/matt/work/bsureunion/venv/lib/python2.7/site-packages/flask_wtf/recaptcha/validators.py", line 47, in __call__ if not self._validate_recaptcha(response, remote_ip): File "/home/matt/work/bsureunion/venv/lib/python2.7/site-packages/flask_wtf/recaptcha/validators.py", line 74, in _validate_recaptcha for error in json_resp["error-codes"]: KeyError: 'error-codes' 条件中的内容,以便在from flask.ext.wtf import Form, RecaptchaField from wtforms import StringField, TextAreaField, SubmitField from wtforms.validators import InputRequired, Email from wtforms.fields.html5 import EmailField class ContactForm(Form): name = StringField("Name", validators=[InputRequired('Please enter your name.')]) email = EmailField("Email", validators=[InputRequired("Please enter your email address."), Email("Please enter your email address.")]) subject = StringField("Subject", validators=[InputRequired("Please enter the subject.")]) message = TextAreaField("Message", validators=[InputRequired("Please enter your message.")]) recaptcha = RecaptchaField() submit = SubmitField("Send") 时获得返回值import os from flask import Flask, render_template, request, flash from forms import ContactForm from flask.ext.mail import Message, Mail mail = Mail() app = Flask(__name__) app.secret_key = 'secret_' app.config["MAIL_SERVER"] = "smtp.gmail.com" app.config["MAIL_PORT"] = 465 app.config["MAIL_USE_SSL"] = True app.config["MAIL_USERNAME"] = 'me@gmail.com' app.config["MAIL_PASSWORD"] = 'password' SECURITY_EMAIL_SENDER = 'me@gmail.com' RECAPTCHA_USE_SSL = False RECAPTCHA_PUBLIC_KEY = 'public' RECAPTCHA_PRIVATE_KEY = 'private' RECAPTCHA_OPTIONS = {'theme': 'white'} mail.init_app(app) ****snip**** @app.route('/contact/', methods=['GET', 'POST']) def contact(): form = ContactForm() if request.method == 'POST': if form.validate() == False: flash('All fields are required.') return render_template('contact.html', form=form) if form.validate_on_submit(): msg = Message(form.subject.data, sender='contact@bsureunion.com', recipients=['me@gmail.com']) msg.body = """ From: %s <%s> %s """ % (form.name.data, form.email.data, form.message.data) mail.send(msg) return render_template('contact.html', success=True) elif request.method == 'GET': return render_template('contact.html', form=form)

答案 1 :(得分:0)

正如@Bhargav Rao所说,您需要从代码中删除=个符号。

原因是它首先检查answer是否大于或等于5并返回1。 5大于或等于为5,因此返回1