#python #input #printing
#питон #вход #печатание
Вопрос:
Я СОВЕРШЕННО НОВИЧОК в изучении python и кодировании вообще.. Я много лет занимался технической поддержкой, но сейчас пытаюсь научиться программированию. В любом случае, я нахожусь на курсе UDEMY под названием «100 дней кодирования». Первое упражнение, которое я перечислю здесь.. печать(«Привет» ввод(«Как вас зовут «) «!»)
Чего я не совсем понимаю, так это когда вы запускаете этот код.. Он выводит ввод(«Как вас зовут») и полностью игнорирует печать(«Привет»
). Почему он не выводит («Привет») перед выводом входной строки?? Всегда ли вводимые данные запускаются первыми??
Я имею в виду, что если вы уберете ввод, то он просто напечатает «Привет»… Так как привет вводится перед вводом.. Почему он не считывает печать перед вводом..
Он делает то же самое в следующем упражнении.. Они заставили нас ввести следующий шрифт( len( ввод(«Как вас зовут? «))) Но снова он выводит ввод(«Как вас зовут»), прежде чем вернуться к печати( len( и печатает длину строки, введенной пользователем, даже если печать введена ДО ввода в той же строке?
Я надеюсь, что я понимаю, в чем я запутался? Была бы признательна любая помощь?
Комментарии:
1. Print-это функция, и объединенная строка является ее аргументом. Аргументы функции должны быть полностью оценены, прежде чем функция сможет быть запущена.
Ответ №1:
При выполнении следующих:
print("Hello " input("What is your name ") "!")
интерпретатор python (чья обязанность-понимать ваш код и выполнять его) хочет напечатать что-то, что находится "Hello" input(...) "!"
здесь, поэтому он должен дождаться результата input
, а затем распечатать весь аргумент.
Ответ №2:
Добро пожаловать в программирование, В приведенном выше заявлении print("Hello " input("What is your name ") "!")
всякий раз, когда вызывается печать, print оценивает параметр для печати. В параметре print строка также содержит вызов функции. Таким образом, функция в операторе печати называется т. е. input("What is your name")
Эта функция ввода печатает строку What is your name
и считывает входные данные с консоли, связывается с инструкцией param of print.
Ответ №3:
Нет, вы принципиально неправильно понимаете, как выполняется программа. Код Python (в основном) выполняется сверху вниз, что относительно безопасно предположить. Но это не выполняется «слева направо» точно. Выражения могут иметь подвыражения. print
это функция. В этом случае function(lt;sub-expression1gt;, lt;sub-expression2gt;)
вложенные выражения полностью вычисляются слева направо , поэтому их значения могут передаваться в качестве аргументов функции. Итак, если у вас есть три разные функции, foo
, bar
, и baz
, и вы делаете:
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
выводит значение, которое вы передаете ему в качестве аргумента, а затем ожидает ввода пользователем с разделителями новой строки.
Вы должны узнать, как оцениваются языковые конструкции, которые вы выбираете для использования. Рассмотрим другой тип выражения, условное выражение, которое имеет три подвыражения , например lt;expression 1gt; if lt;expression 2gt; else lt;expression 3gt;
, тогда lt;expression 2gt;
условие сначала оценивается, если оно соответствует действительности, затем lt;expression 1gt;
оценивается как возвращаемое значение всего выражения, в противном случае, если оно ложно, lt;expression 2gt;
оценивается как возвращаемое значение всего выражения.
So consider: ... return n lt; 10 ... gt;gt;gt; condition(1) True gt;gt;gt; condition(12) False gt;gt;gt; "small" if condition(5) else "big" 'small' gt;gt;gt; "small" if condition(25) else "big" 'big'
Поэтому обратите внимание, что условные выражения «короткое замыкание» предназначены для того, чтобы потенциально избежать ненужной, дорогостоящей операции.
И чтобы доказать, что только одно из lt;expression 1gt;
или lt;expression 2gt;
оценивается на основе истинности условия, см.:
gt;gt;gt; def a(): ... print("a executed") ... return "small" ... gt;gt;gt; def b(): ... print("b executed") ... return "big" ... gt;gt;gt; a() if condition(4) else b() a executed 'small' gt;gt;gt; a() if condition(14) else b() b executed 'big'
Ответ №4:
print("Hello " input("What is your name ") "!")
интерпретируется как:
print(something)
где
something = "Hello " input_answer "!"
где
input_answer = input("What is your name ")
Чтобы знать, что печатать, вам нужно знать, что something
есть, для чего вам нужно знать, что input_answer
есть. Таким образом, это порядок, в котором оценивается утверждение.
Вы можете сделать то же самое для своего второго примера.
Комментарии:
1. Спасибо.. Вы объяснили это намного проще, чем многие другие люди, которые ответили.. Я ценю комментарии всех, так как все они заставили меня задуматься об этом больше, но мне было легче всего понять ваши.. Спасибо..
Ответ №5:
каждый язык программирования разбивает строку кода на что-то, называемое токенами, поэтому обычно происходит так, что функция «печать» и «ввод» разделяются на две задачи, и они ставятся в очередь в зависимости от того, как вы их назвали.
В вашем случае вы сначала вызвали «ввод» (так как он находится внутри скобки), и, следовательно, оператор внутри «ввода» печатается. Другим примером является math.cos(математический грех(30)), поэтому в этом случае будет рассчитан грех 30, а затем cos греха(30), а не грех cos(30)
Надеюсь, это объяснение поможет
Ответ №6:
Вы можете видеть input()
,как функция, когда вы набрали print()
, начала запускать «Привет», а затем ваша программа войдет input()
, и вы print()
продолжите работать, пока не введете значение. Надеюсь, мое объяснение поможет вам 🙂