วิธีการพิมพ์โดยไม่ต้องขึ้นบรรทัดใหม่หรือเว้นวรรค


1871

ฉันอยากจะทำมัน . สิ่งที่ฉันต้องการทำในตัวอย่างนี้มา:

ใน C:

#include <stdio.h>

int main() {
    int i;
    for (i=0; i<10; i++) printf(".");
    return 0;
}

เอาท์พุท:

..........

ใน Python:

>>> for i in range(10): print('.')
.
.
.
.
.
.
.
.
.
.
>>> print('.', '.', '.', '.', '.', '.', '.', '.', '.', '.')
. . . . . . . . . .

ใน Python printจะเพิ่ม\nหรือเว้นวรรคฉันจะหลีกเลี่ยงสิ่งนั้นได้อย่างไร ตอนนี้เป็นเพียงตัวอย่างอย่าบอกฉันว่าฉันสามารถสร้างสตริงก่อนแล้วจึงพิมพ์มัน ผมอยากจะทราบวิธีการ "ผนวก" stdoutสตริง


8
สำหรับผู้ที่ค้นหาเอกสารการจัดรูปแบบสตริงของ python: docs.python.org/library/stdtypes.html#string-formatting
guettli

1
ดูเหมือนว่าคำถามที่คล้ายกันถูกถามก่อนหน้านี้: https://stackoverflow.com/q/255147/9325817
Vignesh Bayari R.

คำตอบ:


2533

ใน Python 3 คุณสามารถใช้sep=และend=พารามิเตอร์ของprintฟังก์ชันได้:

ในการไม่เพิ่มบรรทัดใหม่ในตอนท้ายของสตริง:

print('.', end='')

ในการไม่เพิ่มช่องว่างระหว่างอาร์กิวเมนต์ของฟังก์ชันทั้งหมดที่คุณต้องการพิมพ์:

print('a', 'b', 'c', sep='')

คุณสามารถส่งผ่านสตริงใด ๆ ไปยังพารามิเตอร์ใดก็ได้และคุณสามารถใช้พารามิเตอร์ทั้งสองในเวลาเดียวกัน

หากคุณมีปัญหาในการบัฟเฟอร์คุณสามารถล้างข้อมูลออกโดยเพิ่มflush=Trueอาร์กิวเมนต์คำหลัก:

print('.', end='', flush=True)

Python 2.6 และ 2.7

จาก Python 2.6 คุณสามารถนำเข้าprintฟังก์ชันจาก Python 3 โดยใช้__future__โมดูล :

from __future__ import print_function

ซึ่งช่วยให้คุณใช้โซลูชัน Python 3 ด้านบน

อย่างไรก็ตามโปรดทราบว่าflushคำหลักไม่สามารถใช้ได้ในรุ่นของprintฟังก์ชันที่นำเข้าจาก__future__ใน Python 2 ใช้งานได้ใน Python 3 เท่านั้นโดยเฉพาะอย่างยิ่ง 3.3 และใหม่กว่า sys.stdout.flush()ในรุ่นก่อนหน้านี้คุณยังจะต้องล้างด้วยตนเองด้วยการเรียกร้องให้ คุณจะต้องเขียนคำสั่งการพิมพ์อื่นทั้งหมดในไฟล์ที่คุณนำเข้านี้อีกครั้ง

หรือคุณสามารถใช้ sys.stdout.write()

import sys
sys.stdout.write('.')

คุณอาจต้องโทร

sys.stdout.flush()

เพื่อให้แน่ใจว่าstdoutจะล้างทันที


2
ขอบคุณ! ใน Python 3.6.3 นั้น flush = True นั้นสำคัญมากมิฉะนั้นมันจะไม่ทำงานตามที่ตั้งใจไว้
gunit

3
บางคนสามารถอธิบายได้ว่าทำไมฉันต้องทำflushและทำอะไรจริง?
Rishav

