ฉันจะพิมพ์ตัวแปรและสตริงในบรรทัดเดียวกันใน Python ได้อย่างไร


176

ฉันใช้หลามเพื่อกำหนดจำนวนเด็กที่จะเกิดใน 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)

การจัดรูปแบบสตริงมีประสิทธิภาพมากขึ้นและช่วยให้คุณสามารถทำสิ่งอื่น ๆ เช่น: padding เติมการจัดตำแหน่งความกว้างตั้งค่าความแม่นยำ ฯลฯ

>>> 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 โปรดตอบคำตอบของ Gagan Agrawal
Axel Bregnsbo

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 สำหรับพจนานุกรมและ tuples; M4 เช่นสำหรับ ascii-art และเอาต์พุตที่จัดรูปแบบอื่น ๆ )
PythoNic



14

คุณสามารถใช้F-สตริงหรือ.format ()วิธีการ

ใช้ f-string

print(f'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: {births} births".format(births=births))

12

คุณสามารถใช้รูปแบบสตริง:

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

หรือในกรณีง่าย ๆ นี้:

print "There are ", births, "births"

2
ระวังถ้าใช้วิธีที่สองแม้ว่าเนื่องจากเป็น tuple ไม่ใช่สตริง
TehTris

5

ถ้าคุณใช้ python 3.6 หรือล่าสุด f-string นั้นดีที่สุดและง่าย

print(f"{your_varaible_name}")


3

ในเวอร์ชั่นปัจจุบันคุณต้องใช้เครื่องหมายวงเล็บดังนี้:

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' ทำอะไรหลังจากสัญลักษณ์% ขอบคุณ
Bob Uni

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

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.