从错误中学python(1) —— 规范化英文名字

题目

利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入:[‘adam’, ‘LISA’, ‘barT’],输出:[‘Adam’, ‘Lisa’, ‘Bart’]:

题目来源——致敬廖学峰

定义函数法

错误的尝试

def normalize(name):
    name=name.lower()
    name[0]=name[0]+‘A‘-‘a‘
    return name

这里犯了一个错误,主要是c、c++的习惯思维,认为’A’,’a’这种写法就是单个字符了,但是我感觉在python中没办法表示单个字符了,即使用下标的方法,依然是一个子字符串。

修正为

def normalize(name):
    name=name[0].upper()+(name[1:]).lower()
    return name

使用了切片的操作

继续简化

因为题中并没有让你改变输入的参数,同时减少一行能体现python代码短小的特点

def normalize(name):
    return name[0].upper()+(name[1:]).lower()

调用函数

>>> L1=[‘adam‘, ‘LISA‘, ‘barT‘]
>>> map(normalize,L1)
<map object at 0x0000000003B45C88>
>>> L1
[‘adam‘, ‘LISA‘, ‘barT‘]

这里map函数会把L1中每个元素使用normalize函数进行处理,并把返回值放在一起作为一个iterable类型的集合(map类型),所以不能输出

>>> L2=list(normalize,L1))
>>> L2
[‘Adam‘, ‘Lisa‘, ‘Bart‘]

lambda函数法

对于这种比较简单的输入输出型函数,可以使用lambda函数的方法用匿名函数来减少代码量,而且结果更加直观

>>> L2=list(map(lambda name:name[0].upper()+(name[1:]).lower(),L1))
>>> L2
[‘Adam‘, ‘Lisa‘, ‘Bart‘]

版权声明:本文为博主原创文章,欢迎转载和分享,但请声明出处http://blog.csdn.net/zhzz2012

时间: 2024-08-30 03:19:42

从错误中学python(1) —— 规范化英文名字的相关文章

从错误中学python(4)——最小公约数与辗转相除法

题目 给你两个正整数a和b, 输出它们的最大公约数 辗转相除法 辗转相除法的步骤 def gcd(b,a): b,a=a,b%a if a==0: return b else: return gcd(b,a) 即就是取如果b与a不能整除,就取a和b除以a的余数再考察是个递归的思路. 理解 可以从两个角度去理解辗转相除法 1.举例法 一张长方形纸,长2703厘米,宽1113厘米.要把它截成若干个同样大小的正方形,纸张不能有剩余且正方形的边长要尽可能大.问:这样的正方形的边长是多少厘米? 解答: 可

从错误中学python(2)————字符串转浮点数

题目 自己编写函数:利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数123.456: 题目来源--致敬廖雪峰 解决过程 初步的解决方法 def str2float(s): def char2num(s): return {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}[s] #这事实上是一个字典 index_point=s.find('.') if index_point==-

src/MD2.c:31:20: 错误:Python.h:没有那个文件或目录

一.前言 在CentOS 上安装fabric时出现问题,首先已安装pip, 用pip执行以下命令pip install 出现以下问题 [plain] view plain copy [[email protected] /]$ sudo pip install fabric Requirement already satisfied (use --upgrade to upgrade): fabric in /usr/lib/python2.6/site-packages/Fabric-1.3.

英文名字的昵称(亲切的叫法)

不管是古代中国,还是日本,美国,通过对一个人的称谓可以透露彼此距离的远近. 中国人包括学生和学者来到美国,开始不知道如何称呼对方, 大部分的美国人不希望称全名,不希望称先生,当然,外交礼仪除外. 同事同学直接就省下姓,直接称名.比尔·盖茨会让你叫他比尔.更近些的人,就可能让你称呼昵称,比如叫 Thomas 的告诉你就叫他 Tom,叫Anthony 的就称他 Tony. 但是要有条件: 1.是大家都这样称呼, 2.他希望你这样称呼. 1. 从名称到昵称:缩写 Abraham → Abe,Antho

从代码中学Python语法二(持续更新)

# -*- coding:utf-8 -*- __author__ = 'hunterhug' #x = int(input("请输入一个数:\n")) x=5 if x < 0: print("<0") elif x == 0: print("0") else: print(">0") str=['fds', 'sdfsdf', '2',"h"] for k in str: print(

从代码中学Python语法(持续更新)

# -*- coding:utf-8 -*- __author__ = 'hunterhug' print("你好") #打印 hello = "This 'is' \"a rather long string containing\n several lines of text just as you would do in C.\n Note that whitespace at the beginning of the line is\n significan

从代码中学Python语法三(持续更新)

# -*- coding:utf-8 -*- from collections import deque __author__ = 'hunterhug' mylist = [2, 3, 4, 5] print(mylist) mylist.append(3) # 添加元素到链尾 print(mylist) mylist[mylist.__len__():]=[5] print(mylist) mylist.extend(mylist) # 链表叠加 print(mylist) mylist.i

廖雪峰 练习 把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字

# -*- coding: utf-8 -*- #输入名字,变成首字母大写,其他字母小写的标准格式 def normalize(name): str1 = '' for i, ch in enumerate(name): if i == 0: str1 = str1 + ch.upper() #str.upper() 方法让字母转大写 else: str1 = str1 + ch.lower() #str.lower() 方法让字母转小写 return str1 # 输入: L1 = ['ada

从代码中学Python语法六(持续更新)

# -*- coding:utf-8 -*- class MyClass: """A simple example class""" i = 12345 def __init__(self, l, r): self.data = [] self.l=l self.r=r def f(self): return 'hello world' print(MyClass.i) print(MyClass.__doc__) x=MyClass(1,2)