In this library:
text_data(val)
translatesval
to computer data typescolorcode()
returns the selected color in hex
Can you please tell me how I can make it better?
from tkinter.colorchooser import askcolor
def text_data(text):
texti = []
binary = []
ordv = []
hexadecimal = []
octal = []
i = 0
while i < len(text):
j = ord(text[i])
k = bin(ord(text[i]))
l = hex(ord(text[i]))
m = oct(ord(text[i]))
k = k[2:]
l = l[2:]
m = m[2:]
print(text[i], " ", j, " ", k, "", l, "", m)
binary.append(k)
ordv.append(j)
hexadecimal.append(l)
texti.append(text[i])
octal.append(m)
i += 1
print("\n")
print(binary)
print("\n")
print(ordv)
print("\n")
print(hexadecimal)
print("\n")
print(octal)
def colorcode():
return askcolor()[1]
print(colorcode())
2 Answers 2
Instead of
i = 0 while i < len(text): j = ord(text[i]) ... ... ... i += 1
and using text[i]
for accessing individual elements (which is NOT a Pythonic way).
Get rid of i
and write simply
for c in text:
j = ord(c)
...
...
...
j = ord(text[i]) k = bin(ord(text[i])) l = hex(ord(text[i])) m = oct(ord(text[i]))
After performing the first of those commands is ord(text[i])
already in the variable j
, isn't it? So why not reuse it in the rest of them:
for c in text:
j = ord(c)
k = bin(j)
l = hex(j)
m = oct(j)
Instead of
print(text[i], " ", j, " ", k, "", l, "", m)
use the format()
method and replacement fields {}
:
print("{} {} {} {} {}".format(text[i], j, k, l, m))
What about following the PEP 8 -- Style Guide for Python Code?
This style guide is about consistency. Consistency with this style guide is important.
Your code will become
from tkinter.colorchooser import askcolor
def text_data(text):
texti = []
binary = []
ordv = []
hexadecimal = []
octal = []
i = 0
while i < len(text):
j = ord(text[i])
k = bin(ord(text[i]))
l = hex(ord(text[i]))
m = oct(ord(text[i]))
k = k[2:]
l = l[2:]
m = m[2:]
print(text[i], " ", j, " ", k, "", l, "", m)
binary.append(k)
ordv.append(j)
hexadecimal.append(l)
texti.append(text[i])
octal.append(m)
i += 1
print("\n")
print(binary)
print("\n")
print(ordv)
print("\n")
print(hexadecimal)
print("\n")
print(octal)
def colorcode():
return askcolor()[1]
print(colorcode())
Note particularly surrounding your function definitions with 2 blank lines.
(You may check it online: PEP8 online - as your original code, as this one.)
text_data()
, and could you provide an example? \$\endgroup\$