5
มันไม่กี่เดือนที่ผ่านมา แต่การตอบ @Rishav ให้ล้างบัฟเฟอร์และแสดงผลลัพธ์ทันที หากไม่มีฟลัชคุณอาจพิมพ์ข้อความที่แน่นอนในที่สุด แต่เฉพาะเมื่อระบบเข้าสู่การประมวลผลกราฟิกแทน IO ฟลัชทำให้ข้อความมองเห็นได้ทันทีโดย "ล้าง" แคช
เทอร์เทิลเทอร์

297

มันควรจะง่ายอย่างที่อธิบายไว้ที่ลิงค์นี้โดย Guido Van Rossum:

เรื่องหนึ่งพิมพ์โดยไม่ต้อง ac / r อย่างไร

http://legacy.python.org/search/hypermail/python-1992/0115.html

เป็นไปได้ไหมที่จะพิมพ์บางอย่าง แต่ไม่มีการคืนค่าขนส่งโดยอัตโนมัติ

ใช่ผนวกจุลภาคต่อท้ายอาร์กิวเมนต์สุดท้ายที่จะพิมพ์ ตัวอย่างเช่นลูปนี้พิมพ์ตัวเลข 0..9 ในบรรทัดคั่นด้วยช่องว่าง สังเกตพารามิเตอร์ "print" ที่เพิ่มบรรทัดใหม่สุดท้าย:

>>> for i in range(10):
...     print i,
... else:
...     print
...
0 1 2 3 4 5 6 7 8 9
>>> 

99
นี่คือรายการเฉพาะในคำถามเป็นพฤติกรรมที่ไม่พึงประสงค์เนื่องจากช่องว่าง
Zags

87
ในทางตรงกันข้ามคำตอบควรถูกลบด้วยเหตุผลสองประการ: มันมีผลข้างเคียงที่ไม่พึงประสงค์ซึ่งคุณไม่สามารถปิดการใช้งาน (รวมถึงช่องว่างพิเศษ) และมันไม่ได้ไปข้างหน้าเข้ากันได้กับงูหลาม 3 (วงเล็บบังคับให้ . ฉันคาดหวังว่าโครงสร้างแบบห่วย ๆ เหล่านี้มาจาก PHP ไม่ใช่ Python ดังนั้นจึงเป็นการดีที่สุดที่จะไม่ใช้สิ่งนี้
Eric Leschinski

9
//, นี่เป็นวิธีที่ง่ายที่สุดในการทำให้เสร็จใน Python 2 และมีโค้ดแบบใช้ครั้งเดียวมากมายสำหรับระบบปฏิบัติการเก่า อาจไม่ใช่ทางออกที่ดีที่สุดหรือแนะนำ อย่างไรก็ตามหนึ่งในข้อดีที่ดีเยี่ยมของ StackOverflow คือมันช่วยให้เราทราบว่าเทคนิคแปลก ๆ KDP คุณจะต้องมีคำเตือนอย่างรวดเร็วที่ด้านบนเกี่ยวกับ @Eric Leschinski ว่าอย่างไร มันสมเหตุสมผลแล้วหลังจากทั้งหมด
Nathan Basanese

23
@nathanbasanese ง่ายหรือไม่ก็มีผลข้างเคียงที่ถามอย่างชัดเจนไม่ต้องการ downvoted
Shadur

8
270 upvotes สำหรับคำตอบที่เฉพาะเจาะจงไม่ตอบคำถาม การทำงานที่ดี upvoting folks การทำงานที่ดี.
Cylindric

168

หมายเหตุ: ชื่อของคำถามนี้เคยเป็นเช่น "How to printf in python?"

เนื่องจากผู้คนอาจมาที่นี่เพื่อค้นหาตามชื่อ Python จึงรองรับการทดแทนสไตล์ printf:

>>> strings = [ "one", "two", "three" ]
>>>
>>> for i in xrange(3):
...     print "Item %d: %s" % (i, strings[i])
...
Item 0: one
Item 1: two
Item 2: three

และคุณสามารถคูณค่าสตริงอย่างคล่องแคล่ว:

>>> print "." * 10
..........

10
แน่นอนมันหายไปจากจุด :) เนื่องจากมีคำตอบที่ดีสำหรับคำถามฉันเพิ่งอธิบายรายละเอียดเกี่ยวกับเทคนิคบางอย่างที่อาจเป็นประโยชน์
Beau

