wzee1

primvalogatas.py

Nov 22nd, 2023
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.42 KB | None | 0 0
  1. # nem mukodik teljesen!!
  2.  
  3. import sys
  4.  
  5.  
  6. # Megnézi, hogy az adott szám prím-e
  7. def is_prime(number: int) -> bool:
  8.     if number == 1:
  9.         return False
  10.     if number == 2:
  11.         return True
  12.  
  13.     for divisor in range(2, int(number**0.5)+1):
  14.         if number % divisor == 0:
  15.             return False
  16.  
  17.     return True
  18.  
  19.  
  20. # Megnézi, hogy az adott listában mik a prímek, majd azokat egy új listába
  21. # rakja, törli az ismétlődőek és sorba rakja
  22. def get_primes(number_list: list) -> list:
  23.     primes_only = []    # Ide kerülnek a prímek
  24.     for number in number_list:
  25.         if is_prime(number):
  26.             # Ha prím, akkor hozzáfűzi
  27.             primes_only.append(number)
  28.  
  29.     # Rendezem növekvőbe
  30.     primes_only.sort()
  31.     # Kitörlöm az ismétlődő elemeket (ezt mashogy is meglehet,
  32.     # de pythonban ez ilyen egyszerű és gyors, ha megjegyzed)
  33.     primes_only = list(dict.fromkeys(primes_only))
  34.  
  35.     return primes_only  # Visszaadom az új listát
  36.  
  37.  
  38. def main():
  39.     # data-ban lesznek a számlisták
  40.     data = []
  41.     # beolvasom
  42.     with open(sys.argv[1], "r") as file:
  43.         for line in file:
  44.             # levágom a végéről a \n-t, majd listává alakítom szóközök mentén
  45.             line = line.strip().split()
  46.             # minden elemet számmá alakítok a listában, majd hozzáfűzöm a datahoz
  47.             data.append([int(number) for number in line])
  48.  
  49.     # bejárom a data listat
  50.     for array in data:
  51.         # csinálok az adott listából egy prím only listat
  52.         primes_only_list = get_primes(array)
  53.         # ez a változó fogja tartalmazni a kiíratott sor tartalmat
  54.         string_to_write = ""
  55.         # Ha üres a lista, azaz nincs benne prím:
  56.         if len(primes_only_list) == 0:
  57.             # akkor "NOTHING"-ot tárolok el benne
  58.             string_to_write = "NOTHING"
  59.         else:
  60.             # Ha nem, akkor bejárom a listát, majd
  61.             for prime in primes_only_list:
  62.                 # "(adott prím), " formában hozzáfűzöm a kiíratós változóhoz
  63.                 string_to_write += f"{prime}, "
  64.  
  65.         # Ha nothing az értéke, akkor kiíratom, ha nem:
  66.         if string_to_write != "NOTHING":
  67.             # akkor az utolsó 2 karaktert levágom róla, ez a sor végi felesleges: ", "
  68.             print(string_to_write[:-2])
  69.         else:
  70.             print(string_to_write)
  71.  
  72.  
  73. if __name__ == "__main__":
  74.     main()
  75.  
Advertisement
Add Comment
Please, Sign In to add comment