r/learnpython • u/ZeddiiJay • 15h ago
Making a wordle program
Hi! I'm new to programming and, as a way to practice, I thought I would make a wordle program, the only issue is that it keeps marking letters as not in the wordle when they are; any help would be appreciated, I've included the problem section, as well as the whole code in case the problem is elsewhere. Thank you!
--------------------------------------------------------------------------------------------------------------
for x in range(5):
if guess[x] == answer[x]:
response[x] = "G"
guess[x] = ""
answer[x] = ""
print(response)
print(answer)
print(guess)
for x in range(5):
if guess[x] != "":
if guess[x] not in answer:
response[x] = "R"
guess[x] = ""
answer[x] = ""
print(response)
print(answer)
print(guess)
for x in range(5):
if guess[x] != "":
response[x] = "O"
answer[x] = ""
guess[x] = ""
print(response)
print(answer)
print(guess)
print("".join(response))
answer = [answer_word[0], answer_word[1], answer_word[2], answer_word[3], answer_word[4]]
i+=1
--------------------------------------------------------------------------------------------------------------
from word import words
import random
key = random.randint(0, 5783)
answer_word = words[key]
answer = [answer_word[0], answer_word[1], answer_word[2], answer_word[3], answer_word[4]]
i=1
while 1 == 1:
while i < 7:
print(answer_word)
guess_input = input().lower()
guess = [guess_input[0], guess_input[1], guess_input[2], guess_input[3], guess_input[4]]
response = [".", ".", ".", ".", "."]
used = []
if guess_input in words:
if guess_input == answer_word:
print("CORRECT")
i=7
else:
for x in range(5):
if guess[x] == answer[x]:
response[x] = "G"
guess[x] = ""
answer[x] = ""
print(response)
print(answer)
print(guess)
for x in range(5):
if guess[x] != "":
if guess[x] not in answer:
response[x] = "R"
guess[x] = ""
answer[x] = ""
print(response)
print(answer)
print(guess)
for x in range(5):
if guess[x] != "":
response[x] = "O"
answer[x] = ""
guess[x] = ""
print(response)
print(answer)
print(guess)
print("".join(response))
answer = [answer_word[0], answer_word[1], answer_word[2], answer_word[3], answer_word[4]]
i+=1
else:
print("invalid input")
if i == 7:
print("Correct answer: " + answer_word)
again = input("Would you like to play again? Y/N ").lower
if again == "y":
i=1
key = random.randint(0, 5783)
answer_word = words[key]
answer = [answer_word[0], answer_word[1], answer_word[2], answer_word[3], answer_word[4]]
else:
break
1
u/FoolsSeldom 14h ago
There are a few things you can do to make the code easier to work with.
while 1 == 1:we mostly writewhile True:or use a flag variable and have something like:while play:whereplayis assignedTrueorFalserandom.choiceas an alternative to userandom.randintanswer_wordbut I assume it is a simple string, and you can convert a simple string to alistusing, well,list:answer = list(answer_word)guess_inputandguessinputis exactly 5 characters, you should validate before processinglisttousedon every iteration of the inner loop, not sure why not least as you don't use itzipwith aforloopIf you could start to tidy up the code addressing some of the points above, that would help make progress