2015-11-29 2 views
-1

Très bien, ce que j'essaie de faire est d'obtenir ce programme pour demander à l'utilisateur une entrée pour quitter, courir au hasard, ou effacer ce qui a déjà été dessiné et courir de nouveau au hasard. J'ai besoin d'aide pour obtenir mes entrées (appelées "message") pour exécuter les options "w" et "e" jusqu'à présent, tout ce qu'il fait est dessiner une nouvelle course aléatoire. (Je peux juste avoir la mauvaise commande de tortue, je ne pourrais pas comprendre dehors). Je crois que j'utilise les mauvais mots (if, while, elif) pour que le menu fonctionne correctement. Je pense aussi que la fonction jumpto ne fonctionne pas ou que je la réinitialise dans mon autre fonction.Je ne peux pas répéter ou supprimer

import turtle as t 
import random as r 
count=0 
t.speed(0) 
x=r.randint(1,100) 
y=r.randint(1,100) 
#---------------------------------------- 
""" sets the turtle to a new starting point""" 
def jumpto(x,y): 
    t.penup() 
    t.goto(x,y) 
    t.pendown() 
    return None 

def randomrun(): 
    """runs turtle around 1000 steps randomly""" 

    count=0 
    while count <1000: 
     count+=1 
     t. forward (6) 
     t.left(r.randint(0,360))#360 degree choice of rotation 
    t.dot(10)#puts a dot at the end of the run of lines 
    count=0#resets count so it can do it again 
    x=r.randint(1,100) 
    y=r.randint(1,100) 
    message= input("q to quit \nw to walk randomly for 1000 steps \ne to erase screen and walk randomly ") 
    return message 
#------------------------------------------- 
message= input("q to quit \nw to walk randomly for 1000 steps \ne to erase screen and walk randomly ") 

if message =="w": 
    randomrun() 
    jumpto(x,y) 

if message == "q": 
    print(" have a nice day") 

if message== "e": 
    t.clear() 
    randomrun() 
    jumpto(x,y) 

Répondre

1

Le return de randomrun est ignoré. Quoi qu'il en soit, répéter l'invite de saisie est une mauvaise idée. Retirez-le, et le return, de randomrun et se terminent par une boucle input.

while True: 
    message = input("q to quit\n" # use implicit string joining 
        "w to walk randomly for 1000 steps\n" 
        "e to erase screen and walk randomly\n" 
        "> ")[:1].lower() # forgive non-exact input 
    if message == "q": 
     print("Have a nice day!") 
     break 
    elif message =="w": 
     randomrun() 
     jumpto(x,y) 
    elif message == "e": 
     t.clear() 
     randomrun() 
     jumpto(x,y) 
    else: 
     print("Input not recognized; try again.") 
+0

Merci bien! seul problème est, la première fois que l'entrée est entrée rien ne se passe et il demande une nouvelle entrée. puis fonctionne –

+1

Cela me laisse perplexe. Sur Win 10 avec la version 3.5.0, le code fonctionne correctement lorsqu'il est exécuté à partir de IDLE. Courir, entrez w dans le shell à l'invite, regardez la marche aléatoire. –

+1

Fonctionne également lorsqu'il est exécuté à partir de la ligne de commande. Je dois cliquer sur la console ou sur le shell pour changer de focus afin que la saisie soit acceptée. (Pourquoi mélanger le texte et les interfaces utilisateur graphiques n'est pas si bon.) Mais ce n'est pas ce que vous décrivez. –