任务:编写一个方法,该方法接收一个数字并返回一个字符串,在每个奇数位之前和之后放置一个破折号。有一个例外:不要用短划线开始或结束字符串。
这就是我所拥有的:
num = "32343"
dash = ""
for digit in num:
if int(num[0]) % 2 != 0:
dash = digit + "-"
else:
dash += digit
if int(digit) % 2 != 0:
dash += "-" + digit + "-"
else:
dash += digit
if int(num[-1]) % 2 != 0:
dash += "-" + digit
else:
dash += digit
print(dash)
正在打印" 3--3--3"
如果有人能告诉我哪里出错了,我们将不胜感激!
答案 0 :(得分:0)
解决方案只是一系列if - else案例需要考虑,这是不言自明的:
num = "32343"
string = ""
for i in xrange(0,len(num)):
if i == 0 and i == len(num) - 1 and int(num[i]) % 2 != 0:
string = num[i]
elif i == 0 and int(num[i]) % 2 != 0:
string = num[i] + "-"
elif i == len(num) - 1 and int(num[i]) % 2 != 0:
string = string + "-" + num[i]
elif int(num[i]) % 2 !=0:
string = string + "-" + num[i] + "-"
elif int(num[i]) % 2 == 0:
string = string + num[i]
print string
答案 1 :(得分:0)
您可以使用拼接([:]语法)以各种方式处理此问题,但我的第一个问题是通过生成器。你使用mod(%)是一个很好的开始,但你可以避免使用字符串格式和隐含的其他几个elif。
编辑:我注意到你应该仍然有一个尾随 - 在第一个数字和前一个 - 在结束数字上,例如。使用拼接,我在修订版中删除了这些,不再产生第0个和最后一个元素:
def dash(num):
""" add surrounding -'s to any digit in num which is odd """
for n in num:
if int(n) % 2 != 0:
n = "-%s-" % n
yield n
def remove_bookends(_str):
""" if - is at the start or end of _str, remove it """
if _str[0] is "-":
_str = _str[1:]
if _str[-1] is "-":
_str = _str[:-1]
return _str
if __name__ == '__main__':
num = "32343"
_str = "".join([n for n in dash(num)])
_str = remove_bookends(_str)
print _str