Python拆分用户输入的def函数参数

时间:2016-10-28 09:45:45

标签: python function input user-input

我正在尝试将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

2 个答案:

答案 0 :(得分:2)

我不知道你是如何在这里工作的。 首先(如丹尼尔所说),你有函数调用缺失/不正确。

total = ab(b1,b2)

其次,您进行了类型转换(将输入的类型从string更改为integer) - 并且在您的函数ab中,您正在应用字符串切片b1b2,这将导致异常:

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)