Nowe posty

Autor Wątek: Problem z programem w Pythonie  (Przeczytany 32613 razy)

linux1224

  • Gość
Problem z programem w Pythonie
« dnia: 2008-05-12, 16:29:39 »
Witam wszystkich mam problem z programem wskazującym liczby pierwsze. Zaraz podam Wam cały program i błąd który pojawia się w konsoli mandrivy. Proszę znajdźcie bład i odpiszcie.
 Oto cały scrypt:

koniec = input("Podaj górną granicę zakresu do wyszukania liczb pierwszych:")
pierwsze = range(koniec+1)
n = 1
while ( n < koniec ):
      n += 1
      if pierwsze[n]==0:
                                  continue
            m = n * 2
      while m <= koniec
            pierwsze[m]=0
                                   m += n
print "Znaleziono następujące liczby pierwsze:"
for n in pierwsze:
    if n: print n,
Oto błąd który pojawia się w konsli gdy proboje go wczytac:

[root@localhost Scrypty]# ./pierwsze.py
  File "./pierwsze.py", line 2
SyntaxError: Non-ASCII character '\\xf3' in file ./pierwsze.py on line 2, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
Co to może być błagam o pomoc. Pozdro

ed: zob. http://forum.linux.pl/help.php#bbcode i zerknij w źródło

arctgx

  • Gość
Problem z programem w Pythonie
« Odpowiedź #1 dnia: 2008-05-12, 16:37:39 »
OK, a czy próbowałeś zrozumieć czego dotyczy ten błąd? Jest w miarę dokładnie wyjaśniony jego opis. Można powiedzieć, że sam dałeś odpowiedź jak choćby chwilowo obejść problem.

linux1224

  • Gość
Problem z programem w Pythonie
« Odpowiedź #2 dnia: 2008-05-12, 19:52:53 »
Rozumiem,ale kiedy pisze prostego scrypta sumującego 2 liczby porblem ten sie nie pojawia
 #!/usr/bin/python
x=raw_input("Podaj x:")
y=raw_input("Podaj y:")
print "Suma liczb" ,x,"i",y, "wynosi:",int(x)+int(y)

rozumiem że chodzi o charakter ascii, ale jak temu problemowi zapobiec nie mam pojęcia więc proszę o pomoc.
Pozdro

52aqir

  • Gość
Problem z programem w Pythonie
« Odpowiedź #3 dnia: 2008-05-12, 20:11:07 »
wywal polskie znaczki, a następnie otwórz przeglądarkę na adresie który widnieje w błędzie, żeby się dowiedzieć jak zrobić, żeby pl-znaczki działały :)

arctgx

  • Gość
Problem z programem w Pythonie
« Odpowiedź #4 dnia: 2008-05-12, 20:38:05 »
Cytat: linux1224
rozumiem że chodzi o charakter ascii
@52aqir, moim zdaniem lepiej byłoby jakby autor zadał sobie trud zrozumienia komunikatu i w tym celu skorzystał chociaż z podstawowych informacji na jego temat, jak choćby tu:

http://pl.wikipedia.org/wiki/Ascii
http://www.dict.pl/dict?word=character&words=&lang=PL

a dopiero później pytał nas o przetłumaczenie. Jak widzę tekst w rodzaju "charakter ascii", to nie podejrzewałbym go o wcześniejsze samodzielne szukanie ;)

linux1224

  • Gość
Problem z programem w Pythonie
« Odpowiedź #5 dnia: 2008-05-12, 20:48:57 »
Dobra sory, pierwszy problem mam już głowy. Teraz jednak jest nowy oto on:

wojtek@localhost Scrypty]$ ./pierwsze.py
  File "./pierwsze.py", line 9
    m=n*2
        ^
IndentationError: unindent does not match any outer indentation level

Co jest nie tak z tym zapisem m=n*2.
Aha i prosiłbym o wyrozumiałość (dopiero zaczynam z Pythonem)

arctgx

  • Gość
Problem z programem w Pythonie
« Odpowiedź #6 dnia: 2008-05-12, 20:56:08 »
Kolego, zobacz, proszę jak wyedytowałem Twój pierwszy post i przerób swój ostatni.

Tu chodzi o poziom (liczbę) wcięć poprzedzających kod, które w Pythonie mają znaczenie. Myślę, że  taka zmiana powinna wystarczyć (jednakowy poziom wcięć):

      if pierwsze[n]==0:
            continue
            m = n * 2

linux1224

  • Gość
