为了账号安全,请及时绑定邮箱和手机立即绑定

在 for 循环中使用 if...else 返回一个字符串

在 for 循环中使用 if...else 返回一个字符串

一只萌萌小番薯 2022-05-24 13:25:12
所以在这里我试图将字符串转换' ABcsad f!,'为字符串'abcsadf',所以基本上我试图将空格和非 alpha 替换为 '' 但我的代码根本不起作用......s = ' ABcsad f!,'def norm(s):    b=''    i=0    for i in range(0,len(s)+1):        if (s[i].isalpha() is False) or (s[i].isspace() is False) :            return b+=''        else:            return b+=s[i]        i = i+1   print(norm(s))谁能告诉我哪里出错了?
查看完整描述

3 回答

?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

试试这个 :


s = ' ABcsad f!,'

def norm(s):

    return ''.join(i for i in s.lower() if i.isalpha())

print(norm(s))

输出:


'abcsadf'


查看完整回答
反对 回复 2022-05-24
?
喵喔喔

TA贡献1735条经验 获得超5个赞

这是你出错的地方

  1. 您将 return 放在 for 循环中。Return 退出整个norm函数,而不是让 for 循环完成。它需要搬到外面。

  2. len(s) + 1导致超出范围的错误。它应该只是len(s)

  3. 当您要删除空格时,s[i].isspace()应检查是否为真。

  4. 如果你想要所有的小写,你需要s[i]s[i].lower()

  5. 您可以使用b += ...但不能在其自己的返回语句中使用它。无论如何,这无关紧要,因为您不应该在那里使用 return 。

def norm(s):

    b=''

    for i in range(0,len(s)):

        if (s[i].isalpha() is False) or (s[i].isspace() is True):

            b += ""

        else:

            b += s[i].lower()

        i = i+1

    return b


s = ' ABcsad f!,'

print(norm(s))


查看完整回答
反对 回复 2022-05-24
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

可能与正则表达式:


import re


mystring = ' ABcsad f!,'

print (re.sub('[^A-Za-z0-9]+', '', mystring)).lower()

输出:


abcsadf


查看完整回答
反对 回复 2022-05-24
  • 3 回答
  • 0 关注
  • 138 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号