#python #python-3.x #if-statement #conditional-statements
#python #python-3.x #if-оператор #условные операторы
Вопрос:
Я хочу знать, нет ли текстовой строки в переменных. А затем сравнить, есть ли другая текстовая строка. Переменные results
, которые он может содержать, следующие: да, нет или? У меня есть следующий код:
internet = result1
vpn = result2
zetas = result3
values = [internet, vpn, zetas]
if any(v !== "?" for v in values):
print("No exist ?")
if any(v == "no" for v in values):
print("Exist a NO")
else:
print("Good")
особенно для того, чтобы увидеть самый элегантный способ сделать это.
Комментарии:
1. Не могли бы вы, пожалуйста, использовать несколько примеров, чтобы продемонстрировать, что вы пытаетесь сделать и каков ожидаемый результат?
2. Похоже, вы ищете elif . А также, нет
!==
. Используйте==
или!=
.
Ответ №1:
вы можете проверить value in list
или value not in list
values = (internet, vpn, zetas)
if "?" not in values:
print("No exist ?")
if "no" in values:
print("Exist a NO")
else:
print("Good")
Ответ №2:
Во-первых, предпочтительнее передавать выражения генератора вместо списков для подачи в цикл.
Во-вторых, хотя может быть много способов, хорошим способом было бы просто:
values = (internet, vpn, zetas)
if "?" in (v for v in values):
print("No exist ?")
Выражения генератора экономят память и время, что не критично для используемого скрипта, но полезно для больших объемов данных.
Комментарии:
1. вместо
(v for v in values)
вы можете использоватьvalues
—if "?" in values:
2. Правильно! Но таким образом, это предотвратит обнаружение «?» внутри строк, я подумал, что это была бы хорошая функция!
3.
(v for v in values)
иvalues
будет работать так же, поэтому нет никакой функции.4. На самом деле это неверно. Но вы можете попробовать это.
python values = ["qwerty", "asdf"] if "qwert" in values: print('1') if "qwert" in (v for v in values): print('2')
Вы увидите, что будет выведено 2.5. Мой python ничего не печатает для обеих версий. И это правильный результат, потому что в
"qwert"
списке["qwerty", "asdf"]
его нет. Если я используюif "qwerty"
в обеих версиях, то я вижу1
и2
.
Ответ №3:
Я проверил, не будет ли обнаружен запрос, который у вас был относительно вопросительного знака в кавычках, с помощью сравнения массива [x in B for x in A]
#I assigned values to your variables to test
result1 ='?'
result2="no"
result3 = "yes"
internet = result1
vpn = result2
zetas = result3
#created an array with above values in it both in string format and as variable values (appended a number just for test)
A = [internet, 'no', '?', 'yes', vpn, zetas, '8']
#array of sample strings
B = ['?', 'no', 'yes']
exists = [x in B for x in A]
print (exists)
Когда результаты сравнения были напечатаны, это дало: [True, Истинно, True, True, True, True, True, False]. Однако, если были дополнительные кавычки, например '"?"'
, сравнение для этого печаталось как False. (Элементы, заключенные в одинарные кавычки, оцениваются так же, как двойные кавычки ..)
Не стесняйтесь запускать / переназначать значения / тестировать и т.д. По своему усмотрению. (возможно, это не тот ответ, который вы ищете, но надеюсь, это поможет)