规范用户输入的方法
本帖最后由 paypojie 于 2022-7-1 12:40 编辑题目:利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。
题目来自于该链接 https://www.liaoxuefeng.com/wiki/1016959663602400/1017329367486080
如果不利用map()函数 很简单下面的代码即可解决问题
name = input()
def normalize(name):
return name.upper() + name.lower()
print(normalize(name))
函数normalize里面用了切片的办法 将索引为零的位置的值大写 索引为一以及一以后的位置的值小写
但是题目要求用map()函数来规范用户输入 于是 开始写代码 写的过程思路有点零散
我是这样想的 大体思路 先定义一个函数 通过函数传进来的值全部小写 再用for循环 第一次循环用普通方法将用户输入的字符串首字母大写 第二次循环及以后 用map()函数将字符串首字母之后的字母全部转换为小写 然而 实际写的过程中却是痛苦而用漫长 写了有大半个小时 (不太熟练 思维混乱 精神状态不佳 )
第一步
name = input() # 将用户的输入赋值到name变量中
第二步
def normalize(name):
# if name.isalpha() == True:
name = name.lower()
return name
这个函数的作用很简单 就是将传进来的实参全部小写 被注释的表示那行语句是多余的 可有可无 (注释语句没鸟用) 这个函数的用处 一看就知
第三步 for循环
for i in range(len(name)):
if count == 0:
l = list(name) = name.upper()
s += l
else:
l1 = (list(map(normalize,name)))
s += l1
count += 1
写到这里的时候 又新增了两个变量 count和s 一个用来计数 计数用来判断当前循环的是第几次 如果是第一次就执行if下的语句 否则执行else下的语句 s用来保存值 for循环的最后一行语句表示每循环一次 计数就加一 实际上 第一次循环执行if分支语句 第二次以及后面的n次循环就执行else分支语句 最后输出值
完整代码
name = input()
count = 0
s = ''
def normalize(name):
# if name.isalpha() == True:
name = name.lower()
return name
for i in range(len(name)):
if count == 0:
l = list(name) = name.upper()
s += l
else:
l1 = list(map(normalize,name))
s += l1
count += 1
print(s)
改写封装之后的代码
def namefunc():
name = input('请输入用户名:'); count = 0; s = ''
def normalize(name):
return name.lower()
for i in range(len(name)):
if count == 0:
l = list(name) = name.upper()
s += l
else:
l1 = list(map(normalize,name))
s += l1
continue
count += 1
print(s)
namefunc()
运行截图
略略略 有人吗 :lol 规范输入另一个用处,防止用户对网页打xss,哦忘记这是后端了,打扰了。谢谢楼主分享 skywalker0123 发表于 2022-7-1 12:52
规范输入另一个用处,防止用户对网页打xss,哦忘记这是后端了,打扰了。谢谢楼主分享
xss攻击吗 我也只是听说过 我估摸你这个是不是答非所问 zxc9989 发表于 2022-7-1 15:00
我估摸你这个是不是答非所问
不算是答非所问吧 {:1_904:}{:1_904:}
页:
[1]