Ich habe einige Probleme mit /quote
in PSET 7 von CS50. Jedes Mal, wenn ich in die CS50 Finanz Website gehen, gibt sie:CS50 PSET7 'NoneType' Fehler
AttributeError: 'NoneType' object has no attribute 'startswith'
Ich bin nicht sicher, was es bedeutet, noch wie es zu beheben. Es scheint in der Lookup-Funktion automatisch zu "None" zu gehen, aber ich bin mir nicht sicher warum. Wenn mir jemand helfen könnte, würde ich es sehr schätzen!
Das ist mein Zitat Teil application.py:
@app.route("/quote", methods=["GET", "POST"])
@login_required
def quote():
"""Get stock quote."""
if request.method == "POST":
symbol = request.args.get("symbol")
quote = lookup(symbol)
return render_template("quoted.html", name=quote)
else:
return render_template("quote.html")
Das ist mein helpers.py, die nicht sollte geändert werden:
def lookup(symbol):
"""Look up quote for symbol."""
# reject symbol if it starts with caret
if symbol.startswith("^"):
return None
# reject symbol if it contains comma
if "," in symbol:
return None
# query Yahoo for quote
# http://stackoverflow.com/a/21351911
try:
url = "http://download.finance.yahoo.com/d/quotes.csv?f=snl1&s={}".format(symbol)
webpage = urllib.request.urlopen(url)
datareader = csv.reader(webpage.read().decode("utf-8").splitlines())
row = next(datareader)
except:
return None
# ensure stock exists
try:
price = float(row[2])
except:
return None
# return stock's name (as a str), price (as a float), and (uppercased) symbol (as a str)
return {
"name": row[1],
"price": price,
"symbol": row[0].upper()
}
Schließlich, dies ist mein Angebot. html:
{% extends "layout.html" %}
{% block title %}
Quote
{% endblock %}
{% block main %}
<form action="{{ url_for('quote') }}" method="post">
<fieldset>
<div class="form-group">
<input autocomplete="off" autofocus class="form-control" name="symbol" placeholder="symbol" type="symbol"text"/>
</div>
<div class="form-group">
<button class="btn btn-default" type="submit">Search for Quote</button>
</div>
</fieldset>
</form>
{% endblock %}
Fügen Sie in Zukunft bitte die vollständige Stapelüberwachung ein, einschließlich Zeilennummern und Dateinamen, nicht nur die Fehlermeldung. –