请教各位python大神?

如题所述

问题有两处:
第一处
for item in rom_list:
if(make_roman(item[0],item[1])):
a_list.append(make_roman(item[0],item[1]))
这个时候make_roman调用了两次,第一次返回了M,第二次返回了None,a_list追加的却是第二次的调用结果
第二处:
def make_roman(letter,n):
global amt
while amt >= n:
amt = amt - n
return letter
该函数在amt < 2n时没问题,当amt >2n时会出问题,因为只能返回一次,根据main函数中的逻辑,rom_list中每项只能调用一次,所以会出现amt >2000时,返回的却是CM
建议make_roman返回迭代器
def make_roman(letter,n):
global amt
while amt >= n:
amt = amt - n
yield letter
def main():
.......
for item in rom_list:
for letter in make_roman(item[0],item[1]):
a_list.append(letter)
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答