我在2-3小时前参加了考试。我们的老师要求我们:
1)从用户那里取一个字符串句子。
2)将字符串发送到函数。
3)我们的任务是删除空格但我们不能使用字符串函数,我们必须使用递归。
怎么了?
def deletespace(name):
if(len(name)==0):
return ""
else:
str=""
if(ord[name[0]])>chr(65) and ord(name[0])<chr(122):
return str+deletespace(name[1:])
name=input("Please enter the name..")
deletespace(name)
答案 0 :(得分:2)
您的第二个else
的{{1}}条款丢失了。在这种情况下,你会回报什么?
答案 1 :(得分:0)
测试可能已经结束,但您仍然可以从以下示例中学到一些东西:
>>> def del_char(text, char=' '):
head, *tail = text
return ('' if head == char else head) + \
(del_char(tail, char) if tail else '')
>>> def main():
name = input('Please enter your name: ')
spaceless = del_char(name)
print(spaceless)
>>> main()
Please enter your name: Arda Zaman
ArdaZaman
>>>
如果你想要一个更强大的del_char
函数版本,试试这个str_replace
函数,它可以做与第一个函数相同但具有扩展功能的函数:
def str_replace(string, old=' ', new='', count=0):
head, tail = string[0], string[1:]
if head == old:
head, count = new, count - 1
if not count:
return head + tail
return head + str_replace(tail, old, new, count) if tail else head
答案 2 :(得分:0)
我看到两个问题:
1)。在第6行中,您尝试访问ord的索引if(ord[name[0]])>chr(65) and ord(name[0])<chr(122):
,这会引发语法错误。您可能想要的是if ord(name[0])>chr(65) and ord(name[0])<chr(122):
2)。第二个else
的{{1}}案例丢失了。
答案 3 :(得分:0)
1)每次递归都会重新初始化变量。
2)你永远不会增加你的回报价值。
尝试更多类似的内容:
def removespace(str):
if len(str) == 0 : return ""
if str[0] == " ":
return removespace(str[1:])
else :
return str[0] + removespace(str[1:])
这应该依次将每个字符添加到返回值,跳过它找到的任何空格字符。
答案 4 :(得分:0)
def removewhite(string):
if len(string) == 0:
return ""
if string[0] in " :/":
return removewhite(string[1:])
else:
return string[0] + removewhite(string[1:])
string = "abcd , : def"