使用随机整数和Flask创建Key / Value JSON对象

时间:2017-03-28 22:08:21

标签: python json random flask

我最近被要求做功课以扩展Flask应用程序,以便创建一个路由,它将滚动两个骰子并将结果作为JSON对象返回。

我以为我已经正确地完成了程序但是很遗憾地发现我的代码产生的不是JSON对象?

有谁知道如何使用下面的代码并将骰子卷作为键/值对返回?此时,当我访问rolldice路径时,输出被Jsonified作为两个骰子卷的总和。我不确定如何将其转换为键/值对。感谢任何帮助,再次感谢。

这是我的代码:

from flask import Flask
from flask import jsonify
app = Flask(__name__)

import json
import random

@app.route('/')
def hello_world():
    return 'Hello World!'

# Create a route and function for rolling dice.
@app.route('/rolldice')
def dieobject():
    # Define rollcount
    rollcount = []
    # Define the number of times we will roll two dice.
    for i in range(0, 1):
        # Define rolling two dice.
        two_dieobject = random.randint(1, 6) + random.randint(1, 6)
        # Take output of our dice roll and pass it to rollcount.
        rollcount.append(two_dieobject)
    # Return the value of rollcount as JSON Data.
    # Data will be presented as one integer which is the sum of two dice rolls.
    return jsonify(rollcount)

if __name__ == '__main__':
    app.debug = True
    app.run()

对于那些在这里问的是我收到的输出:

[
  7
]

表示的整数是两个骰子的总和。

1 个答案:

答案 0 :(得分:1)

也许是这样的。它在循环中执行滚动并使用sum函数将它们添加到一起。

from flask import Flask, jsonify
import random

app = Flask(__name__)


def roll(numrolls=1):
    return sum(random.randint(1, 6) for _ in range(numrolls))


@app.route('/rolldice')
def dieobject():

    # make dictionary here
    return jsonify({'value': roll(numrolls=2), 'rolls': 2})

if __name__ == '__main__':
    app.run(debug=True)

我扩展了一下。它返回一个roll值和用于获取该值的骰子数。您可以再次展开它以使刻录服务获取一个参数,说明如果需要可以滚动多少骰子。

输出

{
  "rolls": 2, 
  "value": 7
}