7 svar
568 visningar
Zeshen 479
Postad: 28 nov 2018 16:04

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.

Laguna Online 28459
Postad: 28 nov 2018 16:09

Vilket OS?

Zeshen 479
Postad: 28 nov 2018 16:12
Laguna skrev:

Vilket OS?

 MacOS Mojave

Zeshen 479
Postad: 28 nov 2018 16:12
Zeshen skrev:
Laguna skrev:

Vilket OS?

 MacOS Mojave

 version 10.14

Laguna Online 28459
Postad: 28 nov 2018 16:23
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.

Zeshen 479
Postad: 28 nov 2018 16:35
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

Laguna Online 28459
Postad: 28 nov 2018 16:48

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.

Zeshen 479
Postad: 29 nov 2018 07:19
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.

Svara Avbryt
Close