python-dirbtuves / it-brandos-egzaminai

Informacinių technologijų brandos egzaminų, programavimo praktinių užduočių sprendimai
GNU Affero General Public License v3.0
13 stars 13 forks source link

2014/bandomasis/u1 #4

Open sirex opened 9 years ago

sirex commented 9 years ago

@dz0 Nusprendžiau iškelti atskirų uždavinių aptarimą į atskiras užduotis.

Dar kartą patobulinau užduotį, šį kartą pertvarkiau pagal https://github.com/python-dirbtuves/it-brandos-egzaminai/issues/3#issuecomment-90879301.

sirex commented 9 years ago

Vis dėl to nusprendžiau palikti x, y = map(int, line.split()), manau bent jau tokią išraišką tikrai verta išmokti, o jos nenaudoti programuojant Python, yra tiesiog nuodėmė.

dz0 commented 9 years ago

ok, tik komentaruose paaiškint vera: "map" pritaiko "int" (pavertimą sveiku skaičiumi) kiekvienam elementui iš sąrašo, kurį gaunam suskaidę eilutę.

dz0 commented 9 years ago

ps.: teoriškai eilutėje skaičiai gali būt atskirti daugiau negu vienu tarpu... (C++/Paskaliui tai nekenktų..), bet gal nereikia sureikšminti -- dažniausiai normaliai būna.. Galima komentare parašyti, kad: "split" suskaido eilutę pagal vieno tarpo skirtukus.

sirex commented 9 years ago

ok, tik komentaruose paaiškint vera: "map" pritaiko "int" (pavertimą sveiku skaičiumi) kiekvienam elementui iš sąrašo, kurį gaunam suskaidę eilutę.

Aš galvoju, kad tokius paaiškinimus vertėtų iškelti iš komentarų į README.rst failą, kuriame būtų paaiškinti pagrindiniai skirtumai tarp Python, Pascal ir C++.

Toks, dalykas kaip sąrašo skaičių skaitymas iš failo yra labai dažnas dalykas egzamino užduotyse. Todėl paaiškinimas, kad:

with open('U1.txt') as f:
    x, y = map(int, f.readline().split())

Daro lygiai tą patį ką Pascal:

var f : text;
    x, y : integer;
begin
    assign(f, 'U1.txt'); 
    reset(f);
    readln(f, x, y);
    close(f);
end.

Ir C++:

#include <iostream>
#include <fstream>
using namespace std;

int main() {
    ifstream f ("U1.txt");
    int x, y;
    f >> x >> y;
    f.close();
}

Tikrai turėtų būti įtrauktas į README.rst

Bet kokiu atveju, šios trys kalbos yra labai skirtingos, todėl nereikėtų stengtis Python kalboje vienas prie vieno kopijuoti Pascal arba C++.

ps.: teoriškai eilutėje skaičiai gali būt atskirti daugiau negu vienu tarpu... (C++/Paskaliui tai nekenktų..), bet gal nereikia sureikšminti -- dažniausiai normaliai būna..

.split() be argumentų taip pat nekenkia jei yra daugiau nei vienas tarpas:

>>> 'a b  c   d      e'.split()
['a', 'b', 'c', 'd', 'e']