2017-10-12 164 views
1

我一直在烧瓶中得到这个代码的相同问题。我正在做数字猜测游戏,1-100,并且出于某种原因,它总是以“太低”响应。Flask的数字猜谜游戏

from flask import Flask, render_template, session, request, redirect 
import random 

app = Flask(__name__) 
app.secret_key = 'thisIsSecret' 

@app.route('/') 
def index(): 
session['number'] = random.randrange(0,100) 
print session['number'] 
return render_template("index.html") 

@app.route('/guess', methods=['POST']) 
def result(): 
if request.form['guess'] == session['number']: 
    answer = "Correct" 
    return render_template("index.html", answer=answer) 
elif request.form['guess'] > session['number']: 
    answer = "Too Low" 
    return render_template("index.html", answer=answer) 
else: 
    answer = "Too High" 
    return render_template("index.html", answer=answer) 

app.run(debug=True) 

而我的HTML文件看起来像这样...

<html> 
<head> 
    <title>Great Number Game</title> 
    <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='style.css') }}"> 
</head> 
<body> 
    <h1>Welcome to the Great Number Game!</h1> 
    <h3>Think of a number 1 - 100...see if you can guess it right!</h3> 
    <p class="answer">{{ answer }}</p> 
    <form action='/guess' method='post'> 
     Guess: <input type='text' name='guess'> 
     <input type='submit' value='submit'> 
    </form> 
</body> 

我在做什么错在这里?

回答

2

我现在可以看到2个代码错误。首先,你的猜测号码以字符串形式出现。为了将它与会话的猜测进行适当的比较,您应该将其转换为一个整数,首先是:int(request.form["guess"])。其次,它看起来像我比较运算符的“太低”检查需要翻转。现在,当猜测数字大于会话号码时,它将返回“太低”。你可能想要相反的。

总之,你的第一个elif应该是这样的:

elif int(request.form['guess']) < session['number']: 
    answer = "Too Low" 
    return render_template("index.html", answer=answer) 
+0

得到它的工作。谢谢!! –

+0

@RickyRathbone很高兴听到它的工作!你能否把答案标记为正确?这样它可以帮助其他类似问题的人。 – BenWurth