8
ขึ้นอยู่กับชื่อของคำถามที่ผมเชื่อว่าคำตอบนี้เป็นอะนาล็อกเหมาะสมกับวิธีการหนึ่งที่ใช้กันทั่วไปใน printf C / C ++
แดน

16
คำตอบนี้จะตอบชื่อคำถาม แต่ไม่ใช่เนื้อหา ที่กล่าวว่ามันทำให้ฉันด้วยสิ่งที่ฉันกำลังมองหา :)
ayman

2
มันไม่ใช่คำตอบสำหรับคำถาม
Vanuan

4
@Vanuan ฉันอธิบายที่ด้านล่างของคำตอบของฉันว่าชื่อของคำถามเปลี่ยนไปในบางจุด :)
Beau

93

ใช้ฟังก์ชั่นการพิมพ์สไตล์ python3 สำหรับ python2.6 + (จะทำให้คำสั่งการพิมพ์คำสำคัญที่มีอยู่ในไฟล์เดียวกัน)

# for python2 to use the print() function, removing the print keyword
from __future__ import print_function
for x in xrange(10):
    print('.', end='')

หากต้องการไม่ทำลายคำสำคัญในการพิมพ์ของ python2 ให้สร้างprintf.pyไฟล์แยกต่างหาก

# printf.py

from __future__ import print_function

def printf(str, *args):
    print(str % args, end='')

จากนั้นใช้ในไฟล์ของคุณ

from printf import printf
for x in xrange(10):
    printf('.')
print 'done'
#..........done

ตัวอย่างเพิ่มเติมแสดงสไตล์การพิมพ์

printf('hello %s', 'world')
printf('%i %f', 10, 3.14)
#hello world10 3.140000

39

วิธีพิมพ์บนบรรทัดเดียวกัน:

import sys
for i in xrange(0,10):
   sys.stdout.write(".")
   sys.stdout.flush()

27

ใหม่ (ณ Python 3.x) printฟังก์ชั่นมีendพารามิเตอร์ตัวเลือกที่ช่วยให้คุณปรับเปลี่ยนอักขระสิ้นสุด:

print("HELLO", end="")
print("HELLO")

เอาท์พุท:

สวัสดีสวัสดี

นอกจากนี้ยังมีsepตัวคั่น:

print("HELLO", "HELLO", "HELLO", sep="")

เอาท์พุท:

HELLOHELLOHELLO

หากคุณต้องการใช้สิ่งนี้ใน Python 2.x เพียงเพิ่มสิ่งนี้ที่จุดเริ่มต้นของไฟล์ของคุณ:

from __future__ import print_function


1
"sep" ทำอะไร
McPeppr

1
@ McPeppr ฉันรู้ว่านี่เก่า แต่ฉันได้แก้ไขคำตอบอย่างไรก็ตามเพื่อความชัดเจนมากขึ้น ตรวจสอบทันที
TheTechRobo36414519

ขอบคุณสำหรับการแก้ไข กันยายนจะมีประโยชน์ จนถึงตอนนี้ฉันใช้ sep.join (รายการ) เพื่อเรียงองค์ประกอบของรายการโดยมีตัวคั่นอยู่ระหว่าง - เหมาะสำหรับการเขียนไฟล์ csv
McPeppr

21

การใช้ functools.partial เพื่อสร้างฟังก์ชันใหม่ที่เรียกว่า printf

>>> import functools

>>> printf = functools.partial(print, end="")

>>> printf("Hello world\n")
Hello world

วิธีง่ายๆในการห่อฟังก์ชั่นด้วยพารามิเตอร์เริ่มต้น


