75 lines
2.3 KiB
Python
Executable File
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:])
|