Pythonで変数と文字列を同じ行に出力するにはどうすればよいですか?


176

私はpythonを使用して、子供が7秒ごとに生まれた場合、5年間で何人の子供が生まれるかを計算しています。問題は私の最後の行にあります。変数のどちらかの側でテキストを印刷しているときに変数を機能させるにはどうすればよいですか?

これが私のコードです:

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"

回答:


261

,印刷中に文字列と変数を区切るために使用します。

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

, printステートメントでは、1つのスペースで項目を区切ります。

>>> 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では機能しません。GaganAgrawalの回答に賛成票を投じてください。
Axel Bregnsbo

58

もう二つ

最初の1つ

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

文字列を追加すると、連結されます。

2番目の1つ

また、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

51

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



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
ただし、これは文字列ではなくタプルであるため、2番目の方法を使用する場合は注意してください。
TehTris 2014

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

少し異なります。Python3を使用して、同じ行にいくつかの変数を出力します。

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

0

PYTHON 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 :が終了引用符を逃す
barbsan

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"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.