Aktywne Wpisy

marjanoos +193
Nie ma już ratunku dla osób z mentalnością "z-----------a". I bynajmniej nie chodzi o ciężką pracę, a o szybką jazdę.
Przypadek wypadku na skrzyżowaniu Grochowskiej i Zamienieckiej w Warszawie. Kierująca fordem wymusza pierwszeństwo, wytrąca z drogi toyotę. Ta dachuje i wjeżdża w grupę przechodniów, "wymiatając z planszy" kilkuletnie dziecko.
Odpowiedzialność za wypadek niepodważalnie ponosi osoba wymuszająca pierwszeństwo. Niemniej pojawiają się głosy, że spory procent uczestników ruchu przekracza tam nagminnie dozwoloną prędkość. W końcu dwa
Przypadek wypadku na skrzyżowaniu Grochowskiej i Zamienieckiej w Warszawie. Kierująca fordem wymusza pierwszeństwo, wytrąca z drogi toyotę. Ta dachuje i wjeżdża w grupę przechodniów, "wymiatając z planszy" kilkuletnie dziecko.
Odpowiedzialność za wypadek niepodważalnie ponosi osoba wymuszająca pierwszeństwo. Niemniej pojawiają się głosy, że spory procent uczestników ruchu przekracza tam nagminnie dozwoloną prędkość. W końcu dwa

32cm +24
Mirki
Czasem chcesz się pożalić, ale nie masz do kogo....
Żona chce kupić samochód. Padło na BMW X3, ja mówię lexusa (RX, UX, NX) ale nie bo brzydki lub stary, lub za duży przebieg, ok, gusta są różne...
Więc pada wybór kryteriów samochodu, rocznik powyżej 2017, automat, benzyna, przebieg poniżej 150k. Ustawiam wyszukiwanie, raz na jakiś czas coś się trafia, ale zawsze jakiś powód aby nie jechać, a to dziecko, a to samochód
Czasem chcesz się pożalić, ale nie masz do kogo....
Żona chce kupić samochód. Padło na BMW X3, ja mówię lexusa (RX, UX, NX) ale nie bo brzydki lub stary, lub za duży przebieg, ok, gusta są różne...
Więc pada wybór kryteriów samochodu, rocznik powyżej 2017, automat, benzyna, przebieg poniżej 150k. Ustawiam wyszukiwanie, raz na jakiś czas coś się trafia, ale zawsze jakiś powód aby nie jechać, a to dziecko, a to samochód





