2010-07-21 17 views
18
' ' in word == True 

मैं एक प्रोग्राम लिख रहा हूं जो जांचता है कि स्ट्रिंग एक शब्द है या नहीं। है आवश्यक नहीं सही है या गलत के खिलाफ तुलना - - क्यों यह काम नहीं करता है और वहाँ अगर एक स्ट्रिंग कोई रिक्त स्थान की जांच के लिए किसी भी बेहतर तरीका है/एक शब्द है ..जांचें कि क्या स्ट्रिंग

+0

आपका क्या मतलब है कि यह काम नहीं करता है? क्या आपको वाक्यविन्यास त्रुटि मिलती है? आप सब पर कोई त्रुटियाँ मिलता है? – SilentGhost

+0

इसके अलावा, अपनी टिप्पणी में कोड पेस्ट करना ठीक है, बस सुनिश्चित करें कि आप इसे प्रारूपित करते हैं। –

+2

* सत्य के लिए परीक्षण करने के लिए कभी भी * अभिव्यक्ति == True' का उपयोग न करें। बस 'अभिव्यक्ति' का प्रयोग करें! –

उत्तर

44

==in से अधिक प्राथमिकता लेता है, इसलिए आप वास्तव में word == True का परीक्षण कर रहे हैं।

>>> w = 'ab c' 
>>> ' ' in w == True 
1: False 
>>> (' ' in w) == True 
2: True 

लेकिन आपको == True की आवश्यकता नहीं है। if की आवश्यकता है [कुछ जो सत्य या गलत के लिए evalutes] और ' ' in word सच या गलत के लिए evalute होगा। तो, if ' ' in word: ... बस ठीक है।

+2

यह सभी प्रकार की रिक्त स्थान से मेल नहीं खाएगा: \ n, \ r, '', ... अगर उन्हें उनसे मिलान करने की आवश्यकता है, तो मिलान विधि के साथ, पुनः मॉड्यूल का उपयोग करना बेहतर है। यह एक बेहतर टोकननाइज़र करेगा। –

+2

प्रोग्रामिंग पालतू peeve: '... == सही' या' ...! = झूठा', या इसके किसी भी संस्करण। – Stephen

+2

जुक्का सुमेला की व्याख्या मेरे रास्ते से थोड़ा और सही है। मेरी व्याख्या के अनुसार, आप 'word == True' फिर 'True' में परीक्षण करेंगे, जो समझ में नहीं आता है। –

0
word = ' ' 
while True: 
    if ' ' in word: 
     word = raw_input("Please enter a single word: ") 
    else: 
     print "Thanks" 
     break 

यह और अधिक मुहावरेदार अजगर है बस अभिव्यक्ति ' ' in word द्वारा दिए गए मान का उपयोग करें।

इसके अलावा, आपको कोड के इतने छोटे स्निपेट के लिए पेस्टबिन का उपयोग करने की आवश्यकता नहीं है - बस कोड को अपनी पोस्ट में कॉपी करें और कोड को कोड जैसा दिखने के लिए छोटे 1s और 0s बटन का उपयोग करें।

0

स्ट्रिंग से किसी भी अग्रणी/पीछे की जगहों को हटाने के लिए आप word.strip(" ") कह सकते हैं - आपको अपने if कथन से पहले ऐसा करना चाहिए। इस तरह अगर कोई " test " जैसे इनपुट में प्रवेश करता है तो आपका प्रोग्राम अभी भी काम करेगा।

जिसके अनुसार, if " " in word: निर्धारित करता है कि स्ट्रिंग किसी भी रिक्त स्थान शामिल हैं। यदि यह काम नहीं कर रहा है, तो क्या आप अधिक जानकारी प्रदान कर सकते हैं?

14

के बजाय if " " in word: लिखें।

स्पष्टीकरण:

  • अजगर, उदाहरण के लिए a < b < c(a < b) and (b < c) के बराबर है।
  • तुलनात्मक ऑपरेटरों की किसी श्रृंखला के लिए समान है, जिसमें in शामिल है!
  • इसलिए ' ' in w == True(' ' in w) and (w == True) के बराबर है जो नहीं है जो आप चाहते हैं।
+1

वाह। मुझे पता था कि '<'और' ==' ने आपके द्वारा वर्णित तरीके से काम किया है, लेकिन मुझे' इन 'भी नहीं पता था। मैंने उन्हें संभाला था कि उन्हें 'ए (बी == सी) 'या' (ए में बी) == सी' के रूप में देखा जाएगा। यह देखने के लिए कि वास्तव में जुक्का कहते हैं कि इसका अर्थ है, आप 'एबीसी' == 'एबीसी' में 'ए' आज़मा सकते हैं। यह 'सही' है, लेकिन यह 'गलत' होगा यदि इसका सुझाव मैंने सुझाए गए तरीकों में से किसी एक तरीके से किया था। – ArtOfWarfare

7

तरीके ऐसा करने का एक बहुत कुछ कर रहे हैं:

import re 
if re.search(r"\s", your_string): 
    print "several words" 
0

उपयोग इस:

t = s.split(" ") 
if len(t) > 1: 
    print "several tokens" 

यकीन है कि यह अंतरिक्ष के हर तरह से मेल खाता है, तो आप फिर से मॉड्यूल का उपयोग कर सकते हैं होना करने के लिए

word = raw_input("Please enter a single word : ") 
while True: 
    if " " in word: 
     word = raw_input("Please enter a single word : ") 
    else: 
     print "Thanks" 
     break 
1

आप इसे आजमा सकते हैं, और यदि उसे कोई स्थान मिलेगा तो यह स्थिति वापस कर देगा जहां पहली जगह है।

if mystring.find(' ') != -1: 
    print True 
else: 
    print False 
+0

'mystring.find (' ')! = -1' ** ** बूलियन है। – SilentGhost

+0

आईई, इसे 'mystring.find (' ') प्रिंट करने के लिए छोटा किया जा सकता है! = -1' –

संबंधित मुद्दे