我一直有在CS50的PSET 7一些麻烦/quote
。每次去到CS50理财网站,它返回:CS50 PSET7引用: 'NoneType' 错误
AttributeError: 'NoneType' object has no attribute 'startswith'
我不知道这意味着什么,也不知道如何解决它。它似乎在查找功能中自动进入'无',但我不知道为什么。如果有人能帮助我,我会非常感激!
这是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")
这是我helpers.py,这是不应该被改变:
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()
}
最后,这是我的报价。 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 %}
在未来,请包括完整的堆栈跟踪,其中包括行号和文件名,不只是错误信息。 –