16

คุณสามารถเพิ่ม,ในส่วนท้ายของprintฟังก์ชันเพื่อไม่ให้พิมพ์บนบรรทัดใหม่


1
//, นี่ทำให้จริงแล้วมันไม่ได้พิมพ์อะไรออกมาเลย เราไม่จำเป็นต้องเพิ่มคำสั่งแล้วพิมพ์อื่นโดยไม่โต้แย้งที่สิ้นสุดตามที่แสดงในstackoverflow.com/a/493500/2146138 ? คุณยินดีที่จะแก้ไขคำตอบนี้ด้วยตัวอย่างสองหรือสามบรรทัดสั้น ๆ reeeally หรือไม่?
Nathan Basanese

3
OP ไม่ต้องการให้มีการต่อเติมช่องว่าง
pppery

2
ไม่ได้ตอบคำถาม ไม่มีช่องว่าง
shrewmouse

สิ่งนี้ใช้ไม่ได้ใน Python 2.x และตอบเพียงครึ่งเดียวของสิ่งที่ OP ต้องการ ทำไมต้อง 16 upvotes
TheTechRobo36414519

12

ใน Python 3+ printเป็นฟังก์ชั่น เมื่อคุณโทรมา

print('hello world')

Python แปลเป็น

print('hello world', end='\n')

คุณสามารถเปลี่ยนendสิ่งที่คุณต้องการ

print('hello world', end='')
print('hello world', end=' ')

8

หลาม2.6+ :

from __future__ import print_function # needs to be first statement in file
print('.', end='')

หลาม3 :

print('.', end='')

หลาม <= 2.5 :

import sys
sys.stdout.write('.')

ถ้าพื้นที่ว่างเพิ่มเป็น OK หลังจากพิมพ์แต่ละครั้งใน python 2

print '.',

เข้าใจผิดใน python 2 - หลีกเลี่ยง :

print('.'), # avoid this if you want to remain sane
# this makes it look like print is a function but it is not
# this is the `,` creating a tuple and the parentheses enclose an expression
# to see the problem, try:
print('.', 'x'), # this will print `('.', 'x') `

8

คุณสามารถลอง:

import sys
import time
# Keeps the initial message in buffer.
sys.stdout.write("\rfoobar bar black sheep")
sys.stdout.flush()
# Wait 2 seconds
time.sleep(2)
# Replace the message with a new one.
sys.stdout.write("\r"+'hahahahaaa             ')
sys.stdout.flush()
# Finalize the new message by printing a return carriage.
sys.stdout.write('\n')

5

คุณสามารถทำเช่นเดียวกันใน python3 ดังต่อไปนี้:

#!usr/bin/python

i = 0
while i<10 :
    print('.',end='')
    i = i+1

และรันด้วยpython filename.pyหรือpython3 filename.py


5

ฉันเพิ่งมีปัญหาเดียวกัน ..

ฉันแก้ไขมันโดยทำ:

import sys, os

# reopen stdout with "newline=None".
# in this mode,
# input:  accepts any newline character, outputs as '\n'
# output: '\n' converts to os.linesep

sys.stdout = os.fdopen(sys.stdout.fileno(), "w", newline=None)

for i in range(1,10):
        print(i)

ใช้ได้ทั้งกับยูนิกซ์และ windows ... ยังไม่ได้ทดสอบบน macosx ...

HTH


2
พักsys.__stdout__
pppery

4

