2017-10-12 10 views
0

EDIT: Après avoir joué un peu dans main(), il semble que le programme choisisse la fonction qui est appelée dans le bloc if/elif, quelle que soit l'entrée. Je ne sais pas pourquoi il a commencé à faire cela après avoir bien travailléLe programme n'appelle pas la fonction correcte en fonction de l'entrée. Aucune idée de ce qui me manque

Je suis allé encore et encore mon code, et je ne peux pas comprendre ce que je ne vois pas. C'est un jeu de séquence numérique, et il demande à l'utilisateur de choisir une difficulté entre facile et difficile. Il fonctionnait très bien à un moment donné, mais maintenant, peu importe ce qui est sélectionné, il passe en mode facile à chaque fois. Même vous frappez entrer sans aucune entrée du tout.

#main program function and difficulty selection 
def main(): 
print('-----------------------------------------------') 
print('Please choose a difficulty.') 
difficulty = str(input('(e)asy|(h)ard: ')) 
print('-----------------------------------------------') 
if difficulty == 'easy'or'e': 
    easy() 
elif difficulty == 'hard'or'h': 
    hard() 

Ensuite, j'ai une fonction pour facile et un pour dur. Hard est juste la fonction facile, avec seulement un changement à la taille de la séquence générée et rien d'autre. J'ai parcouru chaque bloc et rien n'est changé qui affecterait la fonction appelée.

Il arrive, peu importe combien de fois le jeu est joué, il doit être quelque chose de mal avec ma fonction principale()

Le reste du code est ici si cela aide, peut-être me manque quelque chose évident.

import random 
def easy(): 
    print ('Easy Mode','\n') 
    #Generates inital number, step value, and upper limit 
    num_sequence = 5 
    numbers = random.randint(1,101) 
    step = random.randint(1,20) 
    #Accumulates and prints all but last number in sequence 
    for num_generated in range (1, num_sequence): 
     print(numbers) 
     numbers = numbers + step 
    #Sets tries allowed and subtracts wrong attempts 
    guesses = 3 
    while guesses > 0: 
     user_num = int(input('Next Number: ')) 
     guesses = guesses - 1 
     if user_num != numbers: 
      if guesses == 0: 
       break 
      else: 
       print('Try Again (Attempts Remaining:', guesses,')')    
     if user_num == numbers: 
      break 

#Prints appropriate message based on game results      
    if user_num == numbers: 
     print ('Correct','\n') 
    if user_num != numbers: 
     print ('Attempts Exceeded: The answer was',numbers,'\n') 

#block for hard difficulty (same as above, sequence size changed to 4) 
def hard(): 
    print ('Hard Mode','\n') 
    num_sequence = 4 

#main program function and difficulty selection 
def main(): 
    print('-----------------------------------------------') 
    print('Please choose a difficulty.') 
    difficulty = str(input('(e)asy|(h)ard: ')) 
    print('-----------------------------------------------') 
    if difficulty == 'easy'or'e': 
     easy() 
    elif difficulty == 'hard'or'h': 
     hard() 

#block for replay selection 
replay = 'y' 
while replay == 'y': 
    main() 
    replay = input('Play again? (y)|(n): ',) 
    print ('\n') 
    if replay == 'n': 
     print('-----------------------------------------------') 
     print('Goodbye!') 
     print('-----------------------------------------------') 
     break 

dur() est le même code que la ligne facile() pour la ligne après les quelques premiers

Répondre

0

Lorsque vous faites une comparaison composé (en utilisant le ou) les deux côtés de la condition doit être complète. En d'autres termes,

if difficulty == 'easy'or difficulty == 'e': 
    easy() 
elif difficulty == 'hard'or difficulty == 'h': 
    hard() 

Sinon, vous disent « si la difficulté == « facile » >> qui est faux, puis attribuer à la difficulté« e » qui n'a pas été l'intention.

+0

C'était tout. Merci beaucoup. C'est ce que j'ai pour essayer d'être chic. – Kalivel

+0

Bien GET FANCY !! Parce que c'est comme ça qu'on apprend! Beau programme btw! – kir10s

+0

Merci. Ça te dérange si je demande ce que j'ai fait de bien? Nous sommes seulement 6 semaines en classe, donc je suis encore assez nouveau à la programmation tous ensemble. – Kalivel