Как я могу напечатать переменную и строку в одной строке в Python?


176

Я использую python, чтобы определить, сколько детей родится через 5 лет, если ребенок будет рождаться каждые 7 секунд. Проблема в моей последней строке. Как заставить работать переменную, когда я печатаю текст по обе стороны от него?

Вот мой код:

currentPop = 312032486
oneYear = 365
hours = 24
minutes = 60
seconds = 60

# seconds in a single day
secondsInDay = hours * minutes * seconds

# seconds in a year
secondsInYear = secondsInDay * oneYear

fiveYears = secondsInYear * 5

#Seconds in 5 years
print fiveYears

# fiveYears in seconds, divided by 7 seconds
births = fiveYears // 7

print "If there was a birth every 7 seconds, there would be: " births "births"

Будьте осторожны в 2020 году (здравый смысл я знаю: D). Печать стала функцией в Python3, теперь ее нужно использовать в скобках: print(something)(Также Python2 устарел с этого года.)
PythoNic

Ответы:


262

Используйте ,для разделения строк и переменных при печати:

print "If there was a birth every 7 seconds, there would be: ",births,"births"

, в операторе печати разделяет элементы на один пробел:

>>> print "foo","bar","spam"
foo bar spam

или лучше использовать форматирование строки :

print "If there was a birth every 7 seconds, there would be: {} births".format(births)

Форматирование строк намного мощнее и позволяет вам делать и другие вещи, такие как: заполнение, заливка, выравнивание, ширина, заданная точность и т. Д.

>>> print "{:d} {:03d} {:>20f}".format(1,2,1.1)
1 002             1.100000
  ^^^
  0's padded to 2

Демо-версия:

>>> births = 4
>>> print "If there was a birth every 7 seconds, there would be: ",births,"births"
If there was a birth every 7 seconds, there would be:  4 births

#formatting
>>> print "If there was a birth every 7 seconds, there would be: {} births".format(births)
If there was a birth every 7 seconds, there would be: 4 births

Ничего из этого не работает в Pyton 3. Пожалуйста, подтвердите ответ Гагана Агравала.
Аксель Брегнсбо

58

еще два

Первый

 >>>births = str(5)
 >>>print "there are " + births + " births."
 there are 5 births.

При добавлении строк они объединяются.

Второй

Также format(Python 2.6 и новее) метод строк, вероятно, является стандартным способом:

>>> births = str(5)
>>>
>>> print "there are {} births.".format(births)
there are 5 births.

Этот formatметод также может быть использован со списками

>>> format_list = ['five','three']
>>> print "there are {} births and {} deaths".format(*format_list) #unpack the list
there are five births and three deaths

или словари

>>> format_dictionary = {'births': 'five', 'deaths': 'three'}
>>> print "there are {births} births, and {deaths} deaths".format(**format_dictionary) #yup, unpack the dictionary
there are five births, and three deaths

52

Python - очень универсальный язык. Вы можете печатать переменные разными способами. Я перечислил ниже 4 метода. Вы можете использовать их по своему усмотрению.

Пример:

a=1
b='ball'

Способ 1:

print('I have %d %s' %(a,b))

Способ 2:

print('I have',a,b)

Способ 3:

print('I have {} {}'.format(a,b))

Способ 4:

print('I have ' + str(a) +' ' +b)

Способ 5:

  print( f'I have {a} {b}')

Выход будет:

I have 1 ball

Решение связано с вашим стилем программирования: M2 - это процедурное программирование, M3 - это объектно-ориентированное программирование. Ключевое слово для M5 - форматированный строковый литерал . При необходимости следует использовать строковые операции, такие как M1 и M4, что здесь не так (M1 для словарей и кортежей; M4, например, для ascii-art и других форматированных выходных данных)
PythoNic

29

Если вы хотите работать с Python 3, это очень просто:

print("If there was a birth every 7 second, there would be %d births." % (births))


14

Вы можете использовать методы f-string или .format ()

Использование f-строки

print(f'If there was a birth every 7 seconds, there would be: {births} births')

