sistem_robotik/SOFTWARE/pneumatic2txt.py

75 lines
2.3 KiB
Python
Executable File

#!/usr/bin/python
import sys
import getopt
'''
input :
> -n "A+ b- C+ b+ A- C-"
output :
> Sebuah mesin membutuhkan dua aktuator pneumatic.
Silinder A dan C menggunakan silinder double-acting.
Silinder B menggunakan silinder single-acting.
Silinder mesin tersebut bergerak sesuai dengan notasi:
"A+ B- B+ A-".
'''
def main(argv):
try:
opts, args = getopt.getopt(argv, "hn:", ["notasi="])
except getopt.GetoptError:
print('parameternya nggak ketemu, coba pakai "-h" untuk selengkapnya')
sys.exit(2)
main_text = []
_notasi = ""
_aktuator = ["", ""]
for opt, arg in opts:
if opt == '-h':
print(
'python pneumatic2txt.py <opt> <opt_arg> ... \n \
<opt> \n\
-n \t --notasi \t option WAJIB dengan <opt_arg> sebagai notasinya ex: "A+ b- b+ A-" \
\t \t \t \t \t upper/lower-case menandakan silinder double/single-acting \
')
sys.exit()
elif opt in ("-n", "--notasi"):
_notasi = arg
# Menghitung, memilah, dan menata Aktuator
for c in _notasi:
if (c.isalpha() & ("".join(_aktuator).find(c) == -1)):
_aktuator[0 if c.isupper() else 1] += c
main_text.append("Sebuah mesin membutuhkan {} aktuator pneumatic. "
.format("".join(_aktuator).__len__()))
for _ak in _aktuator:
if(_ak.__len__() != 0):
main_text.append("\nSilinder {}{}menggunakan silinder {}-acting. "
.format(
"".joinwxHexEditor(
["{}, ".format(_c) for _c in _ak[0:(_ak.__len__()-1)]])
if _ak.__len__() > 1
else _ak.upper(),
"dan {} ".format(list(_ak).pop())
if _ak.__len__() > 1
else " ",
"double" if _ak.isupper() else "single"
))
main_text.append("\nSilinder mesin tersebut bergerak sesuai dengan notasi: \n\"{}\"."
.format(_notasi.upper()))
print("".join(main_text))
if __name__ == "__main__":
main(sys.argv[1:])