Подтвердить что ты не робот

Проверьте, находится ли пробел в строке

' ' in word == True

Я пишу программу, которая проверяет, является ли строка одним словом. Почему это не работает, и есть ли лучший способ проверить, нет ли в строке пробелов/одно слово.

4b9b3361

Ответ 1

== имеет приоритет над 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

Ответ 2

Напишите if " " in word: вместо if " " in word == True:.

Пояснение:

  • В Python, например, a < b < c эквивалентно (a < b) and (b < c).
  • То же самое верно для любой цепи операторов сравнения, которые включают in!
  • Поэтому ' ' in w == True эквивалентно (' ' in w) and (w == True), который не является тем, что вы хотите.

Ответ 3

Существует много способов сделать это:

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

Чтобы убедиться, что он соответствует любому типу пространства, вы можете использовать re module:

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

Ответ 4

Вы можете попробовать это, и если он найдет какое-либо пространство, он вернет позицию, в которой находится первое место.

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

Ответ 5

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, чтобы код выглядел как код.

Ответ 6

Вы можете сказать word.strip(" "), чтобы удалить все ведущие/конечные пробелы из строки - вы должны сделать это перед оператором if. Таким образом, если кто-то войдет в ввод, например " test ", ваша программа все равно будет работать.

Тем не менее, if " " in word: определит, содержит ли строка любые пробелы. Если это не работает, можете ли вы предоставить дополнительную информацию?

Ответ 7

Используйте это:

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

Ответ 8

# 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("")

Ответ 9

Вы можете использовать модуль 're' в Python 3.
Если вы действительно это делаете, используйте это:

re.search('\s', word)

Это должно вернуть либо "true", если есть совпадение, либо "false", если его нет.