Использование .format ()

print("If there was a birth every 7 seconds, there would be: {births} births".format(births=births))

12

Вы можете использовать форматную строку:

print "There are %d births" % (births,)

или в этом простом случае:

print "There are ", births, "births"

2
будьте осторожны при использовании этого второго способа, потому что это кортеж, а не строка.
ТехТрис

5

Если вы используете Python 3.6 или более позднюю версию, f-string - лучший и простой

print(f"{your_varaible_name}")

3

Сначала вы должны создать переменную: например: D = 1. Затем выполните это, но замените строку на то, что вы хотите:

D = 1
print("Here is a number!:",D)

3

В текущей версии Python вы должны использовать круглые скобки, например, так:

print ("If there was a birth every 7 seconds", X)

2

использовать форматирование строки

print("If there was a birth every 7 seconds, there would be: {} births".format(births))
 # Will replace "{}" with births

если вы делаете игрушечный проект, используйте:

print('If there was a birth every 7 seconds, there would be:' births'births) 

или

print('If there was a birth every 7 seconds, there would be: %d births' %(births))
# Will replace %d with births

1

Вы можете использовать форматирование строки, чтобы сделать это:

print "If there was a birth every 7 seconds, there would be: %d births" % births

или вы можете дать printнесколько аргументов, и он будет автоматически разделять их пробелом:

print "If there was a birth every 7 seconds, there would be:", births, "births"

спасибо за ответ янтарь. Можете ли вы объяснить, что делает 'd' после символа%? спасибо
Боб Уни

2
%dозначает «форматировать значение как целое число». Аналогично, %sэто будет «значение формата в виде строки» и %f«значение формата в виде числа с плавающей запятой». Эти и другие вопросы описаны в той части руководства по Python, на которую я ссылаюсь в своем ответе.
Янтарь

1

Я скопировал и вставил ваш скрипт в файл .py. Я запустил его как есть с Python 2.7.10 и получил ту же синтаксическую ошибку. Я также попробовал скрипт в Python 3.5 и получил следующий вывод:

File "print_strings_on_same_line.py", line 16
print fiveYears
              ^
SyntaxError: Missing parentheses in call to 'print'

Затем я изменил последнюю строку, где она печатает число рождений следующим образом:

currentPop = 312032486
oneYear = 365
hours = 24
minutes = 60
seconds = 60

# seconds in a single day
secondsInDay = hours * minutes * seconds

# seconds in a year
secondsInYear = secondsInDay * oneYear

fiveYears = secondsInYear * 5

#Seconds in 5 years
print fiveYears

# fiveYears in seconds, divided by 7 seconds
births = fiveYears // 7

print "If there was a birth every 7 seconds, there would be: " + str(births) + " births"

Вывод был (Python 2.7.10):

157680000
If there was a birth every 7 seconds, there would be: 22525714 births

Надеюсь, это поможет.


1

Просто используйте, (запятая) между ними.

Смотрите этот код для лучшего понимания:

# Weight converter pounds to kg

weight_lbs = input("Enter your weight in pounds: ")

weight_kg = 0.45 * int(weight_lbs)

print("You are ", weight_kg, " kg")

0

Немного по-другому: используя Python 3 и напечатайте несколько переменных в одной строке:

print("~~Create new DB:",argv[5],"; with user:",argv[3],"; and Password:",argv[4]," ~~")

0

ПИТОН 3

Лучше использовать параметр формата

user_name=input("Enter your name : )

points = 10

print ("Hello, {} your point is {} : ".format(user_name,points)

или объявить ввод как строку и использовать

user_name=str(input("Enter your name : ))

points = 10

print("Hello, "+user_name+" your point is " +str(points))

1
Строка "Enter your name :пропускает закрывающую кавычку
Барбсан

print ("Hello, {} your point is {} : ".format(user_name,points) отсутствует закрывающая скобка.
Hillsie

0

Если вы используете запятую между строками и переменной, вот так:

print "If there was a birth every 7 seconds, there would be: ", births, "births"
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.