这是一个简单的代码,用于查找并打印第一个出现的最后一个“ zip”的位置,因此,如果找不到“ zip”,或者仅出现一次,则应打印-1。我写了两个可以做相同事情的代码,我想知道哪个是更好的代码,以及为什么以及如何对其进行改进(除了添加注释)。
起初我写了这段代码
text = 'all zip files are zipped'
indicator = 0
zip_position = text.find("zip" , indicator)
printer = zip_position
cycles = 0
printer_confirmation = 0
while zip_position != -1:
printer = zip_position
zip_position = text.find("zip" , indicator)
indicator = zip_position + 1
if printer > zip_position and cycles > 1:
print printer
printer_confirmation = 1
cycles += 1
if cycles < 3 and printer_confirmation != 1:
print -1
然后我在此行的提示之后编写了第二个代码: “ print(text.find('zip',text.find(” zip“)+ 1))”
我的完整代码:
text = "all zip files are zipped"
indicator = 1
zip_position = (text.find('zip', text.find("zip")+indicator))
while zip_position != -1:
zip_position = (text.find('zip', text.find("zip")+indicator))
indicator += 1
if zip_position == -1 and text.find("zip" , text.find("zip")+(indicator - 2)) > text.find('zip'):
indicator -= 2
zip_position = (text.find('zip', text.find("zip")+indicator))
print zip_position
我可以看到第一个代码更大,但是我不知道这是否是更好的编码方式。如果代码短一点,总会更好吗? 请告诉我您哪种方法更好。
两个代码都给出相同的结果,没有错误。
答案 0 :(得分:0)
实际上您可以编写单行代码
indicator = text.rfind('zip') if text.count('zip')>1 else -1