@lenooh พอใจแบบสอบถามของฉัน ฉันค้นพบบทความนี้ในขณะที่ค้นหา 'หลามปราบปรามการขึ้นบรรทัดใหม่' ฉันใช้ IDLE3 กับ Raspberry Pi เพื่อพัฒนา Python 3.2 สำหรับ PuTTY ฉันต้องการสร้างแถบความคืบหน้าในบรรทัดคำสั่ง PuTTY ฉันไม่ต้องการให้หน้าเลื่อนออกไป ฉันต้องการเส้นแนวนอนเพื่อให้ความมั่นใจกับผู้ใช้อีกครั้งว่าโปรแกรมไม่ได้หยุดชะงักหรือไม่ได้ถูกส่งไปรับประทานอาหารกลางวันในวงวนที่ไม่มีที่สิ้นสุดร่าเริง - เป็นข้ออ้างที่จะ 'ปล่อยฉันไปฉันทำได้ดี แต่อาจใช้เวลาสักครู่ ' ข้อความโต้ตอบ - เช่นแถบความคืบหน้าในข้อความ

print('Skimming for', search_string, '\b! .001', end='')เริ่มต้นข้อความโดยการเตรียมความพร้อมสำหรับหน้าจอเขียนต่อไปซึ่งจะพิมพ์สาม backspaces เป็น rubout ⌫⌫⌫แล้วระยะเวลาเช็ดปิด '001' และขยายสายของงวด หลังจากsearch_stringนกแก้วใส่ผู้ใช้,\b!ตัดขอบเครื่องหมายอัศเจรีย์ของsearch_stringข้อความของฉันเพื่อกลับไปยังพื้นที่ซึ่งprint()บังคับให้ใส่เครื่องหมายวรรคตอนอย่างถูกต้อง ตามด้วยช่องว่างและ 'จุด' แรกของ 'แถบความคืบหน้า' ซึ่งฉันกำลังจำลอง โดยไม่จำเป็นข้อความจะถูกเตรียมด้วยหมายเลขหน้า (จัดรูปแบบเป็นความยาวสามด้วยศูนย์นำหน้า) เพื่อแจ้งให้ทราบจากผู้ใช้ว่ามีการประมวลผลความคืบหน้าและซึ่งจะสะท้อนการนับระยะเวลาที่เราจะสร้างในภายหลัง ขวา.

import sys

page=1
search_string=input('Search for?',)
print('Skimming for', search_string, '\b! .001', end='')
sys.stdout.flush() # the print function with an end='' won't print unless forced
while page:
    # some stuff…
    # search, scrub, and build bulk output list[], count items,
    # set done flag True
    page=page+1 #done flag set in 'some_stuff'
    sys.stdout.write('\b\b\b.'+format(page, '03')) #<-- here's the progress bar meat
    sys.stdout.flush()
    if done: #( flag alternative to break, exit or quit)
        print('\nSorting', item_count, 'items')
        page=0 # exits the 'while page' loop
list.sort()
for item_count in range(0, items)
    print(list[item_count])
#print footers here
 if not (len(list)==items):
    print('#error_handler')

แถบความคืบหน้าอยู่ในsys.stdout.write('\b\b\b.'+format(page, '03'))บรรทัด ก่อนอื่นให้ลบไปทางซ้ายมันจะสำรองเคอร์เซอร์ไว้เหนืออักขระตัวเลขสามตัวด้วย '\ b \ b \ b' เป็น⌫⌫⌫ rubout และลดระยะเวลาใหม่เพื่อเพิ่มความยาวของแถบความคืบหน้า จากนั้นมันจะเขียนตัวเลขสามหลักของหน้าเว็บที่ไปถึง เนื่องจากsys.stdout.write()รอบัฟเฟอร์เต็มหรือช่องสัญญาณเอาต์พุตเพื่อปิดsys.stdout.flush()บังคับให้เขียนทันที sys.stdout.flush()ถูกสร้างขึ้นในท้ายที่สุดซึ่งจะข้ามกับprint() print(txt, end='' )จากนั้นโค้ดจะวนซ้ำไปตามการดำเนินการที่ใช้เวลาอย่างมากในขณะที่มันพิมพ์อะไรอีกมากจนกระทั่งมันกลับมาที่นี่เพื่อล้างตัวเลขสามหลักย้อนกลับเพิ่มจุดและเขียนตัวเลขสามหลักอีกครั้งเพิ่มขึ้น

