Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Python Introducing Lists Using Lists Continental

Commas or plus signs in print

Both of the for ... in loops return the same output, but the test only accepts the plus sign version.

Why is that the case? What is the difference between using a comma or a plus sign other than the fact that the comma has a "builit-in" empty character in it?

continents.py
continents = [
    'Asia',
    'South America',
    'North America',
    'Africa',
    'Europe',
    'Antarctica',
    'Australia',
]
# Your code here
for continent in continents:
    print("* " + continent)

for continent in continents:
    print("*", continent)

2 Answers

Steven Parker
Steven Parker
231,198 Points

There is no difference in regards to the final output. Either of your loops will pass the challenge by itself.

But you can only have one of them, pick one and remove the other.

Sean T. Unwin
Sean T. Unwin
28,690 Points

The Challenge is verifying that there is a newline('\n') at the end of each print() statement.

Using the + for String concatenation, automatically adds a newline to each output of print(), which is to say when there is only a single argument for print().

print() using commas, which is to say to pass multiple arguments, does not do this for us. Luckily there are two (2) special parameters with names that we can pass here: 1. sep for separator, such as a hyphen between strings, 2. end for a suffix to append to the end of the output.

Another point of interest is that with the comma usage, every comma-separated string has a default to add a space between the comma-separated strings, unless specified otherwise with the sep parameter.

To get the comma usage to work correctly, we need to use the end parameter and set it to a newline.

e.g.

print("*", continent, end='\n')
Steven Parker
Steven Parker
231,198 Points

By default, the "print" statement adds a newline at the end whether you give it one argument or several., so:

print("*", continent, end='\n')  # these lines both do exactly the same thing
print("*", continent)
Sean T. Unwin
Sean T. Unwin
28,690 Points

@stevenparker Huh, when I initially tried the Challenge failed, but I just tried again and it passed.

My mistake then regarding the newline.