吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1114|回复: 5
收起左侧

[已解决] 规范用户输入的方法

[复制链接]
甜萝 发表于 2022-7-1 12:35
本帖最后由 paypojie 于 2022-7-1 12:40 编辑

                                                     题目:  利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。


题目来自于该链接 https://www.liaoxuefeng.com/wiki/1016959663602400/1017329367486080

如果不利用map()函数 很简单  下面的代码即可解决问题
[Python] 纯文本查看 复制代码
name = input()
def normalize(name):
    return name[0].upper() + name[1:].lower()
print(normalize(name))

函数normalize里面用了切片的办法 将索引为零的位置的值大写 索引为一以及一以后的位置的值小写

但是题目要求用map()函数来规范用户输入 于是 开始写代码 写的过程思路有点零散
我是这样想的 大体思路 先定义一个函数 通过函数传进来的值全部小写 再用for循环 第一次循环用普通方法将用户输入的字符串首字母大写 第二次循环及以后 用map()函数将字符串首字母之后的字母全部转换为小写 然而 实际写的过程中却是痛苦而用漫长 写了有大半个小时 (不太熟练 思维混乱 精神状态不佳 )

第一步
[Python] 纯文本查看 复制代码
name = input() # 将用户的输入赋值到name变量中

第二步
[Python] 纯文本查看 复制代码
def normalize(name):
    # if name.isalpha() == True:
        name = name.lower()
        return name

这个函数的作用很简单 就是将传进来的实参全部小写 被注释的表示那行语句是多余的 可有可无 (注释语句没鸟用) 这个函数的用处 一看就知

第三步 for循环
[Python] 纯文本查看 复制代码
for i in range(len(name)):
    if count == 0:
        l = list(name)[0] = name[0].upper()
        s += l
    else:
        l1 = (list(map(normalize,name[i])))
        s += l1[0]
    count += 1

写到这里的时候 又新增了两个变量 count和s 一个用来计数 计数用来判断当前循环的是第几次 如果是第一次就执行if下的语句 否则执行else下的语句 s用来保存值 for循环的最后一行语句表示每循环一次 计数就加一 实际上 第一次循环执行if分支语句 第二次以及后面的n次循环就执行else分支语句 最后输出值

完整代码
[Python] 纯文本查看 复制代码
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)[0] = name[0].upper()
        s += l
    else:
        l1 = list(map(normalize,name[i]))
        s += l1[0]
    count += 1
print(s)

改写封装之后的代码
[Python] 纯文本查看 复制代码
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)[0] = name[0].upper()
            s += l
        else:
            l1 = list(map(normalize,name[i]))
            s += l1[0]
            continue
        count += 1
    print(s)
namefunc()

运行截图
QQ截图20220701123116.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 甜萝 发表于 2022-7-1 12:46
略略略 有人吗
skywalker0123 发表于 2022-7-1 12:52
规范输入另一个用处,防止用户对网页打xss,哦忘记这是后端了,打扰了。谢谢楼主分享
 楼主| 甜萝 发表于 2022-7-1 13:11
skywalker0123 发表于 2022-7-1 12:52
规范输入另一个用处,防止用户对网页打xss,哦忘记这是后端了,打扰了。谢谢楼主分享

xss攻击吗 我也只是听说过
zxc9989 发表于 2022-7-1 15:00
我估摸你这个是不是答非所问
 楼主| 甜萝 发表于 2022-7-1 18:08
zxc9989 发表于 2022-7-1 15:00
我估摸你这个是不是答非所问

不算是答非所问吧
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 09:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表