我正在尝试写出一个switch
语句,并将条件存储在array
中。条件是是否为score is between two numbers ('test')
。如果它在这两个数字之间,则会发出'response'
。
我的期望是,使用'score'
变量并从array
获取参数将使用我的'response'
变量来输出有关score
的消息,如果条件被满足。我可以获得paragraph1
的输出,但是,我的'response'
中paragraph two
的{{1}}的输出却无法获得。
switch statement
答案 0 :(得分:3)
要编写带范围的开关盒,您需要编写如下内容(如下所示显示案例1和3):
from flask import Flask, jsonify, request, render_template_string
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
@app.route('/')
@app.route('/api/talk', methods=['POST'])
def index():
if request.method == 'POST':
print('form:', request.form)
print('data:', request.data)
print('json:', request.json)
user_input = request.json['user_input']
return jsonify({'msg': 'My Answer'})
else:
return render_template_string('''<html>
<head>
<link rel="stylesheet" href="">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
<script src=""></script>
<script src=""></script>
</head>
<body>
<div class="container">
<h1>Let's Talk</h1>
<div id="userinput" class="alert alert-success" role="alert"></div>
<div id="botresponse" class="alert alert-danger" role="alert"></div>
<input type="text" id="user_input" class="input-small"><br><br>
<button onclick="sendToServer()" class="btn btn-success" id="button">Send</button>
<span></span>
</div>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script>
function sendToServer(){
console.log("clicked");
$.ajax({
data: JSON.stringify({ user_input: $("#user_input").val() }),
type: "POST",
url: "http://127.0.0.1:8000/api/talk",
contentType: "application/json",
headers: {"Access-Control-Allow-Origin": "*"},
}).done(function(data){
console.log(data);
let user = $("#user_input").val();
document.getElementById("userinput").innerText=user;
document.getElementById("botresponse").innerText=data.msg;
});
}
</script>
</body>
</html>''')
if __name__ == '__main__':
app.run(host='127.0.0.1', port=8000, debug=True, use_reloader=False)
答案 1 :(得分:1)
注意:我写了这个答案,然后在评论中看到使用
switch
语句是JS挑战的必要条件。但我还是把它留在这里
switch
确实不适合您要尝试执行的操作。这是我的处理方式:
const section = document.querySelector('body');
const score = 85;
const conditions = [
{ test: s => isNaN(s), response: 'not a number' },
{ test: s => (s < 0 || s > 100), response: 'broken' },
{ test: s => s < 19, response: '0-18' },
{ test: s => s < 39, response: '19-38' },
{ test: s => s < 69, response: '39-68' },
{ test: s => s < 89, response: '69-88' },
{ test: s => true, response: '89-100' }
];
const response = conditions.find(cond => cond.test(score)).response;
// Don't edit the code below here!
section.innerHTML = ' ';
let para1 = document.createElement('p');
let para2 = document.createElement('p');
para1.textContent = `Your score is ${ score }`;
para2.textContent = response;
section.appendChild(para1);
section.appendChild(para2);
答案 2 :(得分:0)
将这些条件转换为数组毫无意义。您使事情变得过于复杂。只需这样做:
if(score < 0 || score > 100) {
return 'broken';
} else if (score != Number || score == 0) {
return 'not a number'
} else if (score > 19 || score < 39){
return '20-38'
}
等...