Python'da aynı satıra değişken ve dizgi nasıl yazdırabilirim?


176

7 saniyede bir çocuk doğarsa, 5 yılda kaç çocuğun doğacağını bulmak için python kullanıyorum. Sorun son satırımda. Herhangi bir yüzüne metin yazdırırken bir değişkeni nasıl çalıştırabilirim?

İşte benim kod:

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'de dikkatli olun (sağduyu, biliyorum: D). Baskı Python3'te bir fonksiyon haline geldi, şimdi parantez ile kullanılması gerekiyor: print(something)(Ayrıca Python2 bu yıldan beri modası geçmiş.)
PythoNic

Yanıtlar:


263

,Yazdırma sırasında dizeleri ve değişkenleri ayırmak için kullanın :

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

, print ifadesinde öğeleri tek bir boşlukla ayırır:

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

veya daha iyi dize biçimlendirmesi kullanın :

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

Dize biçimlendirme çok daha güçlüdür ve dolgu, doldurma, hizalama, genişlik, hassasiyeti ayarlama vb.Gibi diğer bazı şeyleri de yapmanızı sağlar.

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

Demo:

>>> 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

Bunların hiçbiri Pyton 3'te çalışmaz. Lütfen Gagan Agrawal'ın cevabını onaylayın.
Axel Bregnsbo

58

iki tane daha

İlki

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

Dizeleri eklerken birleştirirler.

İkinci olan

Ayrıca format(Python 2.6 ve daha yeni) dizeler yöntemi muhtemelen standart yoldur:

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

Bu formatyöntem listelerle de kullanılabilir

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

veya sözlükler

>>> 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 çok yönlü bir dildir. Değişkenleri farklı yöntemlerle yazdırabilirsiniz. Aşağıda 4 yöntemi listeledim. Bunları rahatlığınıza göre kullanabilirsiniz.

Misal:

a=1
b='ball'

Yöntem 1:

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

Yöntem 2:

print('I have',a,b)

Yöntem 3:

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

Yöntem 4:

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

Yöntem 5:

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

Çıktı:

I have 1 ball

Karar programlama tarzınızla ilgilidir: M2 prosedürel programlama, M3 nesne yönelimli programlamadır. M5 için anahtar kelime biçimlendirilmiş dize değişmezidir . Gerekirse M1 ve M4 gibi dize işlemleri kullanılmalıdır, burada durum böyle değildir (sözlükler ve tuples için M1; örneğin ascii-art ve diğer formatlanmış çıktılar için M4)
PythoNic

29

Python 3 ile çalışmak istiyorsanız, çok basit:

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

16

Python 3.6'dan itibaren Literal String Interpolation'ı kullanabilirsiniz .

births = 5.25487
>>> print(f'If there was a birth every 7 seconds, there would be: {births:.2f} births')
If there was a birth every 7 seconds, there would be: 5.25 births

1
Karmaşık dizeler için favorim.
Jason LeMonier

14

Ya kullanabilirsiniz f-string veya .format () yöntemleri

F-string kullanma

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

.Format () kullanma

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

12

Bir biçim dizesi kullanabilirsiniz:

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

veya bu basit durumda:

print "There are ", births, "births"

2
bu ikinci yolu kullanıyorsanız dikkatli olun, çünkü bu bir dize değil, bir demet.
TehTris

5

Python 3.6 veya son sürümünü kullanıyorsanız, f-string en iyi ve kolay olanıdır

print(f"{your_varaible_name}")

3

Öncelikle bir değişken yaparsınız: örneğin: D = 1. Ardından Bunu Yapın, ancak dizeyi istediğiniz ile değiştirin:

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

3

Geçerli bir python sürümünde parantez kullanmanız gerekir, şöyle:

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

2

Kullanım dizisi biçimlendirme

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

Bir oyuncak proje kullanımı yapıyorsanız:

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

veya

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

1

Bunu yapmak için dize biçimlendirmesini kullanabilirsiniz :

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

veya printbirden fazla bağımsız değişken verebilirsiniz ; bu, bunları otomatik olarak bir boşlukla ayıracaktır:

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

cevap için teşekkürler Amber. % İşaretinden sonra 'd'nin ne yaptığını açıklayabilir misiniz? teşekkürler
Bob Uni

2
%d"değeri tamsayı olarak biçimlendir" anlamına gelir. Benzer şekilde, %s"değeri bir dize olarak biçimlendir" ve %f"kayan nokta sayısı olarak biçim değeri" olur. Bunlar ve daha fazlası cevabımda bağlandığım Python kılavuzunun bölümünde belgelenmiştir.
Amber

1

Komut dosyanızı kopyalayıp bir .py dosyasına yapıştırdım. Python 2.7.10 ile olduğu gibi çalıştırdım ve aynı sözdizimi hatasını aldım. Ayrıca komut dosyasını Python 3.5'te denedim ve aşağıdaki çıktıyı aldım:

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

Sonra, doğum sayısını aşağıdaki gibi yazdırdığı son satırı değiştirdim:

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"

Çıktı (Python 2.7.10) idi:

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

Umarım bu yardımcı olur.


1

Arada (virgül) kullanın.

Daha iyi anlamak için bu koda bakın:

# 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

Biraz farklı: Python 3'ü kullanarak ve aynı satıra birkaç değişken yazdırın :

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

0

PYTHON 3

Biçim seçeneğini kullanmak daha iyi

user_name=input("Enter your name : )

points = 10

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

veya girdiyi dize olarak bildirir ve kullanır

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

points = 10

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

1
String "Enter your name :misses closing quotation mark
barbsan

print ("Hello, {} your point is {} : ".format(user_name,points) eksik kapanış braketi.
Hillsie

0

Dizeler ve değişken arasında virgül kullanırsanız, şöyle:

print "If there was a birth every 7 seconds, there would be: ", births, "births"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.