Python Forum
Outputs missing - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: Outputs missing (/thread-24389.html)



Outputs missing - SamAnw - Feb-12-2020

Hello,

I've been working on a python program that reads a file instead of inputs. However, there seems to be a problem in my program and it won't read after the first line of the file, so I'm only getting part of the outputs.

Here's the file:

Prob.06.in

WORKING WORKING WORKING WORKING
WORKING BROKEN BROKEN WORKING
BROKEN BROKEN BROKEN BROKEN



And here's the code:
from math import *
txt = "Prob06.in.txt"
file = open(txt,"r")
a=file.read()
state = a.split()
pos = "W"
neg = "B"
i=0
n=0
while i < 4:
    if state[i].startswith(neg):
        n += 8/(2**i)
    elif not state[i].startswith(pos):
         print("invalid entry 1")
    i+=1
LED = ('off','red','green','blue')
LED2= int(n % 4)
LED1= int((n - LED2)/4)
print(LED[LED1], LED[LED2])
The output of this program should be:

off off

red green

blue blue



But the output I'm getting is:

off off



Thankyou in advance!


RE: Outputs missing - michael1789 - Feb-12-2020

(Feb-12-2020, 04:50 AM)SamAnw Wrote: print(LED[LED1], LED[LED2])

Your only printing two things. Maybe you mean to indent things so that it's all in your loop?


RE: Outputs missing - Larz60+ - Feb-12-2020

a=file.read()
This reads the entire file into A
so after line 4, add
for line in a:
    state = line.strip().split()
    ...
remove current line 5
also use more meaningful names, single letter names will get you in trouble quickly because you won't be able to remember what's what.


RE: Outputs missing - SamAnw - Feb-12-2020

(Feb-12-2020, 06:21 AM)michael1789 Wrote:
(Feb-12-2020, 04:50 AM)SamAnw Wrote: print(LED[LED1], LED[LED2])

Your only printing two things. Maybe you mean to indent things so that it's all in your loop?

Yes basically that's it, but I dont know how to do that :/

(Feb-12-2020, 09:29 AM)Larz60+ Wrote: a=file.read()
This reads the entire file into A
so after line 4, add
for line in a:
state = line.strip().split()
...

remove current line 5
also use more meaningful names, single letter names will get you in trouble quickly because you won't be able to remember what's what.

Hey!
So I changed my code according to your suggestions and this is what the code looks like:
from math import *
txt = "Prob06.in.txt"
file = open(txt,"r")
a=file.read()
for line in a:
    state=line.strip().split()
pos = "W"
neg = "B"
i=0
n=0
while i < 4:
    if state[i].startswith(neg):
        n += 8/(2**i)
    elif not state[i].startswith(pos):
         print("invalid entry 1")
    i+=1
LED = ('off','red','green','blue')
LED2= int(n % 4)
LED1= int((n - LED2)/4)
print(LED[LED1], LED[LED2])
And now this is the output I'm getting:
invalid entry 1
Traceback (most recent call last):
File "C:\Users\admin\Desktop\Prelim_Prog\Problem_06\Prob06.in.py", line 12, in <module>
if state[i].startswith(neg):
IndexError: list index out of range


RE: Outputs missing - adetheheat - Feb-12-2020

you only have item in state. In addition I think the word 'file' is reserved (I'm not sure though).
You should have something like this:

file = open(txt,"r")
a=file.read()
state = []
for line in a:
    state.append([line.strip().split()])
or if that doesn't work:
   state.append(line.strip().split())