2012-06-17 76 views
0

我試圖打印出真如果有這樣的字母/單詞和假如果沒有,但無論我鍵入,它總是如此。Python的真假,並在

phr1= raw_input("Enter a phrase or paragraph, and this will check if you have those letters/word in ur paragraph: ") 
print "You entered: "+phr1 
phr2= raw_input("Check if a word/letter exists in the paragraph: ") 
phr2 in phr1 
if True: 
    print "true" 
elif False: 
    print "false" 
input("Press enter") 

當我運行代碼:

Enter a phrase or paragraph, and this will check if you have those letters/word in ur paragraph: 
hello world 
You entered: hello world 
Check if a word/letter exists in the paragraph: g 
true 
Press enter 

這個可能,G這麼想的是如何存在的,爲什麼它說出來呢?

+1

你永遠不會知道phr1中phr2的值並將它存儲在任何地方,所以下面的語句不知道檢查是否通過了 – nbrooks

回答

6

檢查if True將總是通過,因爲布爾表達式被評估僅僅是True。將您的整個if/else更改爲print (phr2 in phr1)

如果第二個短語位於第一個短語中,則將打印「True」,否則將打印爲「False」。要使其成爲小寫(無論出於何種原因),您可以使用.lower(),詳見下面的註釋。

如果您想使用原始的if/else檢查(優點是您的輸出信息比「True」/「False」更具創意),您必須修改代碼像這樣:

if phr2 in phr1: 
    print "true" 
else: 
    print "false" 
input("Press enter") 
+1

爲了匹配他現有的打印,他可能需要'print str( phr2 in phr1).lower()' – jordanm

+0

儘管這已經足夠了,但我認爲這會讓它看起來不那麼幹淨和難以理解。我會更新,讓他知道不同之處。 – nbrooks

+0

+1實際上解釋了發生了什麼,而不是隻是代碼,但將其更改爲「if phr2 in phr1:'也值得一提。 – lvc

0

嘗試這種情況:

phr1= raw_input("Enter a phrase or paragraph, and this will check if you have those letters/word in ur paragraph: ") 
print "You entered: "+phr1 
phr2= raw_input("Check if a word/letter exists in the paragraph: ") 
if phr2 in phr1: 
    print "true" 
else: 
    print "false" 
input("Press enter") 
0
phr1 = raw_input("Enter a phrase or paragraph, and this will check if you have those letters/word in ur paragraph: ") 
print "You entered: "+phr1 
phr2 = raw_input("Check if a word/letter exists in the paragraph: ") 
if phr2 in phr1: 
    print "true" 
else: 
    print "false" 
raw_input("Press enter") 
1
if <something> 

意味着正是它說:它執行代碼,如果<something>是真實的。上一行代碼完全不相關。

phr2 in phr1 

這意味着「是否phr2phr1,然後完全忽略結果」(因爲你與它無關)。

if True: 

這意味着「如果True是真的:」,它是。

如果你想測試phr2是否在phr1,那麼這就是你必須要求Python做的:if phr2 in phr1: