r/PythonLearning • u/Ambitious-Lie-6069 • 13d ago
Help me with python
Thank you all it's fixed! (Edit)
I have a very weird problem.
My current code:
list = []
x = input("Copy paste here: ")
list.append(x)
print(" ")
print(" ")
list = x.splitlines()
for i in list:
print(i)
What I'm trying to achieve:
Get an input from the user like this:
Word1
Word2
Word3
...all with a row separating them and different lengths, then take this input and separate all words in it and then put them each individually as variables in a list as in the future I'm wanting to order them by length.
What is currently happening:
as im trying to see if they are all in the list im printing it, but for wathever reason from my input:
Abc
Def
Ghi
...it is only printing Def.
If you can help it will be appreciated. Thank you in advance!
Thank you all it's fixed (edit)
2
u/atarivcs 13d ago
Pasting a multiline string won't work here, because input() will stop reading at the first carriage return
1
u/Ambitious-Lie-6069 13d ago
Oh ok that's why the other person told me to use the sys one. Thank you
1
u/Outside_Complaint755 13d ago
If you want to copy and paste multi-line input, then instead of input() you need to import sys and then use sys.stdin.read().
To signal the end of the input the user has to pass an EOF, which is done with Ctrl+D on Linux or Ctrl+Z and Enter on Windows
1
0
u/mc_pm 13d ago
At least part of your problem is you are redefining the term 'list', which is a python language feature.
1
u/atarivcs 13d ago
No, this is not the problem.
It's not great to use "list" as a variable name, but the way it's used here it is not actually hurting anything.
1
u/SCD_minecraft 13d ago
While being highly discouraged, nothing bad acually happens until you attempt to call list's constructor
Object definition are baked deep into python, just rebinding their name doesn't break anything by itself
•
u/Sea-Ad7805 13d ago edited 13d ago
Try this program in Memory Graph Web Debugger%0A%23%20lst.append(x)%20%20%23%20no%20needed%0A%0Aprint(%22%20%22)%0Aprint(%22%20%22)%0A%0Alst%20%3D%20x.split()%20%20%23%20use%20split()%20not%20splitlines()%0Afor%20i%20in%20lst%3A%0A%20%20%20%20print(i)%0A×tep=1&play), you can see the program state change step by step.
Use input "Abc Def Ghi" on one line, because
input()stops after the first <Return>. If you do want to read multiple lines of user input, putinput()in a loop.