Помещение переменной в строку (цитата)

Помощь Я не могу заставить это работать, я пытаюсь поместить переменную age в строку, но она не будет загружать переменную должным образом.

Вот мой код:

import random
import sys
import os


age = 17
print(age)
quote = "You are" age "years old!"

Выдает эту ошибку:

File "C:/Users/----/PycharmProjects/hellophyton/hellophyton.py", line 9
        quote = "You are" age "years old!"
                        ^
SyntaxError: invalid syntax

Process finished with exit code 1

4 ответа

Решение

Вы должны использовать форматировщик строки здесь или конкатенацию. Для объединения вы должны будете преобразовать int к string, Вы не можете объединить целые и строки вместе.

Это вызовет следующую ошибку, если вы попытаетесь:

TypeError: unsupported operand type(s) for +: 'int' and 'str'

Форматирование:

quote = "You are %d years old" % age
quote = "You are {} years old".format(age)

Конкатенация (в одну сторону)

quote = "You are " + str(age) + " years old" 

Редактировать: Как отмечено JF Sebastian в комментариях, мы также можем сделать следующее

В Python 3.6:

f"You are {age} years old"

Более ранние версии Python:

"You are {age} years old".format(**vars())

Это один из способов сделать это:

>>> age = 17
>>> quote = "You are %d years old!" % age
>>> quote
'You are 17 years old!'
>>> 

Вам нужно использовать + знак, чтобы вставить его в строку, как это:

quote = "You are " + age + " years old!"

Вы можете прочитать больше о других способах сделать это на строковой документации Python.

Что ж, пожалуйста, проверьте следующий код, который был задан кем-то еще.

      event_type_id = 26420387

### this is original post, need to add variable to 'eventTypeIds'
##events_req_format = '{' \
##             '"jsonrpc": "2.0", ' \
##             '"method": "SportsAPING/v1.0/listEvents", ' \
##             '"params": {"filter": {"eventTypeIds": ["26420387"]},' \
##             '"marketStartTime": {"from": "2022-03-12T00:00:00Z","to": "2022-03-13T23:59:00Z"}}},' \
##             '"id": 1' \
##             '}'

# added formatted string with variable event_type_id, used prefix f
events_req_format = '{' \
             '"jsonrpc": "2.0", ' \
             '"method": "SportsAPING/v1.0/listEvents", ' \
             '"params": {"filter": {"eventTypeIds": ["'\
             f'{event_type_id}'\
             '"]},' \
             '"marketStartTime": {"from": "2022-03-12T00:00:00Z","to": "2022-03-13T23:59:00Z"}}},' \
             '"id": 1' \
             '}'

Str в sing или двойных кавычках представляет собой строку, состоящую из одной строки. Так что '\' просто создайте новую строку для удобства. И все строки, заключенные в одинарные кавычки, составляют строку str, events_req_format.
Я просто изменил строку {"eventTypeIds": ["26420387"]},
как видите, я добавил форматированную строку с префиксом f для переменной.

Другие вопросы по тегам