si input_! = 'no': NameError: le nom 'input_' n'est pas défini" quand je donne non en première ligne. Comment puis-je le corriger? - Retrouvez les réponses et les commentaires concernant cette question" />
2
votes

il montre "ligne 42, dans si input_! = 'no': NameError: le nom 'input_' n'est pas défini" quand je donne non en première ligne. Comment puis-je le corriger?

Son affichage "ligne 42, dans si input_! = 'non': NameError: le nom 'input_' n'est pas défini "erreur lorsque je saisis 'no'

  1. Le code est:

    def rock_paper_scissors():
        comp_score = your_score = 0
        y,z="This is a rockpaper scissors game. ","Do you wish to play"
        x= ["rock","paper","scissors"]
        input_=input(y+z+"?")
        if input_ == "no":
            return 
    rock_paper_scissors()
    if input_ !='no':
        a=input("Do you wanna play again?")
    

Comment puis-je y remédier? (ce n'est qu'une petite partie de l'ensemble du programme mais je pense que cela devrait faire l'affaire ...)


0 commentaires

3 Réponses :


0
votes

La variable input_ est initialisée à l'intérieur de la fonction rock_paper_scissors () ce qui signifie qu'en dehors de celle-ci (la portée de la fonction) n'est pas définie. Nous devons donc le mettre dans une fonction ou rendre input_ global.

def rock_paper_scissors():
    comp_score = your_score = 0
    y, z = "This is a rock paper scissors game. ", "Do you wish to play"
    x= ["rock", "paper", "scissors"]
    input_=input(y + z + "?")
    if input_ == "no":
       return
    else: # no need for: if input_ != "no"
       a = input("Do you wanna play again?")
rock_paper_scissors()

J'espère que cela vous aidera.


0 commentaires

0
votes

Voici mon point de vue, il reste encore du travail, il est fonctionnel ...

# Tested via Python 3.7.4 - 64bit, Windows 10
# Author: Dean Van Greunen
# License: I dont care, do what you want

####################################
# Some Defines
####################################

# imports
import random

# global vars
comp_score = 0
your_score = 0
input_ = ''
ai_input = ''

# strings
string_1 = 'This is a rockpaper scissors game.'

question_1 = 'Do you wish to play? '
question_2 = 'Enter your move: '
question_3 = 'Do you wanna play again? '

string_4 = 'Valid Moves: '
string_5 = 'Thank you for playing!'

string_6 = 'Scores: Player {0} V.S. AI {1}'

yes = 'yes'
no = 'no'

# vaild moves
moves = ["rock","paper","scissors"] 

####################################
# Code Setup
####################################

def displayWinner(player_move_str, ai_move_str):
    # Vars
    winner = ''
    tie = False
    # Winner Logic
    if player_move_str == ai_move_str:
        tie = True
    elif player_move_str == 'paper' and ai_move_str == 'rock':
        winner = 'Player'
    elif player_move_str == 'scissor' and ai_move_str == 'rock':
        winner = 'AI'
    elif player_move_str == 'rock' and ai_move_str == 'paper':
        winner = 'AI'
    elif player_move_str == 'scissor' and ai_move_str == 'paper':
        winner = 'Player'
    elif player_move_str == 'rock' and ai_move_str == 'scissor':
        winner = 'Player'
    elif player_move_str == 'paper' and ai_move_str == 'scissor':
        winner = 'AI'

    # display Logic
    if tie:
        print('It Was A Tie!')
    else:
        global your_score
        global comp_score
        if winner == 'AI':
            comp_score = comp_score + 1
        elif winner == 'Player':
            your_score = your_score + 1
        print(winner + ' Won!')

def start():
    global your_score
    global comp_score
    print(string_1)
    print(string_6.format(your_score, comp_score))
    input_ = input(question_1)
    if input_ == yes:
        print(string_4)
        [print(x) for x in moves]# make sure input is valid.
        input_ = input(question_2) 
        ai_input = random.choice(moves) # let AI pick move
        print('AI Picked: ' + ai_input)
        displayWinner(input_, ai_input)
    input_ = input(question_3) # Play Again?
    if input_ == yes:
        start() # Restart Game (Recursive Call)
    else:
        print(string_5) # Thank you Message

####################################
# Game/Script Entry Point/Function
####################################

start()

 exemple d'exécution

p >


0 commentaires

0
votes

Merci à tous. Correction de mon programme. Maintenant, ça va comme:

    import time
    import random
    input_ =""
    def rock_paper_scissors():
        comp_score = your_score = 0
        y,z="This is a rockpaper scissors game. ","Do you wish to play"
        x= ["rock","paper","scissors"]
        global input_

        input_=input(y+z+"?")
        if input_ == "no":
            return
        max_score=("Enter max score : ")
        while True:
            input_=input("Enter your choice among rock, paper and scissors ('stop' to                 
    quit):")
            if input_ not in x and input_!='stop'and input_ != 'enough':
                print("Invalid answer. Are you blind? Pick one from the 3.")
                continue
            n = random.randint(0,2)
            k=x[n]
            if n<2:
                if input_==x[n+1]:
                    your_score+=1
                elif input_==k:
                    pass
                else:
                    comp_score+=1
            else:
                if input_=="paper":
                    comp_score+=1
                elif input_=="rock":
                    your_score+=1
                elif input_=="scissors":
                     pass
                else:
                    pass
            if input_!="stop" and input_ != "enough":
                print(3)
                time.sleep(1.5)
                print(2)
                time.sleep(1.5)
                print(1)
                time.sleep(1.5)
                print("Your choice : "+input_ +"\nComputers move : "+k)
            elif input_=="stop" and input_=="enough":
                input_=input("Play again?")
            if (your_score == max_score or comp_score==max_score) or (input_=="stop"                 
    or input_=="enough"):
                print("Your score is : ",your_score)
                print("AI's score is : ",comp_score)
                break
    rock_paper_scissors()
    if input_ !='no':
        a=input("Do you wanna play again?")
        if a =="yes":
    rock_paper_scissors()
    print("k.bye! \n :(")


0 commentaires