输入与打印功能..混淆

Inputs vs print functions.. CONFUSED

我是学习 python 和编码的全新人物,真的。我从事技术支持多年,但现在正在尝试学习编码。 无论如何,我正在参加名为 100 天编码的 UDEMY 课程。 我将在这里列出的第一个练习.. print("你好" + input("你叫什么名字") + "!")

我不太明白的是当你 运行 这段代码.. 它打印出输入(“你叫什么名字”)并完全忽略打印(“你好”
为什么它在打印出输入字符串之前不打印 ("Hello"? 输入总是先得到 运行 吗??

我的意思是如果你取出输入然后它只会打印你好......所以因为你好是在输入之前输入的......为什么它不在输入之前读取打印..

它在下一个练习中做同样的事情。他们让我们输入以下内容 print( len( input("你叫什么名字?"))) 但是它再次打印出输入(“你叫什么名字”),然后再返回到打印(len( 并打印用户输入的字符串的长度,即使打印是在同一行的输入之前输入的?

我希望我对我感到困惑的事情有所了解? 任何帮助将不胜感激?

print("Hello " + input("What is your name ") + "!")

解释为:

print(something)

哪里

something = "Hello " + input_answer + "!"

哪里

input_answer = input("What is your name ")

要知道要打印什么,您需要知道 something 是什么,为此您需要知道 input_answer 是什么。这就是评估语句的顺序。

您可以对第二个示例执行相同的操作。

当您运行以下内容时:

print("Hello " + input("What is your name ") + "!")

python 的解释器(其职责是理解你的代码并执行它),想在这里打印 "Hello" + input(...) + "!" 的东西,所以它必须等待 [= 的结果12=],然后打印出整个参数。

欢迎来到编程, 在上面的语句中 print("Hello " + input("What is your name ") + "!") 每当调用 print 时,print 都会评估要打印的参数。在打印参数中,字符串还包含一个函数调用。所以打印语句中的函数被调用,即 input("What is your name") 这个输入函数打印字符串 What is your name 并从控制台读取输入,与打印语句的参数连接。

每种编程语言都会将一行代码分解成称为标记的东西 所以通常发生的是“打印”和“输入”功能被分成两个任务,它们根据您的调用方式排队。

在你的例子中,你首先调用了“input”(因为它在括号内),因此打印了“input”内的语句。 另一个例子是 math.cos(math.sin(30)) 所以在这种情况下,将计算 30 的 sin,然后计算 sin(30) 的 cos,而不是 cos(30)

的 sin

希望这个解释对您有所帮助

不,您从根本上误解了程序的执行方式。 Python 代码(大部分)是从上到下执行的,这是相对安全的假设。但它 并不是 完全“从左到右”执行的。表达式可以有子表达式。 print 是一个函数。如果你这样做 function(<sub-expression1>, <sub-expression2>),子表达式将从左到右完全计算,因此它们的值可以作为函数参数传递。因此,如果您有三个不同的函数,foobarbaz,并且您执行:

foo(bar(), baz())

然后首先评估(调用)bar(),然后是 baz(),最后调用 foo,并将先前调用的结果作为参数。参见:

def foo(x, y):
    print("In foo")
    return x + y

def bar():
    print("In bar")
    return 1

def baz():
    print("In baz")
    return 10

result = foo(bar(), baz())
print("result was", result)

所以运行上面的程序输出:

In bar
In baz
In foo
result was 11

因此 input 打印您作为参数传递给它的值,然后 等待换行符分隔的用户输入 .

您必须了解如何评估您选择使用的语言结构。考虑另一种类型的表达式,条件表达式,它有三个子表达式,例如 <expression 1> if <expression 2> else <expression 3>,然后 <expression 2>,首先评估条件,如果它是真实的,那么 <expression 1> 被评估为return 整个表达式的值,否则如果它是假的,<expression 2> 被评估为整个事物的 return 值。

So consider:

...     return n < 10
...
>>> condition(1)
True
>>> condition(12)
False
>>> "small" if condition(5) else "big"
'small'
>>> "small" if condition(25) else "big"
'big'

所以请注意,条件表达式“短路”,这是为了潜在地避免不必要的、昂贵的操作。

并根据条件的真实性证明<expression 1><expression 2>中只有一个被评估,见:

>>> def a():
...     print("a executed")
...     return "small"
...
>>> def b():
...     print("b executed")
...     return "big"
...
>>> a() if condition(4) else b()
a executed
'small'
>>> a() if condition(14) else b()
b executed
'big'

当您输入 print() 时,您可以看到 input() 作为一个函数,它开始 运行 “Hello” 然后您的程序将进入 input() 和您的print() 保持 运行ning 直到你给你的输入一个值。希望我的解释能帮到你:)