2016-10-10 4 views
-2

Dans ce programme, je dois demander à l'utilisateur What is your name?, puis répondre en imprimant un message d'accueil personnalisé.Programme Python qui imprime le message d'accueil + nom entré, cas spéciaux - conditions imbriquées

En général, pour une personne nommée NAME, répondez en imprimant Hello NAME. Par exemple. Pour une personne nommée Maria, répondez en imprimant Hello Maria

Il existe cependant une règle spéciale pour Amar et Brandy. Ces deux noms devraient recevoir les salutations uniques (et des visages souriants), de telle sorte que:

  • Pour une personne nommée Amar, répondre en disant Hi Amar :)
  • Pour une personne nommée Brandy, répondre en disant Ahoy Brandy :D

La niveleuse de robot marquera seulement ma solution correcte si mes instructions d'impression correspondent EXACTEMENT ce qui a été spécifié ci-dessus.

Voici ce que j'ai essayé dans un Live Python Editor

Name = "" 
# Prompt user for user-defined information 
Name = raw_input('What is your Name? ') 
if "" = Amar: 
    print ("Hi Amar :)") 
if "" = Brandy: 
    print ("Ahoy Brandy :D") 
else: 
    print ("Hello + """) 

Ce code a renvoyé un message d'erreur en ligne quatre:

SyntaxError: invalid syntax (<string>, line 4) 

Comment puis-je améliorer ce code afin qu'il n'y ait pas d'erreurs et la programme fonctionne comme prévu?

EDIT Je fixe les erreurs sur les lignes 4 et 6, maintenant mon code ressemble à ceci:

Name = "" 
# Prompt user for user-defined information 
Name = raw_input('What is your Name? ') 
if Name == 'Amar': 
print ("Hi Amar :)") 
if Name == 'Brandy': 
print ("Ahoy Brandy :D") 
else: 
print ("Hello + """) 

Mais je suis toujours obtenir un message d'erreur:

« NameError: nom 'raw_input' n'est pas défini "

Comment définir 'raw_input'? Ne le définis-je pas en entrant un nom dans une boîte de dialogue? (Aucune boîte de dialogue montre le haut)

EDIT 2 ai appris que raw_input n'est pas compatible avec la version 3 de Python - commutées éditeur Python à la version 2. Le code fonctionne désormais pour les noms "Amar" et "Brandy" mais pas pour tout autre nom - nous avons toujours "Hello +" au lieu de "Hello Steven". Une idée de pourquoi cela se passe? La clé pour que le programme fonctionne exactement comme je le souhaitais était d'utiliser un conditionnel imbriqué - je devais mettre une instruction if dans une instruction if pour m'assurer que les deux conditions étaient remplies. Cela signifie que si le nom saisi n'est pas Amar ou Brandy, imprimez "Hello" + le nom. Si le nom saisi est Amar ou Brandy, imprimez en fonction de leurs conditions uniques.

+0

Même si une erreur de syntaxe était l'une des raisons pour lesquelles mon code ne fonctionnait pas, d'autres raisons incluaient confondre les chaînes pour les variables, comprendre comment les guillemets devraient circuler dans python et comment utiliser les instructions If imbriquées dans python. – HappyHands31

Répondre

1
if "" = Amar: 

tente d'assigner une variable nommée Amar (qui n'existe pas) à une chaîne vide (sens).

Attention à l'opérateur d'affectation = et à l'opérateur d'égalité ==.

Vous voulez vérifier si Name à égal "Amar":

if Name == 'Amar': 
+0

J'ai corrigé la ligne 4 et la ligne 6, mais maintenant je reçois le message "NameError: nom 'raw_input' n'est pas défini" ... Je sais que ce n'est pas défini car une boîte de dialogue ne s'affiche pas pour moi prénom. Une idée pourquoi? – HappyHands31

+0

@ HappyHands31 peut-être que vous utilisez python 3? python 3 a simplement 'input' au lieu de' raw_input' – Uriel

+0

Basculé vers la version 2 sur le site Web (http://www.pythontutor.com/live.html#mode=edit), toujours pas d'impression de la bonne sortie. Vous pouvez voir le code exact que j'utilise dans la section modifiée de ma question. – HappyHands31

0

if "" = Amar:

Tout d'abord, lors de la vérification de l'égalité, utilisez == au lieu de =. Deuxièmement, pourquoi vérifiez-vous une chaîne vide? "" Deuxièmement, pourquoi vérifiez-vous une chaîne vide ? Utilisez Name à la place. Troisièmement, la valeur comparée doit elle-même être entre guillemets: "Amar" au lieu de Amar.

+0

J'ai fixé la ligne 4 et la ligne 6, mais maintenant je reçois le message d'erreur "NameError: nom 'raw_input' n'est pas défini" ... Je sais que ce n'est pas défini parce qu'un boîte de dialogue ne s'affiche pas pour moi d'entrer le nom. Une idée pourquoi pas? - – HappyHands31

+0

Quelle version de Python utilisez-vous? Python 2 utilise 'raw_input', mais Python 3 utilise' input'. Et en tout cas je pense qu'il utiliserait la fenêtre de la console, pas une boîte de dialogue contextuelle. –

+0

Très bien, j'ai changé la version à 2.7. Oui, il utilise une fenêtre de console. Mais je n'imprime toujours pas la sortie correcte - vous pouvez voir le code exact que j'utilise dans la section modifiée de ma question. – HappyHands31