在下面的代码中,我试图通过迭代作为不同长度、字符串类型的参数提供的所有单词来创建一个新单词。我在这里读到 * 运算符使其成为非关键字可选参数。
def gen_new_word(word1,*nwords):
new_word=''
t0=[i for i in nwords]
t=max(word1,max(t0))
print (t),str(len(t)) #check largest string
for i in xrange(len(t)):
try:
print 'doing iter i# %s and try' %(i)
new_word=new_word+(word1[i]+nwords[i])
print new_word
except IndexError,e:
print 'entered except'
c=i
for x in xrange(c,len(t)):
print 'doing iter x# %s in except' %(x)
new_word=new_word+t[x]
break
return new_word
输出:
gen_new_word('janice','tanice','practice')
tanice 6
doing iter i# 0 and try
jtanice
doing iter i# 1 and try
jtaniceapractice
doing iter i# 2 and try
entered except
doing iter x# 2 in except
doing iter x# 3 in except
doing iter x# 4 in except
doing iter x# 5 in except
Out[84]: 'jtaniceapracticenice'
Q1:为什么不给'practice'作为最大字符串,为什么max(word1,max(t0))
给tanice?
Q2: t=max(word1,max(t0)) 有效,但 max(word1,nwords) 无效。为什么&有解决方法吗?
Q3:new_word=new_word+(word1[i]+nwords[i])
我希望字符串中的单个字母显示出来。期望的结果应该是“jtpaarnnaiicccteeice”,但应该是“jtaniceapracticenice”。由于 * nwords 给出了存储在元组中的第一个元素。我希望 *nwords 将其扩展为单个字符串。我怎样才能做到这一点?我的意思是,从一般意义上讲,我不知道它可能包含多少参数。