2017-10-12 15 views
1

フラスコ内でこのコードで同じ問題が発生し続けています。私は数を推測する試合、1-100をやっていて、なんらかの理由で「あまりにも低い」と答えています。フラスコ内の数字推測ゲーム

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"]))。

第2に、「低すぎる」チェックの比較演算子を反転する必要があるように見えます。今のところ、推測された数がセッションの数よりも大きい場合、「あまりにも低い」を返すでしょう。あなたはおそらくその反対を望むでしょう。結論として

、あなたの最初のelifは次のようになります。

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

は、それが動作するようになりました。ありがとうございました!! –

+0

@RickyRathboneそれが働いていることを聞いてうれしい!答えを正しいとマークしてください。そうすれば、同様の問題を持つ他の人を助けることができます。 – BenWurth