所以我的作业分配是从给定的字符串中删除给定名称的首字母,使用用户输入来定义变量。当我运行下面的脚本时,它只注册一个名称。
def removeChar(initials, string):
initials = initials
string = string
for char in initials:
modified = string.replace(char, "")
print modified
return modified
def getInitials(name, string):
initials = ""
for i in name.lower().split():
initials += i[0]
print initials
removeChar(initials, string)
def main():
name = raw_input("What is your name? \n")
string = raw_input("What string would you like to remove your initials from? \n")
getInitials(name, string)
这是输出:
What is your name?
John Doe
What string would you like to remove your initials from?
Arjajbian Ndigdhts
Arjajbian Nights
为什么不删除第一个首字母?
答案 0 :(得分:6)
你的问题在于:
modified = string.replace(char, "")
您始终在原始字符串上使用replace
,因此它会从原始字符串中删除每个字符并返回一个新字符。只需使用string = string.replace(char, "")
否则,您的函数将始终返回一个字符串,该字符串是删除了 last 的原始字符串。
答案 1 :(得分:0)
虽然@ juanpa.arrivillaga指出了你的问题,但还有更多的Pythonic方法可以从你的输入字符串中删除字符j
和d
;使用generator expression:
>>> input_str = "Arjajbian Ndigdhts"
>>> ''.join(c for c in input_str if c.lower() not in 'jd')
'Arabian Nights'
>>>
这可以通过迭代input_str
并仅将字符传递给{{1>} not ''.join()
或j
。
答案 2 :(得分:0)
你不需要
//gcc -fno-stack-protector -D_FORTIFY_SOURCE=0 -z norelro -z execstack -g prog2.c -o prog2
因为这并没有告诉您使这个变量与它已经相同 也 我想是这个
initials = initials
string = string
你创建了一个名为modified = string.replace(char, "")
的变量,但是后来你要说的代码是modified
而不是String
要么在顶部def中更改modified
,要么更改String to modified
,然后它会有效地工作