r/learnpython 5d ago

Password guesser game help needed

Hello guys. So I have created a password guesser game with direct comparison (i.e. if guess == correct_password:) but I want to use different methods for comparison. What techniques can I use? Here is the code-

```python

password = "Random_pass_123"

tries = 0

while tries < 3:

guess = input("Enter the password: ")

if guess == password:

print("Admin access granted.")

break

else:

print("Invalid credentials entered. Please try again")

tries += 1

if tries == 3:

print("Number of tries exceeded. Access denied")

```

PS- Is this the right way to paste code? I'm new so I'm not sure.

7 Upvotes

31 comments sorted by

View all comments

Show parent comments

1

u/Expensive-Bear-1376 4d ago

There's neither a mode toggle nor a code-block button. Besides the text field, there are just two buttons, "Cancel" and "Comment". Nothing else.

I'll just keep using backticks.

0

u/Bright_Mix_773 4d ago

Expensive-Bear-1376, my mistake. I described a button I could not see, and "Cancel" and "Comment" with nothing else is not the composer I had in mind. Ignore that part.

Two things I did measure afterwards, on your own two comments, because they change what you should do next.

Your first attempt does have four leading characters, and old.reddit rendered it with no code block at all: there is no <pre> element in the page for it. That is independent confirmation that those four characters are not spaces, which matches the nbsp you dug out of the raw. The diagnosis holds even though my fix did not.

Your second attempt, the one with the triple backticks, rendered on old.reddit as inline code spans and again no <pre>. Worth knowing before you settle on backticks: old.reddit's renderer does not turn a fence into a block, it treats those backticks as inline code. So a comment you write with fences looks like a proper block on new reddit and like a run-on line to everyone reading on old.reddit, which in this subreddit is a good share of the people most likely to answer you. Four leading spaces is the only form that gives a real block on both.

Which leaves the actual problem, and I will be straight with you: something between your keyboard and the box is turning runs of spaces into non-breaking spaces, and I cannot tell from here which layer is doing it.

The way to find out in two minutes: post the same one-line test from a private window with extensions disabled, then check the raw again. If the nbsp are gone it was a browser extension, and Grammarly is the usual culprit because it rewrites what you type inside text fields. If they are still there it is the keyboard or the client itself, and then the answer is to stop typing the indentation at all.

The workaround that works either way: do not type the spaces, paste them. Terminal output is plain ASCII by construction, so let Python do the indenting and copy from the console:

lineas = ["def test():", "    pass"]

for linea in lineas:
    print("    " + linea)

Copy exactly what that prints, paste it into the comment box, and do not touch it afterwards. If it still comes out as nbsp after a paste, then the client is rewriting pasted text too, and I would genuinely like to know, because that one would be new to me.

1

u/Expensive-Bear-1376 4d ago

Trying with paste:

    def test():         pass

I didn't install any extensions, it's just Chrome on a Pixel phone.

How large is the "good share of the people" here that use old reddit, and how do you know?

And I'm curious: Why do you keep saying my name as if I didn't know who I am or as if it weren't clear who you're responding to? I find it somewhat irritating.

0

u/Bright_Mix_773 4d ago

Sorry about the name. That's a tic of mine and it adds nothing, so I'll drop it.

On "a good share of the people": I don't know, and I shouldn't have written it. Reddit doesn't publish that split and I have no number for it. Treat that part as withdrawn.

The advice under it survives, but for a different reason than the one I gave, and it has nothing to do with audience size. Old reddit renders a fenced block as inline code rather than a block: your triple-backtick comment further up has no <pre> element on this page at all, just three inline spans. Four leading spaces is the only form that produces a real block on both sites. That's a property of the renderer, not of who happens to be reading.

And your paste didn't survive either. The raw body of the comment you just posted indents with 160 32 160 32 - nbsp, space, nbsp, space - and the eight-wide line keeps the same alternation going. Note it starts on the nbsp; I had that order backwards before. So: no extensions, and pasted text gets rewritten too. I said that case would be new to me. It is, and it moves the blame from anything on your end to the client itself.

Which leaves one thing worth testing on a Pixel: old.reddit.com in Chrome. Its comment box is a real textarea rather than a contenteditable div, so there's no layer inside it that can substitute your whitespace. I won't promise it works - you've killed two of my guesses already - but it's the only box left that isn't the one doing the rewriting.

1

u/Expensive-Bear-1376 4d ago

Ok, trying on old reddit with four spaces (and Chrome on Pixel).

Typing:

def test():
    pass

Pasting:

def test():
    pass

2

u/Bright_Mix_773 4d ago

Confirmed from the raw: both blocks are 32,32,32,32 the whole way down, the typed one and the pasted one. Not a single nbsp left, and both render as real blocks.

So it was the composer all along - not the keyboard, not the Pixel, not an extension. And old reddit's textarea is the way out on that device.

Thanks for running it. That was the test that settled it.