Advertisement
Guest User

Untitled

a guest
Jun 25th, 2017
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.13 KB | None | 0 0
  1. #! /usr/bin/python
  2. # importowanie bibliotek
  3. from __future__ import division
  4. from Tools.scripts.treesync import raw_input
  5. import numpy
  6.  
  7.  
  8. def program():
  9. print("\n====================Informatyka Chemiczna - Zadanie 2 - Langmuir====================\n")
  10. # zmienne
  11. nMaksymalne = 0
  12. aMaksymalne = 0
  13. korelacja = 0
  14. masaAbsorbenta = 0
  15. naglowkiKolumn = 0
  16. a = [];
  17. b = [];
  18. kolumnyDanych = 2
  19. wierszeDanych = 100
  20. licznik = 0
  21. daneWejsciowe = [[0 for x in range(kolumnyDanych)] for y in range(wierszeDanych)]
  22.  
  23. # zapytanie o plik z danymi
  24. nazwaPliku = input("Podaj nazwę pliku z danymi wejściowymi wraz z rozszerzeniem, np.: dane.txt")
  25.  
  26. # otworzenie pliku w trybie odczytu
  27. # with open("dane.txt", 'r') as plikWejsciowy:
  28. with open(nazwaPliku, 'r') as plikWejsciowy:
  29. # wczytanie wartosc z pierwszej linijki
  30. nazwa, wartosc = plikWejsciowy.readline().partition("=")[::2]
  31. masaAbsorbenta = float(wartosc)
  32. # wczytanie nagłówków
  33. naglowkiKolumn = plikWejsciowy.readline().split()
  34.  
  35. # pętla na pozostałe linijki z pliku wejściowego
  36. for licznik, linijka in enumerate(plikWejsciowy):
  37. # pobieranie liczb z jednej linjki
  38. liczby = linijka.split()
  39. # oddzielnie pobranych liczb
  40. temp = [float(x) for x in liczby]
  41. # zapis odczytanych danych do tablicy
  42. daneWejsciowe[licznik][0] = temp[0]
  43. daneWejsciowe[licznik][1] = temp[1]
  44. # przy okazji wczytywania danych za każdym razem wykonuję porównanie aby znaleźć nMaksymalne
  45. if daneWejsciowe[licznik][0] > nMaksymalne:
  46. nMaksymalne = daneWejsciowe[licznik][0]
  47.  
  48. # obliczam aMaksymalne
  49. aMaksymalne = nMaksymalne / masaAbsorbenta
  50.  
  51. # obliczam a dla każdej pary n/p danych
  52. for wiersz in daneWejsciowe:
  53. a.append(wiersz[0] / masaAbsorbenta)
  54.  
  55. # obliczam b dla każdej pary n/p danych
  56. for licznik, wiersz in enumerate(daneWejsciowe):
  57. b.append(float(1.0 / ((wiersz[1] * aMaksymalne) / (a[licznik])) - wiersz[1] * 1.0))
  58.  
  59. # obliczam korelację na podstawie kolumny danych n i p
  60. korelacja = numpy.corrcoef([a[0] for a in daneWejsciowe], [a[1] for a in daneWejsciowe])[0, 1]
  61.  
  62. try:
  63. decyzjaFormatWyniku = int(raw_input("Zdecyduj czy chcesz wyniki działania programu skierować do pliku - wpisując 1 lub do konsoli - wpisując 2"))
  64. except ValueError:
  65. print("Niewłaściwa wartość")
  66.  
  67. try:
  68. decyzjaWzory = int(raw_input( "Chcesz przeprowadzić dodatkowe obliczenia na innych wzorach? Wpisz 1 dla wzorów 3 i 4 lub wpisz 2 dla wzorów 5 i 6"))
  69. except ValueError:
  70. print("Niewłaściwa wartość")
  71.  
  72. if decyzjaWzory == 1:
  73. # liczonko wedlug wzorów 3 i 4
  74. print(" ")
  75. else:
  76. # liczonko wedlug wzorów 5 i 6
  77. print(" ")
  78.  
  79. if decyzjaFormatWyniku == 1:
  80. # zapytanie o plik z wynikami
  81. nazwaPliku = input("Podaj nazwę pliku do którego chcesz zapisać wyniki wraz z rozszerzeniem, np.: wyniki.txt")
  82. # wypisuję dane do pliku
  83. with open(nazwaPliku, 'w') as plikWyniku:
  84.  
  85. #formatowanie dantch i zapisywanie linijka po linijce do pliku wynikowego
  86. linijka = "%s%f" % ("aMaksymalne=", aMaksymalne)
  87. plikWyniku.writelines(linijka)
  88.  
  89. linijka = "%s%f" % ("\nMaksymalne=", nMaksymalne)
  90. plikWyniku.writelines(linijka)
  91.  
  92. linijka = "%s%f" % ("\nKorelacja=", korelacja)
  93. plikWyniku.writelines(linijka)
  94.  
  95. linijka = "%s%f" % ("\nMasa absorbenta=", masaAbsorbenta)
  96. plikWyniku.writelines(linijka)
  97.  
  98. # sprawdzam, czy korelacja jest równa 0
  99. if korelacja == 0:
  100. plikWyniku.writelines("\nAbsorbat nie ulega dysocjacji\n")
  101. # sprawdzam, czy korelacja jest większa od 0
  102. if korelacja > 0:
  103. plikWyniku.writelines("\nAbsorbat ulega dysocjacji\n")
  104.  
  105. linijka = "%s%s%s%s%s" % ("\n", naglowkiKolumn[0], "\t\t\t", naglowkiKolumn[1], "\t\ta\t\t\tb\n")
  106. plikWyniku.writelines(linijka)
  107. for licznik, row in enumerate(daneWejsciowe):
  108. linijka = "%f\t%f\t%f\t%f\n" % (row[0], row[1], a[licznik], b[licznik])
  109. plikWyniku.writelines(linijka)
  110. else:
  111. # wypisuję dane do konsoli
  112. print("====================Wyniki====================")
  113. print("aMaksymalne=", aMaksymalne)
  114. print("nMaksymalne=", nMaksymalne)
  115. print("Korelacja=", korelacja)
  116. print("Masa absorbenta=", masaAbsorbenta)
  117. if korelacja == 0:
  118. print("Absorbat nie ulega dysocjacji")
  119. # sprawdzam, czy korelacja jest większa od 0
  120. if korelacja > 0:
  121. print("Absorbat ulega dysocjacji")
  122. print(naglowkiKolumn[0], "\t\t\t", naglowkiKolumn[1], "\ta\t\t\tb")
  123. for licznik, row in enumerate(daneWejsciowe):
  124. linijeczka = "%f\t%f\t%f\t%f" % (row[0], row[1], a[licznik], b[licznik])
  125. print(linijeczka)
  126.  
  127. koniec = input("Jeśli chcesz kontynuować wpisz Tak lub Nie jeśli chcesz zakończyć działanie programu")
  128.  
  129. if koniec == "Tak":
  130. program()
  131.  
  132. program()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement