Python prints unwanted extra newline

2019-08-27 07:57发布

问题:

Why is that Python always prints an extra newline when I run the code below? I tried to re-write the code to eliminate any unintended blank space but it still prints out an extra new line. Anyone knows why? Thanks.

def main():
    names_in()                          #This function import the file and read all the content and put the content into a list. 

    print_names(names_in)        # Before the names are sorted.

def names_in():
    infile = open('names.txt','r')
    names_list = []                 #empty list.
    names = infile.readline()   # read contents.

    #loop for continue to read.
    while names != '':
        names = infile.readline()       #continue to the next name.
        names = names.rstrip('\n')    #return a copy of the string which all \n has been stripped from the end of the string.
        names_list.append(names)    #write names in the file into a list.
    infile.close()

    return names_list                     #return the list back to the function.



def print_names(names_in):        #This function will print out the names in the list one per line, single-spaced.
    for item in names_in():
        print(item)


main()

This in my input file:

Riggs, Jerry
Stone, Ruby
Wood, Holly
Dover, Ilene
Funt, Ella
Storm, Wayne
Lowe, Lyle
Free, Bjorn
Caine, Candy
Carr, Rex
Downs, Mark
Twain, Lionel
Thorn, Rose
Shore, Rocky
Bush, Rose
Waters, Muddy
Graves, Doug
Stone, Roxanne
Rivers, Wade

回答1:

The reason that your code prints an extra newline is because in the last iteration of the names_in function, the variable names is ``, which gets appended to the end of names_list, causing the print_names function to run print '' at the end, which prints an extra newline.