python - notes

Tutaj będą moje luźne notatki (w celach dokumentacyjnych) na temat języka python.

Za chaos z góry przepraszam ale mi się to napewno przyda.


WYŚWIETLANIE ZMIENNYCH
najpierw liczba, później string i znów liczba:

print "Miejsce %0.f " % miejsce + " " + row[0] + " oo %0.f " % row[1]


RYSOWANIE "FORM KULISTYCH" - np niepełny okrąg
https://www.youtube.com/watch?v=Ok3vbJ0cwtk

pi=3.14

       pygame.draw.arc(background, green, (100,100,250,200), pi/2, pi, 1)
       pygame.draw.arc(background, black, (100,100,250,200), 0, pi/2, 1)
       pygame.draw.arc(background, red, (100,100,250,200), 3*pi/2, 2*pi, 1)
       pygame.draw.arc(background, blue, (100,100,250,200), pi, 3*pi/2, 1)

 3 parametr - to prostokąt w który zmieścić ma się okrąg/część okręgu
4 parametr - w radianach - gdzie ma się okrąg zacząć a gdzie skończyć
5 parametr - grubość

np
pygame.draw.arc(background, IntColor, (650,190,100,221), 3*pi/2, 5*pi/2, 3)
pygame.draw.arc(background, IntColor, (250,190,100,221), pi/2, 3*pi/2, 3)

to narysuje 2 półokręgi - ( i )



SORTOWANIE (np do tabeli)
#http://www.saltycrane.com/blog/2007/12/how-to-sort-table-by-columns-in-python/

score_table = [
        (rider2.name,rider2.czas),
        (rider3.name,rider3.czas),
        (rider4.name,rider4.czas),
]

miejsce=1
for row in sorted(score_table, key=operator.itemgetter(1)):
       print "Miejsce %0.f " % miejsce + " " + row[0] + " oo %0.f " % row[1]
       miejsce += 1

sortowanie wg dwóch kategorii
    for row in sort_table(mytable, (1,0)):
        print row

SUMA składników z macierzy (przy okazji w macierzy każdy rząd lepiej jak jest w nawiasach [ ]
punkty = [
   (..)
   [ '9', 1, 2, 3, 2, ],
   ['10', 3, 3, 0, 0, ],
   (..)
]

dla rzedów od 6 do 8
for i in range(6,9):
                # suma ale od drugiego składnika - gdy np pierwszy to nr indeksowy
                scoreVisitors += sum(team_points[i][1:])

gdy mamy listę - mamy różne metody
http://docs.python.org/2/tutorial/datastructures.html

DODAWANIE/USUWANIE

 list.append(x) - dodaje na koncu wiersza
 list.remove(x) - usuwa pierwszy wpis gdy ma podana WARTOŚĆ
del a[0] - usuwa wpis o podanym indexie

USUWANIE elementów z macierzy
gdy wiecej niz 1 wymiar

finalRiders4Change=[
  [9, 9.28, 1.5],
  [14, 3.83, 1.5],
  [13, 7.46, 1.33],
  [10, 2.41, -0.5],
  [15, 2.5, -0.66]]

szukamy rzędu w którym wartość pierwszej kolumny = 14
item2check=[ index for index,row in enumerate(finalRiders4Change) if row[0] == 14 ]
print item2check
usuwanie tego rzędu
del finalRiders4Change[item2check[0]]

zeby sprawdzic czy jest wartosc
if len(item2check) > 0


zabawy z tekstem
tekst="TO JEST TEKST"
Place1=tekst.split(" ")
Place1[0][0] + ". " + Place1[-1] + ", "
pierwsza litera pierwszego elementu + ostatni element
czyli T. TEKST



Hidden features of Python
http://stackoverflow.com/questions/101268/hidden-features-of-python/1024693
 
 
PYGAME
gdy robimy pętle

np 
while running = true:
 
standardowo wszędzie  napisane jest żeby użyć coś w stylu:
     for event in pygame.event.get():
                if event.type == QUIT:
                        pygame.quit()
                        sys.exit()
                if event.type == KEYDOWN:
                        if event.key == K_ESCAPE:
                                running=false
ALE to zżera dużo procesora ( u mnie 70-100% CPU)

CO ZROBIĆ:
na samym końcu (żeby najpierw nie czekało tylko wyświetlało menu) za display.flip wrzucić
                event = pygame.event.wait()
                if event.type == QUIT:
                        pygame.quit()
                        sys.exit()
                if event.type == KEYDOWN:
                        if event.key == K_ESCAPE:
                                running=false
i wtedy duuuużo lepiej
 
 
 PYGAME okno - pozycja startowa
import os
position = 100, 50
os.environ['SDL_VIDEO_WINDOW_POS'] = str(position[0]) + "," + str(position[1])

Brak komentarzy:

Prześlij komentarz