2016-11-10 15 views
0

這裏相當簡單的問題。我正在構建一個hello世界程序的例子,它會在用戶輸入名字時向用戶打招呼,而不使用任何變量。我有嵌套在打印語句中的輸入

print('What is your name?') 

print('Hello, ' +str(input()) + ', nice to meet you!') 

它給出了所需的結果。爲什麼輸入語句儘管嵌套在print語句之前,在print語句之前執行''''?謝謝!

+2

你爲什麼認爲嵌套在裏面意味着它會在稍後執行?如果'input'還沒有執行,你會期望print'打印嗎? – BrenBarn

+0

因爲和數學一樣,括號內的東西在它們之外的東西之前被評估。 – Carcigenicate

回答

2

我想,你並不知道運營商的優先權。這裏你正在使用+運算符。

print('Hello, ' +str(input()) + ', nice to meet you!') 

這裏,在執行打印之前準備好不同的操作數表達式。由於str(input())是一個函數表達式,因此必須首先對其進行求值,以便字符串連接發生。

在其他情況下,如階乘(sum(2,3))將導致階乘(5),因爲sum(2,3)將首先執行。 簡而言之,經驗法則是最內層的表達式首先從左到右進行評估。

2
3 * (2 + 2) 

預期答案會是什麼?這是12,因爲括號內的部分首先被評估。

編程中也是如此。括號外的東西依賴於括號內的東西,所以括號內的東西首先被評估。