Як я можу надрукувати змінну та рядок на одному рядку в 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



14

Ви можете використовувати методи f-string або .format ()

Використання f-string

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
будьте обережні, якщо використовуєте цей другий спосіб, тому що це кортеж, а не рядок.
TehTris

5

Якщо ви використовуєте python 3.6 або новішу версію, f-string є найкращим і простим

print(f"{your_varaible_name}")


3

У поточній версії python ви повинні використовувати дужки, наприклад:

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

2

використовувати формат String

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.