我正在尝试将def功能参数拆分为两个用户输入,然后将两个值相加然后打印出来。
示例代码:
def ab(b1, b2):
if not (b1 and b2): # b1 or b2 is empty
return b1 + b2
head = ab(b1[:-1], b2[:-1])
if b1[-1] == '0': # 0+1 or 0+0
return head + b2[-1]
if b2[-1] == '0': # 1+0
return head + '1'
# V NOTE V <<< push overflow 1 to head
return ab(head, '1') + '0'
print ab('1','111')
我想将“print ab('1','111')”改为用户输入。
我的代码:
def ab(b1, b2):
if not (b1 and b2): # b1 or b2 is empty
return b1 + b2
head = ab(b1[:-1], b2[:-1])
if b1[-1] == '0': # 0+1 or 0+0
return head + b2[-1]
if b2[-1] == '0': # 1+0
return head + '1'
# V NOTE V <<< push overflow 1 to head
return ab(head, '1') + '0'
b1 = int(raw_input("enter number"))
b2 = int(raw_input("enter number"))
total = (b1,b2)
print total
我的结果:1,111
期待结果:1000
答案 0 :(得分:2)
我不知道你是如何在这里工作的。 首先(如丹尼尔所说),你有函数调用缺失/不正确。
total = ab(b1,b2)
其次,您进行了类型转换(将输入的类型从string
更改为integer
) - 并且在您的函数ab
中,您正在应用字符串切片b1
和b2
,这将导致异常:
Traceback (most recent call last):
File "split_def.py", line 33, in <module>
total = ab_new(b1,b2)
File "split_def.py", line 21, in ab_new
head = ab_new(b1[:-1], b2[:-1])
TypeError: 'int' object has no attribute '__getitem__'
最终的工作代码必须是:
def ab(b1, b2):
if not (b1 and b2): # b1 or b2 is empty
return b1 + b2
head = ab(b1[:-1], b2[:-1])
if b1[-1] == '0': # 0+1 or 0+0
return head + b2[-1]
if b2[-1] == '0': # 1+0
return head + '1'
# V NOTE V <<< push overflow 1 to head
return ab(head, '1') + '0'
b1 = raw_input("enter number")
b2 = raw_input("enter number")
total = ab(b1,b2)
print "total", total
答案 1 :(得分:1)
您没有在第二个代码段中调用您的函数。
total = ab(b1,b2)