在python中打印之间输入

时间:2013-11-16 05:19:17

标签: python input python-3.x

无论如何在两个打印命令之间打印?例如,我打印sin()以及x的这些括号输入量之间的某些函数,例如sin(x)。像这样:

print("sin("
x=float(input())
print(")")
>>sin("""input""")

我需要打印sin("然后获取输入并打印x的值,然后打印)。为了清楚起见我想使用print和input parallel。

4 个答案:

答案 0 :(得分:2)

不是直接可能的,因为assignment doesn't return anything in python但如果你真的想要一点点破解。

def main():
    def f():
        nonlocal x
        x = input()
        return x
    x = ''
    print("Sin(" + f() + ")")

这个例子是关于如何做到这一点的想法。而不是nonlocal你可以让其他黑客像直接传递的可变对象一样,让你更好地控制你想要存储值的位置。

通过可变对象

正如评论中提到的那样,它并不完全安全,在使用此代码之前需要进行一些更改。这只是一个例子。直到它变得很清楚OP实际上想要什么我会保持原样。

def main():
    def f(x):
        x[0] = input()
        return x[0]

    x = ['']
    print("Sin(" + f(x) + ")")

EDIT2 - 在输入()的情况下避免换行的回声

如果您想避免换行,那么您应该看到this。然后根据您的要求创建一个函数,将所需的输入构建到非本地(或全局)变量中。在这里你必须做一些hackery来定义另一个完全构建变量的字符。然后使用两个print语句之间的函数调用应该给你所需的行为。函数返回的变量必须明确打印,因为不会回显任何内容。

答案 1 :(得分:0)

不,你不能这样做。每个声明都必须手动完成:

x = float(input())
print("sin(%.2f)"%x)

或者如果您想要sin结果:

import math
x = math.sin(float(input("Enter X: ")))
print("The sin of X is: {:.2f}".format(x))

编辑:添加了您想要的内容:

正如我所提到的,你必须手动打印每个语句:

print("sin(", sep="")
#either this
x = float(input())
print(x)
#print(input()) #or just this
print(")")

注意使用两种不同的字符串格式化方法,只是为了显示它。希望这有帮助!

答案 2 :(得分:0)

这里有一些更简洁的方法 - oneliner:

print 'sin(%f)=%f' % (lambda x=input(): (x, sin(x)))()
# 1.57
# sin(1.570000)=1.000000

答案 3 :(得分:0)

你不能因为你无法在input()的末尾避免换行符。如果你真的需要这个,你应该使用像curses这样的终端控制库。

Info from here