2015-12-04 2 views
-2

Ma première question ici ...Python Comment vérifier si l'entrée de l'utilisateur est une chaîne?

Je veux savoir comment vérifier si l'entrée de l'utilisateur est une chaîne. Si ce n'est pas un message devrait apparaître. Sinon, la réponse devrait être acceptée. Voici ce que je (je suis à la recherche de la solution la plus simple s'il vous plaît):

try: 
    name=str(raw_input("What is your name? ")) 
except: 
    print("Your name must consist of letters only") 
else: 
    print("Thank you for entering your name.") 
+0

double possible de [Comment puis-je vérifier si une chaîne contient des lettres de l'alphabet?] (Http : //stackoverflow.com/questions/9072844/how-can-i-check-if-a-string-contains-any-letters-from-the-alphabet) –

+0

Voici quelque chose d'intéressant à lire si vous voulez valider des noms : http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/ –

+0

'raw_input' renvoie toujours une chaîne, donc vous n'avez rien à faire ;-) as-tu signifie demander "comment vérifier si l'entrée de l'utilisateur ne contient que personnages"? – Kevin

Répondre

3

str.isalpha() vérifie si tous les caractères de la chaîne sont alphabétique et il y a au moins un caractère. Alors

name=str(raw_input("What is your name? ")) 
if not name.isalpha(): 
    print("Your name must consist of letters only") 
else: 
    print("Thank you for entering your name.") 

Cependant, cela ne fonctionnera pas si name est « Homer Simpson » (avec un espace) qui est entrée valide pour name.

Et n'oubliez pas this !!!

1

Qu'en est-il une affirmation avec le chèque de lettres non-ascii dans la chaîne, semblable à here,

import string 
try: 
    name = raw_input("What is your name? ") 
    assert any([char not in string.ascii_letters for char in name]) is False 
except AssertionError: 
    print("Your name must consist of letters only") 
else: 
    print("Thank you for entering your name.") 
+0

Ok, maintenant, comment vérifiez-vous les caractères qui ne sont pas des lettres ou des chiffres, comme "~"? – Kevin

+0

Que faire si 'name' contient', 'ou' & '? – Psytho

+0

Bon point, je suppose que la chaîne voudrait tout sauf des nombres. J'ai changé pour vérifier toutes les lettres ASCII. Si le nom a un accent, etc., il peut être nécessaire de l'étendre (par exemple en utilisant 'string.printable' au lieu de' string.ascii_letters'). –