ここで私の質問は、4つのURLを印刷して何が期待されているかを示していますが、whileをwhile url == True:
に設定すると、1つのURLのみが印刷されるため、そうではありません!=なしは等しい==真== Trueと!= Noneの違いは何ですか?
-1
A
答えて
1
この種のセンチネルを返すのは、最初は非常に良いデザインとはみなされないことに注意してください。 get_next_target
は、ターゲットを返すべきであり、それ以外は何もしないでください(今のところ、次のターゲットを見つけるために必要な状態は無視されます)。エラーが発生した場合は、例外を発生させます。この場合、別のターゲットの不足は実際にはエラーではありませんが、わかるように、それは反復の終了を知らせます。すでに例外があります:StopIteration
。
def get_next_target(page):
start_link = page.find('<a href="')
if start_link == -1:
raise StopIteration
end_link = page.find('">', start_link)
url = page[start_link + 9 : end_link]
return url, end_link
def print_all_links(page):
while True:
try:
url, endpos = get_next_target(page)
print url
page = page[endpos:]
except StopIteration:
break
我々はページを解析するために必要な状態を公開しないこと、しかし、特定のページからのリンクを戻すために、より良いイテレータを書くことができます。
def get_targets(page):
while True:
start_link = page.find('<a href="')
if start_link == -1:
break
end_link = page.find('">', start_link)
yield page[start_link + 9:end_link]
def print_all_links(page):
for url in get_targets(page):
print url
0
どうすればurl == "http://stackoverflow.com"
?その後、それはTrue
と等しくないので、中断します。しかしはNone
と等しくないなので、それをチェックするとループが続きます。
0
あなたの代わりに、必要に応じて、それがうまくいく
if url:
または
if bool(url) == True:
を言っている場合。 url
はTrueのみです。最初の反復後は文字列で、"anystring" != True
ですが、bool("anystring")
で、 "anystring"は空の文字列ではなく、Trueです。
関連する問題
- 1. floatとnoneとclearの違いは何ですか?
- 2. $ resourceキャッシング:キャッシュとの違いは何ですか?trueとキャッシュ:obj
- 3. Python文法のTrueとFalseの違いは何ですか?
- 4. FileStream.Flush()とFileStream.Flush(True)の違いは何ですか?
- 5. <deployment retail = "true">とdebug = "false"の違いは何ですか?
- 6. while(true)とwhile(new Scanner(System.in).hasNext)の違いは何ですか?
- 7. ng-click = "check = true"とng-click = "alterCheck()"の違いは何ですか?
- 8. ConfigureAwait(false)とConfigureAwait(true)の違いは何ですか?
- 9. to.equal(true)とto.be.trueの違いは何ですか?
- 10. js-data:DS "reapAction"設定オプションの "none"と "inject"の違いは何ですか?
- 11. async:falseとasyncの違いは何ですか:jquery ajaxでtrue? jqueryのAJAXで
- 12. "!= true"と "== false"の違いは?
- 13. SMSメッセージへの返信:「compose_mode」= trueとfalseの違いは何ですか?
- 14. なぜ 'None'でない場合はTrueを返しますか?
- 15. (ev = none)引数は何ですか?
- 16. RxSwiftのasObserver、asObservableとnoneの違い
- 17. "$ -w = true"とは何ですか?
- 18. $と$$の違いは何ですか?
- 19. `##`と `hashCode`の違いは何ですか?
- 20. typedefとの違いは何ですか?
- 21. NodeJS:「./ ..」と「..」の違いは何ですか?
- 22. {}())と{})の違いは何ですか?
- 23. `&`と `ref`の違いは何ですか?
- 24. `==`と `is`の違いは何ですか?
- 25. difftimeと ' - 'の違いは何ですか?
- 26. #{} $ {}と%{}の違いは何ですか?
- 27. ⊕と+の違いは何ですか?
- 28. アペンダーと〜の違いは何ですか?
- 29. "./"と "../"の違いは何ですか?
- 30. "$^N"と "$ +"の違いは何ですか?
'偽!= NONE' –
' >>>偽!= NONE' ---> 'true'を – miradulo
あなたは文字列に' 'get_next_target(ページ)でURLを上書きしている、それはないですequal 'True' –