【问题标题】:Elif condition not executedElif 条件未执行
【发布时间】:2020-11-26 13:19:21
【问题描述】:

所以我试图用 Postman 做一些 json 请求。这是我的代码:

def create_app():
    app = Flask(__name__)

    @app.route('/', methods=['POST'])
    def index():
        news_site = request.get_json()
        print(news_site)
        if news_site.get('kompas', True) & news_site.get('detik', True) == True:
            scrapdata = kompas_fun(), detik_fun()
            return jsonify(scrapdata)
        elif news_site.get('kompas', True) & news_site.get('detik', False) == True:
            scrapdata = kompas_fun()
            return jsonify(scrapdata)
        elif news_site.get('kompas', False) & news_site.get('detik', True) == True:
            scrapdata = detik_fun()
            return jsonify(scrapdata)
        else:
            return jsonify({'value': 'error'})
    return app

if 条件有效,但不知道为什么忽略了两个elif 条件,然后当输入为kompas=True, detik=Falsekompas=False, detik=True 时直接转到else。我已经尝试不使用== True,将& 替换为and,但仍然相同。这是news_site打印和终端输出的结果:

(env) PS D:\demotest> flask run
 * Serving Flask app "run.py" (lazy loading)
 * Environment: development
 * Debug mode: on
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 318-319-173
 * Running on http://127.0.0.1:8080/ (Press CTRL+C to quit)
{'kompas': False, 'detik': True}
127.0.0.1 - - [26/Nov/2020 20:05:48] "POST / HTTP/1.1" 200 -
{'kompas': True, 'detik': False}
127.0.0.1 - - [26/Nov/2020 20:06:03] "POST / HTTP/1.1" 200 -
{'kompas': True, 'detik': True}

第一个和第二个输入产生else 输出。但是第三个执行得很完美。我不明白为什么。任何帮助将不胜感激。

【问题讨论】:

  • & 是按位与。使用and
  • 还是一样的结果。我第一次使用and,然后再尝试使用&

标签: python json flask


【解决方案1】:

& 是二元运算符,而不是逻辑运算符。您是否正在寻找

@app.route("/", methods=["POST"])
def index():
    news_site = request.get_json()
    kompas = bool(news_site.get("kompas"))
    detik = bool(news_site.get("detik"))
    scrapdata = []
    if kompas:
        scrapdata.append(kompas_fun())
    if detik:
        scrapdata.append(detik_fun())
    return jsonify(scrapdata)

【讨论】:

  • 很好的简化,但缺少else 的情况。你可以做return jsonify(scrapdata or {'value': 'error'})...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-25
  • 2021-08-24
  • 1970-01-01
相关资源
最近更新 更多