Tim
Tim

Reputation: 163

Putting a variable into a string (quote)

Help I can't get this to work, I am trying to put the variable age into the string but it won't load the variable properly.

Here is my code:

import random
import sys
import os


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

Gives this error:

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

Process finished with exit code 1

Upvotes: 16

Views: 67166

Answers (4)

hochae
hochae

Reputation: 109

Well, please check following code which was asked someone else again.

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 quoted with sing or double quotation is a single line string. So '\' is just make a new line for convenience. And the all the strings quoted by single quotation are making a str, events_req_format.
I just changed the string {"eventTypeIds": ["26420387"]},'
As you can see, I added formatted string with prefix f for the variable.

Upvotes: 0

Pythonista
Pythonista

Reputation: 11615

You should use a string formatter here, or concatenation. For concatenation you'll have to convert an int to a string. You can't concatenate ints and strings together.

This will raise the following error should you try:

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

Formatting:

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

Concatenation (one way)

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

Edit: As noted by J.F. Sebastian in the comment(s) we can also do the following

In Python 3.6:

f"You are {age} years old"

Earlier versions of Python:

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

Upvotes: 27

gr1zzly be4r
gr1zzly be4r

Reputation: 2152

You need to use the + sign to insert it into the string like this:

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

You can read more about other ways of doing this on Python's string documentation.

Upvotes: 0

Joe T. Boka
Joe T. Boka

Reputation: 6589

This is one way to do it:

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

Upvotes: 1

Related Questions