Kurs Pythona Swachy – Ćwiczenia

Zaczynając moją przygodę z pythonem naktnałem się na bardzo ciekawy kurs. Kurs Jakuba Swachy który możecie znaleźć na stronie http://uoo.univ.szczecin.pl/~jakubs/ . Bardzo polecam ten kurs osobom chętnym do poznania pythona.  Pomyślałem,  że zamieszcze tutaj moje rozwiązania do niektórych ćwiczeń.  (Pliki .py znajdziecie na sidebarze)

Ćwiczenie 11.

Napisz program “numer.py”, który zamieni wprowadzony przez użytkownika ciąg cyfr na formę tekstową:

a) znaki nie będące cyframi mają być ignorowane

b) konwertujemy cyfry, nie liczby, a zatem:

– 911 to “dziewięć jeden jeden”

– 1100 to “jeden jeden zero zero”

import string
cyfry = ('zero', 'jeden', 'dwa', 'trzy', 'cztery', 'pięć', 'sześć', 'siedem', 'osiem', 'dziewięć')
ciag = raw_input('Podaj ciąg cyfr: ')
for x in ciag:
    if x not in string.digits: continue
    print cyfry[int(x)]

Ćwiczenie 12.

Woda zamarza przy 32 stopniach Fahrenheita, a wrze przy 212 stopniach Fahrenheita. Napisz program “stopnie.py”, który wyświetli tabelę przeliczeń stopni Celsjusza na stopnie Fahrenheita w zakresie od –20 do +40 stopni Celsjusza (co 5 stopni). Pamiętaj o wyświetlaniu znaku plus/minus przy temperaturze.

for x in range(-20,45,5):
    print '%+3i' % x, 'to sie równa %+4i' % ((x*9)/5 + 32), 'F'

Ćwiczenie 13.

Napisz program “oceny.py”, który wczytuje od użytkownika kolejne oceny i:

a) sprawdza czy wprowadzona ocena jest na liście dopuszczalnych na wydziale ocen (jeżeli ocena jest na liście dopuszczalnych na wydziale ocen, dodaje ją na listę otrzymanych ocen)

b) jeżeli wciśnięto sam Enter, oznacza to koniec listy otrzymanych ocen

c) wyświetla wyliczoną dla listy otrzymanych ocen średnią arytmetyczną.

wydzial = range(1,7)
dobre = []
oceny = input("podaj swoje oceny: ")
a = 0
for x in oceny:
    if x not in wydzial: continue
    dobre += [x]
for y in dobre:
    a += y
print "Twoja średnia ocen to", "%5.2f" % (float(a)/len(dobre))

Ćwiczenie 14.

Napisz program “tryg.py”, który wczyta od użytkownika wielkość kąta w stopniach i wyświetli wartość czterech podstawowych funkcji trygonometrycznych (sin, cos, tg, ctg) o ile dla danego kąta jest to możliwe.

from math import *
kat = input("Podaj wielkość kąta w stopniach: ")
print "%+5.3f" % sin(radians(kat))
print "%+5.3f" % cos(radians(kat))
if radians(kat)%(pi/2)== 0:
    print "nie ma takiego tangensa"
else:
    print "%+5.3f" % tan(radians(kat))
if radians(kat)%(pi)== 0:
    print "nie ma takiego cotangensa"
else:
    print "%+5.3f" % (1/tan(radians(kat)))

Ćwiczenie 15.

Napisz program “lotto.py”, który wyświetli 6 losowych i nie powtarzających się liczb z zakresu od 1 do 49.

from random import randint
lista = []
def lotto():
    a = randint(1,49)
    if a not in lista:
        lista.append(a)
    else:
        lotto()
for x in range(6):
    lotto()
print lista

Ćwiczenie 18.

Zdefiniuj funkcję “avg”, która dla dowolnej liczby parametrów zwróci ich średnią arytmetyczną (lub 0 dla 0 parametrów).

def avg(*a):
    y=0
    for x in a:
        y+=x
    return a and y/float(len(a))or 0

Ćwiczenie I.

Napisz program „liczby_slownie2.py”, który dla wprowadzonej liczby dziesiętnej (z zakresu 1-1999) wyświetli jej wartość zapisaną słownie.

liczby = {0:"zero",1: "jeden ",2:"dwa ",3:"trzy ",4:"cztery ",5:"pięć ",6:"sześć ",
          7:"siedem ",8:"osiem ",9:"dziewięć ",10:"dziesięć ",11:"jedenaście ",12:"dwanaście ",13:"trzynaście ",14:"czternaście ",
          15:"piętnaście ",16:"szesnaście ",17:"siedemnaście ",18:"osiemnaście",19:"dziewiętnaście",40:"czterdzieści",
          100:"sto ",200:"dwieście ",1000:"tysiąc ", 30: "trzydzieści ", 20: "dwadzieścia ",50: "pięćdziesiąt ",
          60: "sześćdziesiąt ",70: "siedemdziesiąt ",80: "osiemdziesiąt ",90: "dziewięćdziesiąt ",
          300: "trzysta ", 400: "czterysta ",500: "pięćset ",600: "sześćset ",700: "siedemset ",800: "osiemset ",900: "dziewięćset "}
r = liczby.keys()
r.sort()
r.reverse()
lr = ""
b = []
def fct(n):
    r = liczby.keys()
    r.sort()
    r.reverse()
    lr = ""
    for i in r:
        while i <= n:
            lr += liczby[i]
            n -= i
            break
    b = str(lr).rstrip('zero')
    return b
x = input("Podaj liczbę całkowitą:")
print  fct(x)

6 thoughts on “Kurs Pythona Swachy – Ćwiczenia

  1. Ćwiczenie nr 13 rozwiązane jest nieprawidłowo. Z treści wywnioskować można, że aplikacja powinna wczytywać pojedyncze oceny na co wskazywać pośrednio może fragment “b) jeżeli wciśnięto sam Enter, oznacza to koniec listy otrzymanych ocen” – czyli:

    ocena -> enter
    ocena -> enter

    enter -> koniec wczytywania ocen i wyliczanie średniej

    Kod przedstawiony w rozwiązaniu oczekuje na podanie listy ocen.

    • Hej, dzięki za komentarz. Masz rację, ja jakoś nie przejmowałem się wtedy sposobem wprowadzania danych. Pozdrawiam;)

      • może takie rozwiązanie byłoby prawidłowe?

        dopuszczone_oceny = range(1,7)
        moje_oceny = []
        suma_ocen = 0
        print “Podaj ocene z zakresu %s lub nacisnij enter aby wyliczyc srednia (wymagana przynajmniej jedna ocena)” %dopuszczone_oceny
        while True:
        ocena = raw_input(“Podaj ocene lub nacisnij enter: “)
        if ocena != ” and int(ocena) in dopuszczone_oceny:
        moje_oceny+=[int(ocena),]
        suma_ocen+=int(ocena)
        if ocena == ”:
        print “Srednia ocen wynosi %.2f” %(float(suma_ocen)/len(moje_oceny))
        break

    • Tak, twoje działa ale zwróć uwagę że ocena może być zmiennoprzecinkowa (tak jest na studiach w Polsce chociażby).

      Zoptymalizowałem troche twoje rozwiązanie:

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s