ตัวเลขสามหลักที่ถูกเช็ดและเขียนใหม่นั้นไม่จำเป็นเลย - มันเป็นเพียงความรุ่งเรืองที่เป็นตัวอย่าง sys.stdout.write()print()เมื่อเทียบกับ คุณสามารถทำได้อย่างง่ายดายเพียงช่วงเวลาหนึ่งและลืม backslash-b ⌫ backspaces แฟนซี (แน่นอนว่าไม่ได้เขียนจำนวนหน้าที่มีการจัดรูปแบบด้วย) โดยเพียงแค่พิมพ์แถบระยะเวลานานขึ้นทีละครั้งโดยไม่ต้องเว้นวรรคหรือขึ้นบรรทัดใหม่sys.stdout.write('.'); sys.stdout.flush()คู่.

โปรดทราบว่าเชลล์ Raspberry Pi IDLE3 Python ไม่ได้ให้เกียรติ backspace ว่าเป็น⌫ rubout แต่จะพิมพ์ช่องว่างแทนเพื่อสร้างรายการเศษส่วนที่ชัดเจนแทน

- (o = 8> ตัวช่วย


4

คุณจะสังเกตเห็นว่าคำตอบทั้งหมดข้างต้นนั้นถูกต้อง แต่ฉันต้องการสร้างทางลัดเพื่อเขียนพารามิเตอร์ "end = ''" ในท้ายที่สุดเสมอ

คุณสามารถกำหนดฟังก์ชั่นเช่น

def Print(*args,sep='',end='',file=None,flush=False):
    print(*args,sep=sep,end=end,file=file,flush=flush)

มันจะยอมรับจำนวนพารามิเตอร์ทั้งหมด แม้ว่ามันจะยอมรับพารามิเตอร์อื่น ๆ ทั้งหมดเช่นไฟล์, ฟลัช, ฯลฯ และด้วยชื่อเดียวกัน


มันไม่ทำงานมันบ่นว่า*argเป็นจุดเริ่มต้น (python 2.7) และวางไว้ที่ท้ายเรียกใช้ แต่ไม่ทำงานอย่างถูกต้อง ฉันกำหนดฟังก์ชั่นที่ใช้เวลาเพียงแล้วเรียกว่าเพียงแค่พิมพ์ด้วยPrint(*args) sep='', end=''และตอนนี้มันทำงานได้ตามที่ฉันต้องการ ดังนั้นหนึ่ง upvote สำหรับความคิด
Otzen

4

คำตอบเหล่านี้จำนวนมากดูเหมือนจะซับซ้อนเล็กน้อย ใน Python 3.x คุณทำได้ดังนี้:

print(<expr>, <expr>, ..., <expr>, end=" ")

"\n"ค่าเริ่มต้นของการสิ้นสุดคือ เราเพียงแค่เปลี่ยนเป็นที่ว่างหรือคุณสามารถใช้end=""(ไม่มีที่ว่าง) เพื่อทำสิ่งที่printfปกติทำ


3

คุณต้องการพิมพ์บางสิ่งบางอย่างเพื่อให้ถูกต้อง แต่คุณไม่ต้องการให้พิมพ์ในบรรทัดใหม่ทุกครั้ง .. ตัวอย่างเช่น:

 for i in range (0,5):
   print "hi"

 OUTPUT:
    hi
    hi
    hi
    hi
    hi

แต่คุณต้องการพิมพ์แบบนี้: สวัสดีสวัสดีสวัสดีสวัสดีสวัสดีสวัสดีใช่มั้ย ???? เพียงเพิ่มเครื่องหมายจุลภาคหลังจากพิมพ์ "hi"

ตัวอย่าง:

for i in range (0,5): print "hi", OUTPUT: hi hi hi hi hi


5
ไม่ OP ต้องการ hihihihihi ไม่ใช่สวัสดีสวัสดีสวัสดีสวัสดี
Cool Javelin


0
for i in xrange(0,10): print '\b.',

สิ่งนี้ใช้ได้ทั้งใน 2.7.8 และ 2.5.2 (Canopy และเทอร์มินัล OSX ตามลำดับ) - ไม่จำเป็นต้องนำเข้าโมดูลหรือเดินทางข้ามเวลา


8
ที่พิมพ์อักขระถอยกลับไปที่เอาต์พุตมาตรฐาน อาจมีลักษณะที่ถูกต้องหากเอาต์พุตมาตรฐานเกิดขึ้นเป็นเทอร์มินัล แต่หากถูกเปลี่ยนเส้นทางไปยังไฟล์นั้นไฟล์นั้นจะมีอักขระควบคุม
Keith Thompson

1
จริง แต่ฉันไม่สามารถจินตนาการได้ว่าทุกคนต้องการจะใช้นี้สำหรับสิ่งอื่นนอกเหนือจากแถบความคืบหน้าต่ำเทคโนโลยี ...
tyersome

1
อย่างไรก็ตามรหัส Python ไม่ได้ทำสิ่งเดียวกันกับรหัส C ในคำถาม
Keith Thompson

คุณสามารถทดสอบsys.stdout.isatty()หากไม่ได้เปลี่ยนเส้นทางไปยังไฟล์
FCM

0

มีวิธีการทั่วไปสองวิธีดังนี้:

พิมพ์โดยไม่ต้องขึ้นบรรทัดใหม่ใน Python 3.x

ผนวกอะไรหลังจากคำสั่งพิมพ์และลบ '\ n' โดยใช้end='' เป็น:

>>> print('hello')
hello  # appending '\n' automatically
>>> print('world')
world # with previous '\n' world comes down

# solution is:
>>> print('hello', end='');print(' world'); # end with anything like end='-' or end=" " but not '\n'
hello world # it seem correct output

อีกตัวอย่างในวง :

for i in range(1,10):
    print(i, end='.')

พิมพ์โดยไม่ต้องขึ้นบรรทัดใหม่ใน Python 2.x

\nการเพิ่มเครื่องหมายจุลภาคต่อท้ายกล่าวว่าหลังจากที่พิมพ์ไม่สนใจ

>>> print "hello",; print" world"
hello world

อีกตัวอย่างในวง :

for i in range(1,10):
    print "{} .".format(i),

หวังว่านี่จะช่วยคุณได้ คุณสามารถเยี่ยมชมลิงค์นี้


แล้วอวกาศล่ะ?
shrewmouse

ใช้end=" "เช่น: print ('hello', end = '' "); print ('world')
susan097

โซลูชัน 2.7 ของคุณไม่ลบพื้นที่
shrewmouse

ฉันพูดถึงว่าการลบ '\ n' ไม่ใช่ช่องว่างพื้นที่เป็นค่าเริ่มต้นใน python2 ดูสิ่งนี้มีลักษณะ: print 'hello' ;print'there'ในpaiza.io/projects/e/35So9iUPfMdIORGzJTb2NQ
susan097

นั่นคือเหตุผลที่คำตอบของคุณถูกโหวต คุณไม่ได้ตอบคำถาม "วิธีการพิมพ์โดยไม่ต้องขึ้นบรรทัดใหม่หรือเว้นวรรค" คำตอบของคุณสำหรับ 2.x ไม่ได้ตอบคำถาม คุณตอบสำหรับ 3.0 เหมือนกับคำตอบอื่น ๆ ที่โพสต์เมื่อเก้าปีที่แล้ว คำตอบนี้ไม่ได้เพิ่มประโยชน์ใด ๆ แก่ชุมชนและคุณควรลบทิ้ง
shrewmouse

-3

... คุณไม่จำเป็นต้องนำเข้าห้องสมุดใด ๆ เพียงใช้อักขระลบ:

BS=u'\0008' # the unicode for "delete" character
for i in range(10):print(BS+"."),

สิ่งนี้จะลบบรรทัดใหม่และช่องว่าง (^ _ ^) *

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.