gpt4 book ai didi

Python - 当我使用递归时,如何清除字符串中的尾随空格?

转载 作者:太空宇宙 更新时间:2023-11-03 16:01:14 28 4
gpt4 key购买 nike

我对编程相当陌生,Python 是我的第一语言。我正在自学,所以也许我错过了一些东西。抱歉,如果我无法正确表达我的问题。

我编写了一个函数,它接受 0-99 之间的任何数字,并根据字典将其转换为普通话。这是函数:

trans = {'0':'ling', '1':'yi', '2':'er', '3':'san', '4': 'si','5':'wu', '6':'liu', '7':'qi', '8':'ba', '9':'jiu', '10': 'shi'}

def convert_to_mandarin(us_num, flag = True):
'''
us_num, a string representing a US number 0 to 99
returns the string mandarin representation of us_num
'''
if len(us_num) == 1:
if us_num != '0':
return trans[us_num]
elif flag:
return trans[us_num]
else:
return '\b'
elif len(us_num) > 1:
if us_num[0] == '1':
return trans['10'] +' '+ convert_to_mandarin(us_num[1:], False)
else:
return trans[us_num[0]] + ' ' + trans['10'] + ' ' + convert_to_mandarin(us_num[1:], False)
else:
return convert_to_mandarin(us_num[:-1], False) + trans[us_num[-1]]

但是对于以 0 结尾的数字,返回的字符串会带有尾随空格。例如,如果 n = Convert_to_mandarin('10') 那么它返回 n = 'shi '但我希望它是 n = 'shi'那么如何去掉尾随空格呢?

最佳答案

您插入一个空格并尝试使用退格键将其删除。但这对于文件或调试来说没有好处。

不要在返回退格键的地方返回任何内容,然后使用 str.rstrip 删除添加的字符串以删除尾随空格:

trans = {'0':'ling', '1':'yi', '2':'er', '3':'san', '4': 'si','5':'wu', '6':'liu', '7':'qi', '8':'ba', '9':'jiu', '10': 'shi'}

def convert_to_mandarin(us_num, flag = True):
'''
us_num, a string representing a US number 0 to 99
returns the string mandarin representation of us_num
'''
if len(us_num) == 1:
if us_num != '0':
return trans[us_num]
elif flag:
return trans[us_num]
else:
return ''
elif len(us_num) > 1:
if us_num[0] == '1':
return (trans['10'] +' '+ convert_to_mandarin(us_num[1:], False)).rstrip()
else:
return (trans[us_num[0]] + ' ' + trans['10'] + ' ' + convert_to_mandarin(us_num[1:], False)).rstrip()
else:
return convert_to_mandarin(us_num[:-1], False) + trans[us_num[-1]]

(有时事后修正比试图找出如何避免问题更容易,特别是递归。请注意,如果没有进行替换,rstrip 返回相同的字符串,因此开销可以忽略不计)

关于Python - 当我使用递归时,如何清除字符串中的尾随空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40317229/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com