4

Sometimes when I use the print function, parentheses and quotation marks appear in the output. I'm using Python 3.4 and writing the code in Sublime Text on a mac.

Here's an example

Input:

a=2
print("a",a)

Output:

('a', 2)

I'd like to show only a and 2.

Thanks in advance!

Noa
  • 111
  • 1
  • 2
  • 6
  • This is Py2 output ... Mac is cheating on you – Bhargav Rao Jan 23 '15 at 18:38
  • After installing python3 using the default installer from python.org, you will have two versions of python on your system: the pre-installed python 2 which is named python in your path and python 3 that have the name python3 in your path. Python 3 can be executed by typing python3 in the terminal and python 2 launches when simply typing python – richie Feb 11 '15 at 10:23

3 Answers3

4

You appear to be using Python 2.

a = 2
print("a %i" % a)

should give you the results you're looking for. Or, using the newer str.format() method:

print("a {}".format(a))

In Python 3, your statement print("a",a) will work as expected. Check your build system in Sublime to make sure you're calling python3 instead of python. Run this code to see what version is actually being used:

import sys

print(sys.version)

To create a Python 3 build system, open a new file with JSON syntax and the following contents:

{
    "cmd": ["python3", "-u", "$file"],
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python"
}

Save the file as Packages/User/Python3.sublime-build where Packages is the folder opened when you select Sublime Text -> Preferences -> Browse Packages.... You can now select Tools -> Build System -> Python3 and, assuming python3 is in your PATH, you should build with the correct version.

If the build fails with an error that it can't find python3, open Terminal and type

which python3

to see where it's installed. Copy the entire path and put it in the build system. For example, if which python3 returns /usr/local/bin/python3, then the "cmd" statement in your .sublime-build file should be:

"cmd": ["/usr/local/bin/python3", "-u", "$file"],
MattDMo
  • 100,794
  • 21
  • 241
  • 231
  • Not to contradict your point. The `print("a",a)` statement is correct but in py2 the O/p is a tuple. It has to work in Py3 – Bhargav Rao Jan 23 '15 at 18:47
3

Are you sure you are executing it on Python 3 interpreter? In Python 2 print is an statment so it takes no parentheses

print ("a", 2) // parentheses are interpreted as a tuple constructor
>>> ('a', 2)

is the same as

print tuple(["a",2])
>>> ('a', 2)

or in Python 3:

print( ("a",2) )
>>> ('a', 2)
Daniel
  • 645
  • 7
  • 11
0

I think you are using python 2. In python 2 you don't need parentheses and directly write code as below

print "a", a