我将如何在此代码中包含.join()?

时间:2015-04-13 22:27:59

标签: python

当我打印此代码时,我试图摆脱括号和逗号,但找不到我需要合并.join()的位置,以便可以删除它们。  我真的很想弄清楚这一点,所以如果你能帮助我帮助推动我朝着正确的方向努力。谢谢

def add(x, y):
    return x + y
def subtract(x, y):
    return x - y
def multiply(x, y):
    return x * y
def divide(x, y):
    return x / y

print ("Calculator: ")
print ("add : 1")
print ("subtraction: 2")
print ("multiply: 3")
print ("divide: 4")
foo = input("math solution: ")


num1 = float(raw_input("number 1: "))
num2 = float(raw_input("number 2: "))

if foo == 1:
    print (num1, "+", num2, "=", add(num1, num2)) 
elif foo == 2:
    print (num1, "-", num2, "=", subtract(num1, num2))
elif foo == 3:
    print (num1, "*", num2, "=", multiply(num1, num2))
elif foo == 4:
    print (num1, "/", num2, "=", divide(num1, num2))

3 个答案:

答案 0 :(得分:0)

您无需在代码中加入.join()。只需从print语句中删除括号,如下所示:

if foo == 1:
    print num1, "+", num2, "=", add(num1, num2))
elif foo == 2:
    print num1, "-", num2, "=", subtract(num1, num2)
elif foo == 3:
    print num1, "*", num2, "=", multiply(num1, num2)
elif foo == 4:
    print num1, "/", num2, "=", divide(num1, num2)

原因是在Python 2中,print实际上并不像函数那样被调用;当你添加parens时,你只需将数据打包到tuple s(用逗号分隔的不可变迭代集合)。然后print语句打印这些元组,而不是您要打印的数据。

tl; dr从print语句中删除了parens,你不小心添加了破坏打印格式的数据包:)

答案 1 :(得分:0)

您应该利用python的print 功能,而不是使用str.join。要做到这一点,只需输入:

from __future__ import print_function

位于文件的顶部(如果存在模块doctring之后)。这将在python 2.6及更高版本上运行(IIRC)。在您的情况下发生的是当您在python2.x上运行代码时,

print (this, that, something_else)

被解释为print 语句,然后是tuple来打印 - 因为元组用括号表示自己(字符串用引号表示自己),你得到输出中不需要的parens和引号。使用future语句启用print函数会将其转换为函数调用,该函数调用应该在python2.6 +和python3.x上执行正确的操作。

答案 2 :(得分:0)

您应该考虑使用sting格式。

在您的python版本中,您应该尝试

print "%d + %d = %d" % (num1, num2, , add(num1, num2))

print "{0} + {1} = {2}".format(num1, num2, add(num1, num2))

前者会起作用,但后者(我认为)更漂亮,但仅限于更新版本的Python。