Napotykam się często na taki problem, że tworząc pętlę weryfikującą coś tam, ona musi się znaleźć w określonym miejscu kodu programu, lecz dobrze by było, żeby mogła skorzystać z linijek kodu które są po tej pętli stworzone....
nie mogę tych danych do tej konkretnej pętli przenieść wyżej przed pętle, bo to znowu za wcześnie i powoduje kolejne błędy.
Jest jakiś sposób żeby to łatwo nałatać czy to po prostu trzeba cały program przeorganizować raczej?
Mój przykład. Trzeba uzupełnić plik xlsx (określone komórki) więc chciałbym dodać jakąś weryfikację żeby nie przerabiało tych danych skoro komórka jest pusta bo to spowoduje error. Jeżeli komórka jest pusta no to user musi ją uzupełnić i napisać "y". Wtedy znowu jest sprawdzane czy jest dana wartość i tak w kółko.
Jakie określone komórki muszą być uzupełnione dowiadujemy się dużo później, bo zależy jakie opcje wybierze user. nie da się tego wyboru za bardzo przenieść wyżej...
Postaraj sie to sobie napisać jako liste krokow ktore musi wykonac program. Na logike brzmi to tak, ze w petli przed „przerabianiem danych” powinienes sprawdzic czy komorka jest pusta - jesli tak to niech user wpisze cos tam, jesli nie to rob przetwarzanie.
Najpierw wykonujesz agregacie, szukanie nulli itp, a potem zmieniasz co gdzie trzeba i zapisujesz wersję pliku.
Co ty robisz? Wczytujesz linia po linii?
nie wiem czy umiem to lepiej wytłumaczyć ale się postaram.
Mam plik xlsx a w nim komórki do uzupełnienia:
B2 dla Orange, Tauron, Netia
B3 dla
- wczytujesz plik do pamięci
- pytasz użytkownika czy uzupełnił i jeśli tak, to sprawdzasz komórkę obowiązkową
- potem odczytujesz sobie dane z innych komórek i na ich podstawie generujesz opcje do wyboru dla użytkownika
Albo wciaż czegoś nie łapię :)Sorry, ale musiałem na
- wczytujesz plik do pamięci - tak jest
- pytasz użytkownika czy uzupełnił i jeśli tak, to sprawdzasz komórkę obowiązkową - tak jest
- tu leży problem. użytkownik uzupełniający plik nie musi podawać wsyztskich danych w excelu.
ale dobra, poradziłem sobie w miarę. po prostu część słownika skopiowałem wyżej, potem pomyślę o jakimś łączeniu tych dwóch słowników. narazie
Chciałem poprosić abyś napisał jakieś user story.
Lubie wyjść od strony użytkownika bo to jasno definiuje jak to powinno wyglądać na końcu. Jeśli możesz to napisz jak wyobrażasz sobie idealny proces który powinien przejść użytkownik żeby wygenerować... no właśnie przede wszystkim jasno zdefiniuj co ma
No to tak:
Program jest ogólnie bardzo specyficzny, myślę że nigdzie indziej oprócz mojej obecnej firmy się po prostu nie sprawdzi.
1. User na początku wybiera główny folder zadania w którym program ma zadziałać.
@ozzi91: czyli jeśli dobrze rozumiem mógł by być drugi program / podprogram którego zadaniem była by tylko walidacja arkusza?
Jeśli chodzi o walidacje to przyjąłbym inną metodę.
Tworzyłbym listę której elementy były by błędami jakie znalazł twój program. Jeśli lista była by pusta to uznałbym że
@ozzi91: No użytkownikom trzeba ułatwiać co się da. Więc jeśli jest opcja żeby user wybrał coś z jakiejś listy to dobrze jest takie ułatwienia wprowadzać. Łatwiej wybrać lub zaznaczyć jakąś jedna opcję z wielu niż wpisywać.
Tak myślę że walidacja w twoim przypadku powinna przebiegać niezależnie i po całym pliku, Nawet po tych fragmentach które generuje program. Niezależność przysporzy trochę pracy
for cell in TEMPLATES[user_choice]['needed_cells']:if cell.value is None or cell.value == "":
W template dodałem osobno klucz neededcells który zawiera listę potrzebnych wypełnionych komórek, żeby właśnie potem zależnie od wyboru można było
@ozzi91: To zależy i teraz to sam nie wiem. Można to sprawdzić :) dodaj print(cell.value) przed tym if'em z warunkiem :) zobaczysz co ci wypisze. Ale chyba problem leży gdzie indziej.
Logikę ogólnie masz dobrą tylko zmylił mnie fakt że to jest w TEMPLATE. To ma nawet sens jeśli w tej stałej jest tylko adres komórki która trzeba sprawdzić. Ty
A czy rozwiązaniem Twojego problemu nie będzie kod w stylu tym:
https://pastebin.com/dmDJyEMq
Generalnie poza pętle while wyrzucasz do metod wszystko, co będzie odpowiedzialne za:
- sprawdzenie czy użytkownik uzupełnił wszystko
- sprawdzenie co użytkownik powinien uzupełnić (tego w sumie nie ma w wklejonym pseudokodzie, tam masz komentarz)
Bo nie wiem czy przypadkiem teraz Twoim problemem nie jest fakt że bazujesz na pliku wczytanym do pamięci, który użytkownik w międzyczasie
na 100% moim błędem jest to że, kod wygląda mniej więcej tak: odczytaj dane z komórki i zapisz w zmiennej x. potem ta zmienna x wędruje w dalszej części kodu jako wartość klucza w templates żeby niejako mieć wizualnie przedstawione WSZYTSKIE klucze i wartości skojarzone z danym templatem jednakże instynkt podpowiada mi, że bardziej
@ozzi91: Powiem ci jak jeszcze w konkretnych pytaniach czy fragmentach kodu idzie coś ogarnąć w rozmowie przez mikrobloga tak już każdy bardziej ogólny wątek to jest taki poziom abstrakcji że ciężko zrozumieć o czym rozmawiamy. Masz może do tego jakiś diagram UML? ;)
Co do danych wrażliwych to powinieneś pracować na jakiś mockupach danych - identycznych w strukturze i zawierających sens ale nieprawdziwych i udostępniać