' ' in word == True
Я пишу программу, которая проверяет, является ли строка одним словом. Почему это не работает, и есть ли лучший способ проверить, нет ли в строке пробелов/одно слово.
' ' in word == True
Я пишу программу, которая проверяет, является ли строка одним словом. Почему это не работает, и есть ли лучший способ проверить, нет ли в строке пробелов/одно слово.
==
имеет приоритет над in
, поэтому вы на самом деле тестируете word == True
.
>>> w = 'ab c'
>>> ' ' in w == True
1: False
>>> (' ' in w) == True
2: True
Но тебе совсем не нужен == True
. if
требует [что-то, что оценивается как True или False], а ' ' in word
будет равно true или false. Итак, if ' ' in word: ...
просто отлично:
>>> ' ' in w
3: True
Напишите if " " in word:
вместо if " " in word == True:
.
Пояснение:
a < b < c
эквивалентно (a < b) and (b < c)
.in
!' ' in w == True
эквивалентно (' ' in w) and (w == True)
, который не является тем, что вы хотите.Существует много способов сделать это:
t = s.split(" ")
if len(t) > 1:
print "several tokens"
Чтобы убедиться, что он соответствует любому типу пространства, вы можете использовать re module:
import re
if re.search(r"\s", your_string):
print "several words"
Вы можете попробовать это, и если он найдет какое-либо пространство, он вернет позицию, в которой находится первое место.
if mystring.find(' ') != -1:
print True
else:
print False
word = ' '
while True:
if ' ' in word:
word = raw_input("Please enter a single word: ")
else:
print "Thanks"
break
Это более идиоматический python - сравнение с True или False не требуется - просто используйте значение, возвращаемое выражением ' ' in word
.
Кроме того, вам не нужно использовать pastebin для такого небольшого фрагмента кода - просто скопируйте код в свой пост и используйте маленькую кнопку 1s и 0s, чтобы код выглядел как код.
Вы можете сказать word.strip(" ")
, чтобы удалить все ведущие/конечные пробелы из строки - вы должны сделать это перед оператором if
. Таким образом, если кто-то войдет в ввод, например " test "
, ваша программа все равно будет работать.
Тем не менее, if " " in word:
определит, содержит ли строка любые пробелы. Если это не работает, можете ли вы предоставить дополнительную информацию?
Используйте это:
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
# The following would be a very simple solution.
print("")
string = input("Enter your string :")
noofspacesinstring = 0
for counter in string:
if counter == " ":
noofspacesinstring += 1
if noofspacesinstring == 0:
message = "Your string is a single word"
else:
message = "Your string is not a single word"
print("")
print(message)
print("")
Вы можете использовать модуль 're' в Python 3.
Если вы действительно это делаете, используйте это:
re.search('\s', word)
Это должно вернуть либо "true", если есть совпадение, либо "false", если его нет.