Skip to content

Instantly share code, notes, and snippets.

@rafalw
Created October 24, 2018 16:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rafalw/af8c004065786bc4aca1b1af4e54b718 to your computer and use it in GitHub Desktop.
Save rafalw/af8c004065786bc4aca1b1af4e54b718 to your computer and use it in GitHub Desktop.
Intensywny kurs Pythona – dla uczniów technikum, informatyka rozszerzona (cz. 2)
#!/usr/bin/python3
# Równianie kwadratowe – wersja 1, prosta
from math import sqrt
print("Rozwiązywanie równiania kwadratowego")
a = float(input("Podaj wartość a: "))
b = float(input("Podaj wartość b: "))
c = float(input("Podaj wartość c: "))
print("a = ", a, ", b = ", b, ", c = ", c)
if a == 0:
print("To nie jest równanie kwadratowe.")
else:
delta = b*b - 4*a*c
if delta < 0:
print("Równanie nie ma rozwiązań w zbiorze liczb rzeczywistych.")
elif delta == 0:
print("Delta równa 0, więc...")
x = -b / (2*a)
print("...rozwiązaniem równania jest x = ", x)
else:
s_delta = sqrt(delta)
x1 = (-b - s_delta)/(2*a)
x2 = (-b + s_delta)/(2*a)
print("Delta większa od zera, więc...")
print("...rozwiązaniem równania są x1 = ", x1, " i x2 = ", x2)
# Równanie kwadratowe – dane wejściowe w pliku tekstowym, w osobnych wierszach
# Wyniki również umieszczane w pliku.
# Program wrażliwy na błędne dane w pliku wejściowym
# << dane_we.txt
# >> dane_wy.txt
# Pełna ścieżka dostępu do pliku ze względu na problemy z katalogiem roboczym
# w środowisku VScode
from math import sqrt
# Uwaga: proszę podać własną ścieżkę dostępu do pliku (może być względna)
plik = open("/home/rafal/Projects/Python-386/Delta_X1/dane_we.txt", "r")
if plik:
dane = plik.readlines()
plik.close()
a = float(dane[0])
b = float(dane[1])
c = float(dane[2])
if a == 0.0:
print("To nie jest równanie kwadratowe.")
else:
delta = b*b - 4*a*c
if delta < 0:
print("Równanie nie ma roziązań w zbiorze liczb rzeczywistych.")
elif delta == 0:
x = -b / (2*a)
print("Rozwiązanie równania to x = ", x)
plik = open("/home/rafal/Projects/Python-386/Delta_X1/dane_wy.txt", "w")
plik.write(x+"\n")
plik.close()
else:
x1 = (-b - sqrt(delta)) / (2*a)
x2 = (-b + sqrt(delta)) / (2*a)
print("Roziązanie równania to:")
print("x1 = ", x1)
print("x2 = ", x2)
plik = open("/home/rafal/Projects/Python-386/Delta_X1/dane_wy.txt", "w+")
plik.write(str(x1) + "\n") # żeby konkatenować ciągi znaków potrzebna jest jawna konwersja
plik.write(str(x2) + "\n")
plik.close()
else:
print("Błąd odczytu danych.")
# Równanie kwadratowe – dane wejściowe przekazywane jako lista parametrów wywołania programu
from math import sqrt
from sys import argv
if len(argv) <= 3:
print("Prawidłowe wywołanie programu:\n")
print("delta_x2 <a> <b> <c>\n")
print("gdzie a, b i c są liczbami rzeczywistymi.")
else:
# Uwaga: argv[0] to nazwa programu!
a = float(argv[1])
b = float(argv[2])
c = float(argv[3])
print("a = ", a, ", b = ", b, ", c = ", c)
if a == 0:
print("To nie jest równanie kwadratowe.")
else:
delta = b*b - 4*a*c
if delta < 0:
print("Równanie nie ma rozwiązań w zbiorze liczb rzeczywistych.")
elif delta == 0:
print("Delta równa 0, więc...")
x = -b / (2*a)
print("...rozwiązaniem równania jest x = ", x)
else:
s_delta = sqrt(delta)
x1 = (-b - s_delta)/(2*a)
x2 = (-b + s_delta)/(2*a)
print("Delta większa od zera, więc...")
print("...rozwiązaniem równania są x1 = ", x1, " i x2 = ", x2)
from sys import argv
# Definicja funkcji obliczającej n-ty element ciągu Fibonacciego
# Metoda iteracyjna.
# >> Parametr przekazywany do funkcji – n: numer elemntu ciągu do obliczenia
# << Wartość zwracana – wartość n-tego elementu ciągu
# Proszę zwrócić uwagę na wielokrotne przypisania (wiersz 9 i 11 – do dwóch zmiennych dwie różne wartości)
def fibonacci(n):
a,b = 1,1
for i in range(n-1):
a,b = b,a+b
return a
# sprawdzenie...
if len(argv) < 2:
print("Prawidłowe wywołanie programu:\n")
print("fibo_iter.py <n>\n")
print("gdzie n to numer elementu ciągu Fibonacciego do obliczenia.")
else:
element = int(argv[1])
print(fibonacci(element))
from sys import argv
# Definicja funkcji obliczającej n-ty element ciągu Fibonacciego
# Metoda rekurencyjna. Wyjątkowo nieefektywna...
# >> n: numer elemntu ciągu do obliczenia
# << wartość n-tego elementu ciągu
def fibonacci(n):
if n == 1 or n == 2:
return 1
return fibonacci(n-1) + fibonacci(n-2)
# sprawdzenie...
if len(argv) < 2:
print("Prawidłowe wywołanie programu:\n")
print("fibo_iter.py <n>\n")
print("gdzie n to numer elementu ciągu Fibonacciego do obliczenia.")
else:
element = int(argv[1])
print(fibonacci(element))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment