2015-02-25 4 views
-2

Это то, что я хочу сделать ПримерВстраивание условия в строке

Dogwood = TRUE 
Wetdog = 'wet dog' 
drydog = 'dog' 
s = 'I see a ', Wetdog if dog wet else drydog 
print(s) 
# which does not work...is there a way to make it work? 

#However this works 
print('I see a ', Wetdog if dogwet else drydog) 

Я хочу то же самое, чтобы работать, но в переменной строки, которые могут быть распечатаны при необходимости.

+0

где «собака влажная», исходящая от или «собачьей»? Что такое 'Dogwood = TRUE'? –

ответ

2

Чтобы присвоить содержимое условного выражения строке, вы можете использовать формат, показанный ниже. Дополнительную информацию об этом можно найти здесь Conditional Expression

Я не вижу dog или wet в вашем коде выше. Если предположить, что они существуют, и что они что-то вроде этого ...

dog = False #initial state of the dog 
wet = True #state of a wet dog 

Тогда приведенный ниже код будет работать нормально

s = 'I see a {}'.format(Wetdog) if dog == wet else 'I see a {}'.format(drydog) 
+0

почему downvotes ?, этот код работает просто отлично –

+0

Вы получили мой downvote для ответа только на код. – Tritium21

+0

Я думаю, что иногда код может быть только в порядке, потому что, если его просто ошибка формата, код сам объясняет ... никогда, я обновил свой ответ –

0

Вы можете использовать конкатенацию (оператор +):

s = 'I see a ' + (Wetdog if dogwet else drydog) 
+0

Кто такой «мы», kemosabe? Лично я призываю людей использовать конкатенацию строк, когда они хотят конкатенировать строки - почему вы думаете, что это в Python ** для **? –

+0

Я бы больше беспокоился о том, что 'dogwet', похоже, не существует нигде в коде –

+0

@PadraicCunningham, конечно, OP случайно неверно назвал эту переменную как таинственную« Dogwood », а затем также опечатал ее как« собака влажная » что вызовет «SyntaxError» из-за рассеянного пробела. Оба вопроса довольно очевидны и точно так же явно не связаны с «условиями внедрения внутри строки». –

0

Что вы можете сделать, это сделать что-то вроде этого:

Wetdog = 'wet dog' 
drydog = 'dog' 

dogiswet = True; #can be True or False depending on what you want it to be 
dogisdry = True; #can be True or False depending on what you want it to be 

if dogiswet: 
    print "I see a %s." % Wetdog 

if dogisdry: 
    print "I see a %s." % drydog 
Смежные вопросы