Toastlotl
Toastlotl

Reputation: 11

How to add input in the middle of a string?

I'm very new to programming, only started learning python ~4 days ago and I'm having trouble figuring out how to print a user input as a string, in between other strings on the same line. Being so new to programming, I feel like the answer is staring me right in the face but I don't have the tools or the knowledge to figure it out lol.

what I'm trying to do is:

Wow (PlayerName) that's cool

so far what I have is:

name = input("Name? ")
   
print("Wow") (print(name)) (print("that's cool"))

python came back with an error saying object 'NoneType' is not callable, so instead i tried to write it as a function and call that instead:

name = input("Name? ")

def name_call():
    print(name)

print("Wow") (name_call()) (print("that's cool"))

same issue, I tried various similar things, but at this point I'm just throwing darts

I'm not 100% sure why neither of these worked, but I do know that it probably has something to do with me writing it incorrectly. I could just print the name on a new line, but I want to try and put them all on the same line if possible.

Upvotes: 1

Views: 1367

Answers (6)

Nindi
Nindi

Reputation: 85

you can try this code:

# Python3 code to demonstrate working of
# Add Phrase in middle of String
# Using split() + slicing + join()
 
# initializing string
test_str = 'Wow that\'s cool!'
 
# printing original string
print("The original string is : " + str(test_str))
 
# initializing mid string
mid_str = (input('Please input name = '))
 
# splitting string to list
temp = test_str.split()
mid_pos = len(temp) // 3
 
# joining and construction using single line
res = ' '.join(temp[:mid_pos] + [mid_str] + temp[mid_pos:])
 
# printing result
print("Formulated String : " + str(res))

The result will be like this:

The original string is : Wow that's cool!
Please input name = Alice
Formulated String : Wow Alice that's cool!

you can input any name to the program.

Upvotes: 4

Jason Alan Smith
Jason Alan Smith

Reputation: 97

As others have said, I think you're looking for string interpolation. As of Python 3.6 we have f-strings.

name = input("Name? ")
print(f"Wow {name} that's cool")

https://www.programiz.com/python-programming/string-interpolation

Upvotes: 3

Meer Modi
Meer Modi

Reputation: 11

x = str(input('Name: '))
print('user entered {} as their name'.format(x))

Upvotes: 0

Sheldon
Sheldon

Reputation: 4675

You may use the format method to insert name into the string's placeholder {}:

print("Wow {} that's cool".format(str(name)))

Upvotes: 0

Ricardo
Ricardo

Reputation: 691

val = 'name'
print(f"Wow {val} that's cool.")

Btw, if you want name_call() to play a role, the following code also works

def name_call(): 
    return ('name')

print(f"Wow {name_call()} that's cool.")

Upvotes: 0

Lime
Lime

Reputation: 372

Your print's need to be on new lines.

name = input("Name? ")

print("Wow")
print(name)
print("that's cool")

Python thinks you are trying to call the result of the print function (which returns None) as a function of its own.

            |
            V you are accidentally calling the return value here
print("Wow")(print(name))

Upvotes: 0

Related Questions