Nov-28-2019, 11:05 PM
(This post was last modified: Nov-28-2019, 11:52 PM by Gavinosborn.)
Hi
only been coding for about three days, so please forgive the code. could you copy and paste the below and please explain why i am going mad.
if you guess correct rabbit, works fine.
if you guess wrong letters works fine.
if you guess mixture of wrong and right letters. def_guess function returns none instead of a letter sometimes?
Basically, the below code returns None instead of a valid letter?
Thank you, sorry very new to all this.
only been coding for about three days, so please forgive the code. could you copy and paste the below and please explain why i am going mad.
if you guess correct rabbit, works fine.
if you guess wrong letters works fine.
if you guess mixture of wrong and right letters. def_guess function returns none instead of a letter sometimes?
from random import randrange, uniform import time import turtle import os #setup screen screen = turtle.Screen() screen.bgcolor("black") screen.title("Hangman") word ="RABBIT" valid_char ="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" wrong_guesses = 10 guessed_letters = 0 unique_letters = len(set(word)) wrong_letters =" " all_letters =" " answer = " " guess =" " a=0 #draw border border_pen = turtle.Turtle() border_pen.speed(0) border_pen.color("white") border_pen.penup() border_pen.setposition(-300,-300) border_pen.pendown() border_pen.pensize(3) for side in range(4): border_pen.fd(600) border_pen.lt(90) border_pen.hideturtle() #draw dashes turtle.penup() turtle.goto( 50, -250) turtle.color("white") for a in range(0, len(word)): dash_pen = turtle.Turtle() dash_pen.write("_", font=("Arial", 16, "normal", "underline")) dash_pen.penup() dash_pen.fd(20) dash_pen.pendown() dash_pen.hideturtle() def get_guess(): guess=" " answer=" " screen = turtle.Screen() answer = screen.textinput("Welcome to hangman!", "PLease enter your letter?") answer = answer.upper() len_answer = len(answer) if (answer not in valid_char or len(answer) != 1) or answer in (all_letters): get_guess() else: return answer #draw_base def draw_base(): base_pen = turtle.Turtle() base_pen.speed(0) base_pen.color("white") base_pen.penup() base_pen.setposition(-250,-250) base_pen.pendown() base_pen.pensize(3) base_pen.fd(200) base_pen.hideturtle() #draw_base def draw_pole(): pole_pen = turtle.Turtle() pole_pen.speed(0) pole_pen.color("white") pole_pen.penup() pole_pen.setposition(-150,-250) pole_pen.pendown() pole_pen.pensize(3) pole_pen.lt(90) pole_pen.fd(400) pole_pen.penup() pole_pen.hideturtle() def top_pole(): top_pen = turtle.Turtle() top_pen.speed(0) top_pen.color("white") top_pen.penup() top_pen.setposition( -150, 150) top_pen.pendown() top_pen.pensize(3) top_pen.fd(150) top_pen.penup() top_pen.hideturtle() def top_rope(): rope_pen = turtle.Turtle() rope_pen.speed(0) rope_pen.color("white") rope_pen.penup() rope_pen.setposition( 0, 150) rope_pen.pendown() rope_pen.pensize(3) rope_pen.rt(90) rope_pen.fd(50) rope_pen.penup() rope_pen.hideturtle() def head(): head_pen = turtle.Turtle() head_pen.speed(0) head_pen.color("white") head_pen.penup() head_pen.setposition(0, 42) head_pen.pendown() head_pen.pensize(3) head_pen.circle(30) head_pen.penup() head_pen.hideturtle() def body(): body_pen = turtle.Turtle() body_pen.speed(0) body_pen.color("white") body_pen.penup() body_pen.setposition(0, 40) body_pen.pendown() body_pen.pensize(3) body_pen.rt(90) body_pen.fd(120) body_pen.penup() body_pen.hideturtle() def left_leg(): leftleg_pen = turtle.Turtle() leftleg_pen.speed(0) leftleg_pen.color("white") leftleg_pen.penup() leftleg_pen.setposition(0, -80) leftleg_pen.pendown() leftleg_pen.pensize(3) leftleg_pen.rt(120) leftleg_pen.fd(80) leftleg_pen.rt(40) leftleg_pen.fd(20) leftleg_pen.penup() leftleg_pen.hideturtle() def right_leg(): rightleg_pen = turtle.Turtle() rightleg_pen.speed(0) rightleg_pen.color("white") rightleg_pen.penup() rightleg_pen.setposition(0, -80) rightleg_pen.pendown() rightleg_pen.pensize(3) rightleg_pen.rt(60) rightleg_pen.fd(80) rightleg_pen.rt(100) rightleg_pen.fd(20) rightleg_pen.penup() rightleg_pen.hideturtle() def left_arm(): leftarm_pen = turtle.Turtle() leftarm_pen.speed(0) leftarm_pen.color("white") leftarm_pen.penup() leftarm_pen.setposition(0, 10) leftarm_pen.pendown() leftarm_pen.pensize(3) leftarm_pen.rt(60) leftarm_pen.fd(80) leftarm_pen.rt(100) leftarm_pen.fd(20) leftarm_pen.penup() leftarm_pen.hideturtle() def right_arm(): rightarm_pen = turtle.Turtle() rightarm_pen.speed(0) rightarm_pen.color("white") rightarm_pen.penup() rightarm_pen.setposition(0, 10) rightarm_pen.pendown() rightarm_pen.pensize(3) rightarm_pen.rt(140) rightarm_pen.fd(70) rightarm_pen.rt(30) rightarm_pen.fd(10) rightarm_pen.penup() rightarm_pen.hideturtle() for a in range(0, len(word)): turtle.write("_", font=("Arial", 16, "normal", "underline")) turtle.penup() turtle.fd(20) turtle.pendown() turtle.penup() turtle.hideturtle() while wrong_guesses > 0: guess = get_guess() turtle.goto( 50, -250) turtle.fillcolor("blue") turtle.color("white") a=0 for a in range(0, len(word)): guess = str(guess) if guess in word[a]: turtle.write(word[a], font=("Arial", 16, "normal", "underline")) turtle.penup() turtle.fd(20) turtle.hideturtle() else: turtle.write("_", font=("Arial", 16, "normal", "underline")) turtle.penup() turtle.fd(20) turtle.pendown() turtle.penup() turtle.hideturtle() if guess in word: wrong_guesses = wrong_guesses guessed_letters +=1 all_letters += guess if guessed_letters == unique_letters: winning_msg = turtle.Turtle() winning_msg.speed(0) winning_msg.color("white") winning_msg.penup() winning_msg.setposition(-150, 180) winning_msg.write("Well Done, you guessed the word.", font=("Arial", 16, "normal")) winning_msg.hideturtle() time.sleep(5) break else: wrong_guesses -= 1 wrong_letters += guess all_letters += guess wrong_msg= turtle.Turtle() wrong_msg.speed(0) wrong_msg.color("white") wrong_msg.penup() wrong_msg.setposition(-290, -300) wrong_msg.write("Wrong letters:- ", font=("Arial", 16, "normal")) wrong_msg.setposition(-150, -300) wrong_msg.write(wrong_letters, font=("Arial", 16, "normal")) wrong_msg.hideturtle() if wrong_guesses == 9: draw_base() if wrong_guesses == 8: draw_pole() if wrong_guesses == 7: top_pole() if wrong_guesses == 6: top_rope() if wrong_guesses == 5: head() if wrong_guesses == 4: body() if wrong_guesses == 3: left_leg() if wrong_guesses == 2: right_leg() if wrong_guesses == 1: left_arm() if wrong_guesses == 0: right_arm() losing_msg = turtle.Turtle() losing_msg.speed(0) losing_msg.color("white") losing_msg.penup() losing_msg.setposition(-250, 180) losing_msg.write("Unlucky the correct word was :- ", font=("Arial", 16, "normal")) losing_msg.setposition( 50, 180) losing_msg.write(word, font=("Arial", 16, "normal")) losing_msg.hideturtle() time.sleep(5) breakSorry, didn’t realise it doesn’t paste indents:/
Basically, the below code returns None instead of a valid letter?
def get_guess(): guess=" " answer=" " screen = turtle.Screen() answer = screen.textinput("Welcome to hangman!", "PLease enter your letter?") answer = answer.upper() len_answer = len(answer) if (answer not in valid_char or len(answer) != 1) or answer in (all_letters): get_guess() else: return answer
Thank you, sorry very new to all this.