2

I'm making a simple script on Python 3. I have a list of usernames, colors and numbers. Each of them separated by lines in a .txt file, like this:

Here are the contents of the files:

Contents of files

This is the code:

user = open('user.txt', 'r').readlines()
color = open('color.txt', 'r').readlines()
number = open('number.txt', 'r').readlines()

for u in user:
    for c in color:
        for n in number:
            generated = u+c+n
            print(generated)
            open('generated.txt', 'a+').write(generated)

When I run this code, I get the following output:

solvethisproblem_user
white
1
solvethisproblem_user
white
2
solvethisproblem_user
white
3
solvethisproblem_user
white
4
solvethisproblem_user
white
5
solvethisproblem_user
white
6
solvethisproblem_user
white
7
solvethisproblem_user
white
8
solvethisproblem_user
white
9
solvethisproblem_user
white
10solvethisproblem_user
black
1
solvethisproblem_user
black
2
solvethisproblem_user
black
3
solvethisproblem_user
black
4
solvethisproblem_user
black
5
solvethisproblem_user
black
6
solvethisproblem_user
black
7
solvethisproblem_user
black
8
solvethisproblem_user
black
9
solvethisproblem_user
black
10solvethisproblem_user
yellow
1
solvethisproblem_user
yellow
2
solvethisproblem_user
yellow
3
solvethisproblem_user
yellow
4
solvethisproblem_user
yellow
5
solvethisproblem_user
yellow
6
solvethisproblem_user
yellow
7
solvethisproblem_user
yellow
8
solvethisproblem_user
yellow
9
solvethisproblem_user
yellow
10solvethisproblem_user
green
1
solvethisproblem_user
green
2
solvethisproblem_user
green
3
solvethisproblem_user
green
4
solvethisproblem_user
green
5

I expected some output like this:

solvethisproblem_userwhite1
solvethisproblem_userwhite2
solvethisproblem_userwhite3
solvethisproblem_userwhite4
solvethisproblem_userwhite5
solvethisproblem_userwhite6
solvethisproblem_userwhite7
solvethisproblem_userwhite8
solvethisproblem_userwhite9
solvethisproblem_userwhite10
solvethisproblem_userblack1
solvethisproblem_userblack2
solvethisproblem_userblack3
solvethisproblem_userblack4
solvethisproblem_userblack5
solvethisproblem_userblack6
solvethisproblem_userblack7
solvethisproblem_userblack8
solvethisproblem_userblack9
solvethisproblem_userblack10
solvethisproblem_useryellow1
solvethisproblem_useryellow2
solvethisproblem_useryellow3

What am I doing wrong?

no ai please
  • 732
  • 3
  • 11
  • 24
esiquiel
  • 37
  • 6

2 Answers2

3

Simply replace

user = open('user.txt', 'r').readlines()
color = open('color.txt', 'r').readlines()
number = open('number.txt', 'r').readlines()

with

user = open('user.txt', 'r').read().splitlines()
color = open('color.txt', 'r').read().splitlines()
number = open('number.txt', 'r').read().splitlines()

and replace generated = u + c + n with generated = u + c + n + "\n".

The str.splitlines() method removes the \n characters that would cause the newlines.

But do note that is is better practice to use the with keyword to open your files:

with open('user.txt') as u, open('color.txt') as c, open('number.txt') as n:
    user = u.read().splitlines()
    color = c.read().splitlines()
    number = n.read().splitlines()
Red
  • 26,798
  • 7
  • 36
  • 58
1

Using str.rstrip gets rid of the newline character and any whitespace at the end of the string:

generated = ''.join(map(str.rstrip, [u, c, n]))
Jab
  • 26,853
  • 21
  • 75
  • 114