ใน Python 2 ฉันใช้:
print "a=%d,b=%d" % (f(x,n),g(x,n))
ฉันพยายามแล้ว:
print("a=%d,b=%d") % (f(x,n),g(x,n))
ใน Python 2 ฉันใช้:
print "a=%d,b=%d" % (f(x,n),g(x,n))
ฉันพยายามแล้ว:
print("a=%d,b=%d") % (f(x,n),g(x,n))
คำตอบ:
ใน Python2 print
เป็นคำหลักที่แนะนำคำสั่ง:
print "Hi"
ใน Python3 print
เป็นฟังก์ชันที่อาจเรียกใช้:
print ("Hi")
ในทั้งสองเวอร์ชัน%
คือโอเปอเรเตอร์ที่ต้องใช้สตริงทางด้านซ้ายมือและค่าหรือทูเพิลของค่าหรืออ็อบเจ็กต์การแมป (เช่นdict
) ทางด้านขวามือ
ดังนั้นเส้นของคุณควรมีลักษณะดังนี้:
print("a=%d,b=%d" % (f(x,n),g(x,n)))
นอกจากนี้คำแนะนำสำหรับ Python3 และใหม่กว่าคือการใช้{}
การจัดรูปแบบ-style แทนการ%
จัดรูปแบบสไตล์:
print('a={:d}, b={:d}'.format(f(x,n),g(x,n)))
งูหลาม 3.6 เปิดตัวอีกหนึ่งรูปแบบสตริงกระบวนทัศน์: F-สตริง
print(f'a={f(x,n):d}, b={g(x,n):d}')
print('a={first:4.2f}, b={second:03d}'.format(first=f(x,n),second=g(x,n)))
โดยที่ตัวอย่างนี้จะแสดงวิธีที่คุณสามารถใช้ตัวปรับแต่งสไตล์ printf และยังคงใช้คำหลักได้
วิธีที่แนะนำมากที่สุดคือใช้format
method อ่านเพิ่มเติมได้ที่นี่
a, b = 1, 2
print("a={0},b={1}".format(a, b))
printf ง่าย () ฟังก์ชั่นจากโอเรลลีหลามตำรา
import sys
def printf(format, *args):
sys.stdout.write(format % args)
ตัวอย่างผลลัพธ์:
i = 7
pi = 3.14159265359
printf("hi there, i=%d, pi=%.2f\n", i, pi)
# hi there, i=7, pi=3.14
PRINT
และFORMAT
... ? ย้อนกลับไปในช่วงเวลา 60 ปีที่ผ่านมาของวัน FORTRAN :) ความ
Python 3.6 แนะนำ f-strings สำหรับการแก้ไขแบบอินไลน์ สิ่งที่ดีกว่าคือการขยายไวยากรณ์เพื่ออนุญาตตัวระบุรูปแบบที่มีการแก้ไข บางสิ่งที่ฉันได้ดำเนินการในขณะที่ใช้ googled นี้ (และเจอคำถามเก่านี้!)
print(f'{account:40s} ({ratio:3.2f}) -> AUD {splitAmount}')
PEP 498มีรายละเอียด และ ... มันจัดเรียงสัตว์เลี้ยงของฉันด้วยตัวระบุรูปแบบในภาษาอื่น ๆ - อนุญาตให้ระบุตัวระบุว่าตัวเองสามารถแสดงออกได้! เย้! ดู: ตัวระบุรูปแบบ
ตัวอย่างง่ายๆ:
print("foo %d, bar %d" % (1,2))
ง่ายกว่า
def printf(format, *values):
print(format % values )
แล้ว:
printf("Hello, this is my name %s and my age %d", "Martin", 20)
เนื่องจากคุณ%
อยู่นอกprint(...)
วงเล็บคุณจึงพยายามแทรกตัวแปรลงในผลลัพธ์ของการprint
โทร print(...)
ผลตอบแทนNone
ดังนั้นสิ่งนี้จะไม่ได้ผลและยังมีเรื่องเล็กน้อยที่คุณได้พิมพ์แม่แบบของคุณแล้วในช่วงเวลานี้และการเดินทางข้ามเวลาซึ่งถูกห้ามโดยกฎของจักรวาลที่เราอาศัยอยู่
สิ่งที่คุณต้องการพิมพ์ทั้งหมดรวมถึง%
และตัวถูกดำเนินการต้องอยู่ในการprint(...)
โทรของคุณเพื่อให้สามารถสร้างสตริงได้ก่อนที่จะพิมพ์
print( "a=%d,b=%d" % (f(x,n), g(x,n)) )
ฉันได้เพิ่มช่องว่างบางส่วนเพื่อให้ชัดเจนขึ้น (แม้ว่าจะไม่จำเป็นและโดยทั่วไปไม่ถือว่าเป็นรูปแบบที่ดี)
คำอื่น ๆ printf ไม่มีใน python ... ฉันประหลาดใจ! รหัสที่ดีที่สุดคือ
def printf(format, *args):
sys.stdout.write(format % args)
เนื่องจากแบบฟอร์มนี้ไม่อนุญาตให้พิมพ์ \ n อื่น ๆ ทั้งหมดไม่ นั่นเป็นสาเหตุที่การพิมพ์เป็นตัวดำเนินการที่ไม่ดี และคุณต้องเขียน args ในรูปแบบพิเศษ ไม่มีข้อเสียในฟังก์ชันข้างต้น เป็นฟังก์ชัน printf รูปแบบปกติมาตรฐาน
print("Name={}, balance={}".format(var-name, var-balance))
%
เป็นตัวดำเนินการสตริงมาโดยตลอดไม่เกี่ยวข้องกับprint
คำสั่ง คุณสามารถยกตัวอย่างเช่นการสร้างสตริงด้วยแล้วพิมพ์สตริงที่มีs="a=%d,b=%d"%(f(x,n),g(x,n))
print s