-3

so i made a small password strength tester for me, my friends and my family, as seen here:

import re
strength = ['You didnt type anything','Terrible','weak sause','avarage','Good!','Very Strong', 'THE FORCE IS STRONG WITH THIS ONE']
score = 1
password=(raw_input("please type in the password you would like rated:"))

if len(password) < 1:
      print strength[0]
if len(password) >=1 and len(password)<=4:
      print strength[1]
else:
    print ""

if len(password) >=7:
    score+=1
    print "password was made stronger by not being short"
else:
    print "Your password is really short, concider making it longer"

if len (password) >=10:
    score+=1
    print "password was made stronger by long"
else:
    print "An even longer password would make it stronger"

if re.search('[a-z]',password) and re.search('[A-Z]', password):
    score+=1
    print "password was made stronger by having upper & lower case letters"
else:
    print "Indlucing both upper and lower case letters will make your password stronger"

if re.search('[0-9]+', password):
    score+=1
    print "Password was made stronger by using numbers"
else:
    print "Using numbers will make your password stronger"

if re.search('[.,!,@,#,$,%,^,&,*,?,_,~,-,£,(,)]',password):
    score+=1
    print "Password was made stronger by using punctuation marks and characters"
else:
    print "Using punctuation marks and characters will make the password stronger"

print "\n final password rating is:"
print strength[score]

what i was hoping to do is:

1st - add color to the comments i've given the user about the content of their password, good comments such as the: "password was made stronger by using numbers" will have a green output, while constructive feedback such as the "using numbers will make your password stronger" will have a red output, making it easier for the user to spot the pros and cons of his password

2nd - i was wondering, if it works the same, can i color certain items in my above "strength" list? making the first two red, the middle pair yellow and the last pair green?

ty!

Giladiald
  • 857
  • 3
  • 9
  • 17
  • hey buddy - i actually went to that question but since it seemed like color settings on a blank sheet i didnt really understand how to incorporate it into specific lines in an already made code. – Giladiald Dec 31 '13 at 22:31
  • Spelling errors...if you care.... sause = sauce, avarage = average, and concider = consider – Josh Dec 31 '13 at 22:31
  • i do care, thank you! its just a quick thing i made in a few mins - didn't spell check yet. – Giladiald Dec 31 '13 at 22:34

3 Answers3

3

IDLE's console does not support ANSI escape sequences, or any other form of escapes for coloring your output.

You can learn how to talk to IDLE's console directly instead of just treating it like normal stdout and printing to it (which is how it does things like color-coding your syntax), but that's pretty complicated. The idle documentation just tells you the basics of using IDLE itself, and its idlelib library has no documentation (well, there is a single line of documentation—"(New in 2.3) Support library for the IDLE development environment."—if you know where to find it, but that isn't very helpful). So, you need to either read the source, or do a whole lot of trial and error, to even get started.


Alternatively, you can run your script from the command line instead of from IDLE, in which case you can use whatever escape sequences your terminal handles. Most modern terminals will handle at least basic 16/8-color ANSI. Many will handle 16/16, or the expanded xterm-256 color sequences, or even full 24-bit colors. (I believe gnome-terminal is the default for Ubuntu, and in its default configuration it will handle xterm-256, but that's really a question for SuperUser or AskUbuntu.)

Learning to read the termcap entries to know which codes to enter is complicated… but if you only care about a single console—or are willing to just assume "almost everything handles basic 16/8-color ANSI, and anything that doesn't, I don't care about", you can ignore that part and just hardcode them based on, e.g., this page.

Once you know what you want to emit, it's just a matter of putting the codes in the strings before printing them.

But there are libraries that can make this all easier for you. One really nice library, which comes built in with Python, is curses. This lets you take over the terminal and do a full-screen GUI, with colors and spinning cursors and anything else you want. It is a little heavy-weight for simple uses, of course. Other libraries can be found by searching PyPI, as usual.

abarnert
  • 354,177
  • 51
  • 601
  • 671
2

If your console (like your standard ubuntu console) understands ANSI color codes, you can use those.

Here an example:

print ('This is \x1b[31mred\x1b[0m.')

You can also use 'clrprint' module which works for idle, terminal and PowerShell too

pip install clrprint

from clrprint import *
clrhelp() # print's available colors and usage

user_input = clrinput("input please: ",clr='r') # just like input() [color is red]
clrprint('your text',user_input,clr='green') # just like print() 
Hyperboreus
  • 31,997
  • 9
  • 47
  • 87
-1

being overwhelmed by being VERY NEW to python i missed some very simple and useful commands given here: Print in terminal with colors using Python? -

eventually decided to use CLINT as an answer that was given there by great and smart people

Community
  • 1
  • 1
Giladiald
  • 857
  • 3
  • 9
  • 17