Problem z programem w Pythonie
« Odpowiedź #7 dnia: 2008-05-12, 23:21:31 »
Zbliżamy się do rozwiązania. Jeszcze troszkę i będzie po sprawie. Dzięki za pomoc, ale to mój kolejny problem
zerknij:
[wojtek@localhost Scrypty]$ ./pierwsze.py
  File "./pierwsze.py", line 10
    while m <= koniec.
                     ^
SyntaxError: invalid syntax

chmooreck

  • Gość
Problem z programem w Pythonie
« Odpowiedź #8 dnia: 2008-05-13, 11:29:26 »
linux1224 co oznacza ten kod błędu ?
i do czego się odnosi biorąc pod uwagę '^' ?
to chyba cię nie przerasta skoro bierzesz się za programowanie ?

linux1224

  • Gość
Problem z programem w Pythonie
« Odpowiedź #9 dnia: 2008-05-13, 19:41:56 »
Dobra to jest jeszcze raz cały program błąd który pojawia się jest wymieniony poniżej .Co jest tam źle

#!/usr/bin/python
koniec = input("Podaj górna granice zakresu do wyszukania liczb pierwszych:")
pierwsze = range(koniec+1)
n = 1
while ( n < koniec ):
      n += 1
      if pierwsze[n]==0:
            continue
            m = n * 2
      while m <= koniec [b]# W tej lini pojawia się błąde co jest nie tak???[/b]
            pierwsze[m]=0
                                   m += n
print "Znaleziono nastepujace liczby pierwsze:"
for n in pierwsze:
    if n: print n,

mammalz

  • Gość
Problem z programem w Pythonie
« Odpowiedź #10 dnia: 2008-05-13, 22:06:54 »
Po pierwsze zauważ jak wygląda składnia pierwszej pętli while w twoim programie i zobacz jakiego znaku brakuje w drugiej, po drugie o ile to nie reprezentacja kodu na stronie to masz rozwalone wcięcia "chwilę" dalej. Moja rada, spacje zamiast tabulatora w domyślnym edytorze, który używasz (najlepiej standardowo 4 spacje zamiast tabulatora) będą dla ciebie i dla innych ułatwieniem i nie mieszaj tabulacji ze spacjami, python tego nie lubi (i chyba nikt tego nie lubi ;).

arctgx

  • Gość
Problem z programem w Pythonie
« Odpowiedź #11 dnia: 2008-05-13, 22:13:44 »
Jeśli wklejam tekst w znacznik CODE do formularzy tworzenia wątku, to tabulacje są prawidłowo zachowywane (tzn. przerabiane na spacje). Nie trzeba więc chyba samych tabulacji unikać, byle trzymać się jakiejś konsekwencji w pisaniu kodu.

mammalz

  • Gość
Problem z programem w Pythonie
« Odpowiedź #12 dnia: 2008-05-13, 22:21:58 »
To znaczy, że istotnie ma rozwalone wcięcia.
BTW tabulacji, to jednak nie jestem za używaniem tabulacji do wcięć ze względu właśnie na dynamiczną "szerokość" tabulatora i to co w jednym edytorze wygląda dobrze, w drugim wygląda czasami jak po wybuchu petardy. Spacje zawsze "zużywają" tyle samo miejsca... ale to tylko taka uwaga na marginesie :)

arctgx

  • Gość
Problem z programem w Pythonie
« Odpowiedź #13 dnia: 2008-05-13, 22:49:50 »
Cytat: mammalz
co w jednym edytorze wygląda dobrze, w drugim wygląda czasami jak po wybuchu petardy.
Prędzej zrezygnowałbym wtedy z tego wybuchowego edytora niż z tabulacji :) Mi akurat tabulacje ułatwiają poruszanie się po zawartości, a także operowanie wcięciami na pojedynczych wierszach lub całych blokach.

mammalz

  • Gość
Problem z programem w Pythonie
« Odpowiedź #14 dnia: 2008-05-13, 23:21:04 »
Łeee no pewnie, że problem nie jest wart kruszenia kopii. Jeżeli przychodzi mi edytować kod, którego autor używał konwencji z tabulatorami, to nie pałam świętym oburzeniem i po ochłonięciu zamieniam wszędzie gdzie spotkam 09 na 32 x 4, tylko trzymam się  konwencji autora, co nie znaczy, że nie preferuję z różnych z resztą względów spacji nad tabulacje (ot chociażby takich, że tabulator w swoim założeniu miał służyć czemuś zgoła innemu niż wcinaniu kodu, albo takich o których mówiłem wcześniej) ;). Co do edytorów, to wiadomo niestety, że edytorów idealnych nie ma, ale czasem pomimo wad mają inne przeważające zalety.