Standard Input (sys.stdin/sys.stdout)
Hur fungerar standrad input då man importerar sys och försöker använda sig av sys.stdin/sys.stdout?
Försöker skicka in en lösning till programmeringsolympiadens onlinekval (eldberget) men jag förstår inte riktigt hur inputen och outputen sker. Vill även kunna testa mitt program för sample inputs men hur läser man filen?
Så här har jag skrivit för att få input:
import sys
teststring =""
for line in sys.stdin: # Här ska den inputen in
if line == 0:
RCK = line.split()
R = int(RCK[0])
C = int(RCK[1])
K = int(RCK[2])
else:
teststring = teststring + line
-----------------
Ett exempel på input är:
5 5 0
.....
#.#.#
..#.#
.#...
...#.
------
Det jag vill är att första raden ska splittras och bli 3 variablar, kolumner C, rader R och flammor K. Alla andra rader som kommer ska konverteras till en sträng.
Varifrån sker inputen? Hur testar jag sample filens inputs?
Min output kod är:
sys.stdout.writelines(steg)
--------------
Där steg är svaret. Har endast använt mig av C = input("C:") som input och print(steg) som output sen tidigare.
Vilket OS?
Laguna skrev:Vilket OS?
MacOS Mojave
Zeshen skrev:Laguna skrev:Vilket OS?
MacOS Mojave
version 10.14
Zeshen skrev:Laguna skrev:Vilket OS?
MacOS Mojave
Jag vet inte hur du kör Python, men det sätt jag föredrar är på kommandoraden, och då kan du använda vanlig omdirigering av stdin:
python foo.py < infil
så kommer sys.stdin inuti programmet att läsa från infil.
Laguna skrev:Zeshen skrev:Laguna skrev:Vilket OS?
MacOS Mojave
Jag vet inte hur du kör Python, men det sätt jag föredrar är på kommandoraden, och då kan du använda vanlig omdirigering av stdin:
python foo.py < infil
så kommer sys.stdin inuti programmet att läsa från infil.
Jag använder Kör python genom python idle. Vad är kommandoraden och python foo.py? Om jag skriver python foo.py < infil (namnet på infilen) så kommer programmet att läsa från infilen? Men om jag skicka in mitt program hur läser du in filen då?
Här är informations sidan om inlämningen: https://pokval19.kattis.com/help/python3
Där står det:
"Input/Output
Your program should read its input from standard input and produce output on standard output. This can for instance be done using sys.stdin / sys.stdout. Anything written on standard error (sys.stderr) will be ignored. This can be used for debugging your program during development (i.e., you do not have to remove debug output before submitting if you use standard error for debug output). Of course, writing to standard error will take some runtime.
Input will always follow the input specification (so you do not need to validate the input). Your output must follow the output specification."
Här är sidan till problemet där de berättar vad indatan består av: https://pokval19.kattis.com/problems/pokval18.eldberget
Det måste ju gå att i det där python idle tala om varifrån input ska hämtas.
Vad som händer när du skickar in programmet vet jag inte, men om de kör MacOS eller Linux så anropar nog servern python i en subprocess på det sätt som jag skrev eller något likvärdigt.
Med "foo.py" menade jag vilket python-program som helst, t.ex. ditt.
Kommandoraden kommer man till med programmet Terminal i MacOS.
Laguna skrev:Det måste ju gå att i det där python idle tala om varifrån input ska hämtas.
Vad som händer när du skickar in programmet vet jag inte, men om de kör MacOS eller Linux så anropar nog servern python i en subprocess på det sätt som jag skrev eller något likvärdigt.
Med "foo.py" menade jag vilket python-program som helst, t.ex. ditt.
Kommandoraden kommer man till med programmet Terminal i MacOS.
Jaha, men idle är det fönster där man skirver koden och ser typ samma ut i windows. När man kör koden från idle startas python shell. Man laddar alltså ner idle från pythons hemsida. Det bör finns någon kod som gör omredigerar eller läser från en fil genom att skriva det i idle.