2015-11-20 116 views
1

所以,基本上,這是我的代碼:Python的檢查用戶輸入

import random 
import os 

answer = input('What is the problem with your mobile phone? Please do not enter more than one sentence.') 
print('The program has detected that you have entered a query regarding: ' 
if 'wet' or 'water' or 'liquid' or 'mobile' in answer: 
    print('Put your mobile phone inside of a fridge, it sounds stupid but it should work!') 

我想知道的是,比方說,如果用戶輸入關鍵字「溼」和「移動」作爲其輸入,我怎麼反饋給他們知道我的程序已經識別出他們的查詢。

因此,通過說'如果程序檢測到您輸入了一個關於以下內容的查詢:'我如何將它們的關鍵字過濾到這句話中,比如說,如果他們輸入'我的手機最近變溼了',我想要不用說:

print('The program has detected that you have entered wet') 

因爲這聽起來很蠢的IMO。

謝謝

+0

把打印語句你'if'測試裏面。實際上,你的整個if語句是無效的,需要重新編碼。 – user590028

+0

是的,我知道它應該是一個如果不是一個ELIF,我需要刪除進口操作系統,我只是想嘗試之前爲什麼有不需要的代碼位 – Thom9son

+0

但我想要一種方式來拉特定例如,如果有「有效輸入」列表,並且來自用戶輸入的字符串中的一些字符串與列表匹配,那麼它將打印所述字符串。 – Thom9son

回答

1

你可以做到這一點與一個元組,列表和any功能:

SEND_REPORT_TUPLE = ('wet', 'water', 'liquid', 'mobile') 
#make a list from the input 
input_list = answer.split(" ") 
#And then the use any function with comprehension list 
if any(e in SEND_REPORT_TUPLE for e in input_list): 
    print("The program has detected a query...") 
+0

@parthgudhka我認爲這是最pythonic的方式,不需要做嵌套循環... –

+0

一個問題,什麼是元組? – Thom9son

+0

@ Thom9son *元組是一系列不可變的Python對象。元組是序列,就像列表一樣。元組和列表之間的區別在於,不同於列表和元組使用圓括號,元組不能更改,而列表使用方括號。* >>在該示例中,您可以使用元組或列表。 –

2

如果我正確理解你的問題,這應該可以解決你的問題。只需將打印語句放在if條件內!很簡單,我想:)

import random 
import os 

answer = input('What is the problem with your mobile phone? Please do not enter more than one sentence.') 
if 'wet' or 'water' or 'liquid' or 'mobile' in answer: 
    print('The program has detected that you have entered a query regarding: water') # or anything else wet or whatever 
    print('Put your mobile phone inside of a fridge, it sounds stupid but it should work!') 
+0

這個工作適合你嗎? – Parth

+0

多數民衆贊成但事情,我知道該怎麼做,這很容易,但不是說有關'水'的查詢,我想知道是否有任何方式使用列表或東西從用戶句子中挑出字符串和交叉引用它們,如果有任何匹配,它使用它們從列表中打印出來。但是,如果沒有匹配,我將要這樣做,以便他們可以選擇是否向報告編號等技術人員寫報告,這隻會將一些信息寫入文件 – Thom9son

+0

是的,那很好工作,我知道只是看着它,因爲我認爲只是這樣做,但在我看來這似乎很基本 – Thom9son