J'ai rencontré un petit problème aujourd'hui. Je dois écrire un programme pour convertir les noms anglais irréguliers de la liste en [mettre en majuscule la première lettre et le reste en minuscule]
L'idée initiale était d'écrire une fonction. pour convertir chaque nom en majuscules. Pour traiter une chaîne de nom [str], comment utiliser la carte pour le traitement par lots
Je dois dire que l'idée générale est correcte, mais il y a quelques problèmes dans le traitement des détails.
Au début, j'ai écrit la fonction de traitement de nom comme ceci :
[python] view plain copy def change (name) result = name[0].upper() for a in name[1:len(name)]: result = result + a.lower()
Puis lors de l'exécution, une erreur sera signalée
[python] view plain copy E:\PythonFile>python practice.py File "practice.py", line 6 for a in name(1:len(name)-1) : ^ SyntaxError: invalid syntax E:\PythonFile>python practice.py Traceback (most recent call last): File "practice.py", line 11, in <module> name_li = map (change, name_list) File "practice.py", line 6, in change for a in name(1,len(name)-1) : TypeError: 'str' object is not callable E:\PythonFile>python practice.py Traceback (most recent call last): File "practice.py", line 9, in <module> name_li = map (change, name_list) File "practice.py", line 5, in change name[0] = name[0].upper() TypeError: 'str' object does not support item assignment E:\PythonFile>python practice.py Traceback (most recent call last): File "practice.py", line 10, in <module> name_li = map (change, name_list) File "practice.py", line 6, in change name[0] = tmp TypeError: 'str' object does not support item assignment E:\PythonFile>python Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win 32 Type "help", "copyright", "credits" or "license" for more information. >>> l = 'zxcv' >>> print l[0] z >>> print l[0].upper <built-in method upper of str object at 0x02148740> >>> print l[0].upper() Z >>> z Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'z' is not defined >>> ^Z E:\PythonFile>python practice.py Traceback (most recent call last): File "practice.py", line 9, in <module> name_li = map (change, name_list) File "practice.py", line 6, in change name[0] = tmp TypeError: 'str' object does not support item assignment E:\PythonFile>python practice.py Traceback (most recent call last): File "practice.py", line 13, in <module> name_li = map (change, name_list) File "practice.py", line 5, in change tmp = chr(name[0]) TypeError: an integer is required
Après l'avoir essayé quelques fois, j'ai trouvé que la signification générale est que le traitement des chaînes ne peut pas être effectué de cette manière, j'ai donc vérifié l'utilisation de upper() et lower() et j'ai découvert que ces deux fonctions agissent directement sur str, donc il n'est pas nécessaire de le faire. déranger.
Après modification :
[python] view plain copy # practice.py # Change the first char in every name from lower type to upper type def change (name): result = name[0:1].upper()+name[1:len(name)].lower() return result name_list = ['kzd','ysy','kcw','scr','ky'] name_li = map (change, name_list) print name_l
Résultat d'exécution :
[python] view plain copy E:\PythonFile>python practice.py ['Kzd', 'Ysy', 'Kcw', 'Scr', 'Ky']
L'erreur est que j'ai essayé d'attribuer et de remplacer des éléments dans la chaîne, ce qui n'est pas autorisé.
[Recommandations associées]
1. Tutoriel vidéo gratuit Python
2 Introduction à Python, introduction de base à Upper
3. Comment convertir les majuscules et les minuscules en python
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!