' ' 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", если его нет.