要求您输入姓名和字符串的学校作业。使用名称确定首字母并从字符串中删除首字母。打印原始名称,原始字符串,首字母和结果字符串。
我不知道该怎么办。
字符似乎没有出现在第一个函数中的“Initials are%s ...”中
无法弄清楚如何从txt中删除参数字符。
代码:
def main():
global chars, txt, fullName
fullName = raw_input("Please input your name: ")
txt = raw_input("Type in any string: ")
chars = ''
getInitials(fullName)
print "Full name is %s. Original String is %s" % (fullName, txt)
removeChars(txt,chars)
print "Initials are %s. Resulting string is %s" %(chars, txt)
def getInitials(fullName):
chars = ''.join(name[0].upper() for name in fullName.split())
return
def removeChars(txt, chars):
for char in txt:
if char in chars:
txt = txt.replace(char,'')
return txt
main()
答案 0 :(得分:0)
您错误地使用global
(通常认为这是不好的做法),如果您return
某些内容来自您的功能,那么完全没必要:
def main():
fullName = raw_input("Please input your name: ")
txt = raw_input("Type in any string: ")
chars = getInitials(fullName)
sv = removeChars(txt, chars)
print "Full name is %s. Original String is %s" % (fullName, txt)
print "Initials are %s. Resulting string is %s" % (chars, sv)
def getInitials(fullName):
chars = ''.join(name[0].upper() for name in fullName.split())
return chars
def removeChars(txt, chars):
for char in txt:
if char in chars:
txt = txt.replace(char, '')
return txt
main()
虽然removeChars
效率不高,因为字符串是不可变的,因此每个替换都会创建一个新字符串。您可以使用条件例如:getInitials
执行与def removeChars(txt, chars):
return ''.join(char for char in txt if char.upper() not in chars)
相同的操作。
upper()
注意:您可能需要进行foldLeft
比较
答案 1 :(得分:0)
你遗漏了一些重要的事情:
在getInitials()
中,您将返回None
,而不是chars
变量。将您的return
声明更改为return chars
在main
函数中,您正在调用getInitials
,但未使用返回值。由于removeChars
期待chars
并且您最初将其设置为空字符串,因此不会删除任何内容。
更改以下内容:
getInitials(fullName)
为:
chars = getInitials(fullName)
removeChars()
函数正在返回结果,但您未在main
中捕获该结果。 变化:
removeChars(txt,chars)
为:
txt = removeChars(txt, chars)
这里有几点需要注意:
txt = removeChars(txt, chars)
未更改txt
,它正在分配一个全新的值。它碰巧使用相同的变量名称。在您的原始帖子中,您有一个使用sv
作为变量名称的打印语句:print "Initials are %s. Resulting string is %s" %(chars, sv)
,如果您将removeChars
的结果分配给sv
,则会获得在txt
。global
声明。 getInitials
的原始回复是一个空的回复声明。这将返回None
。没有return语句的函数也会返回None
。有关详细信息,请参阅此question removeChars
效率低下,因为字符串是不可变的。这意味着变量重复地重新创建字符串。但是,对于像这样的小型示例程序,它可以正常工作。答案 2 :(得分:-1)
你的意思是这样吗?
def main():
fullName = input("Please input your full name: ")
txt = input("Type in any string: ")
initials = '.'.join(name[0].upper() for name in fullName.split())
print(fullName)
print (txt)
print(initials)
main()
你没有得到我,我只是想帮忙。