오늘 작은 문제가 발생했습니다. 목록에 있는 불규칙한 영어 이름을 [첫 글자는 대문자, 나머지는 소문자]로 변환하는 프로그램을 작성해야 합니다.
초기 아이디어는 함수를 작성하는 것이었습니다. 각 이름을 대문자로 변환하려면 이름 문자열 [str]을 처리하려면 맵을 사용하여 일괄 처리하는 방법
대체적인 생각은 맞지만 세부 사항을 처리하는 데 몇 가지 문제가 있습니다.
처음에는
[python] view plain copy def change (name) result = name[0].upper() for a in name[1:len(name)]: result = result + a.lower()
와 같이 이름 처리 기능을 작성했는데, 실행하면
[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
오류가 발생해서 몇 번 시도해 보았는데요. 일반적인 의미는 이 방법으로는 문자열 처리를 할 수 없다는 것이므로, upper()와 lower()의 사용법을 확인해 본 결과 이 두 함수가 str에 직접 작용하는 것으로 확인되었으므로 걱정할 필요가 없습니다.
수정 후:
[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
실행 결과:
[python] view plain copy E:\PythonFile>python practice.py ['Kzd', 'Ysy', 'Kcw', 'Scr', 'Ky']
문자열에 요소를 할당하고 교체하려고 했으나 허용되지 않는 오류입니다.
[관련 추천]
위 내용은 Python의 하위 및 상위 함수 사용에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!