Hướng dẫn how do you do equal spacing in python? - làm thế nào để bạn có khoảng cách bằng nhau trong python?

Tôi đang cố gắng để dữ liệu đầu ra của mình trông như thế này:

-------------------------------------------------------
            Grade Report for Programs 
-------------------------------------------------------
Jacobson, Mark      19.0 <--- 20,17,20
Snurd, Mortimur     16.5 <--- 20,19,18,17,16,15,14,13
Luxemburg, Rosa     15.0 <--- 18,15,20,10,12
Atanasoff, John     20.0 <--- 20,20,20,20,20,20,20
Hopper, Grace       20.0 <--- 20,20,20,20,20,20
-------------------------------------------------------

Nhưng tôi không biết làm thế nào để đối phó với độ dài tên khác nhau. Đầu ra của tôi hiện trông như thế này.


            Grade Report for Programs 
-------------------------------------------------------
Jacobson, Mark   19.0 <--- 20,17,20
Snurd, Mortimur   16.5 <--- 20,19,18,17,16,15,14,13
Luxemburg, Rosa   15.0 <--- 18,15,20,10,12
Atanasoff, John   20.0 <--- 20,20,20,20,20,20,20
Hopper, Grace   20.0 <--- 20,20,20,20,20,20
-------------------------------------------------------

Chương trình tôi đã viết là lấy một tệp đầu vào của điểm số và thu thập dữ liệu và in gọn gàng trung bình.

Tệp đầu vào trông giống như thế này:

Mark Jacobson,20,17,20
Mortimur Snurd,20,19,18,17,16,15,14,13
Rosa Luxemburg,18,15,20,10,12
John Atanasoff,20,20,20,20,20,20,20
Grace Hopper,20,20,20,20,20,20

Và đây là mã của tôi thu thập tên và điểm số, và in ra dữ liệu bằng tên cuối cùng, tên, điểm trung bình, sau đó điểm thực tế dẫn đến mức trung bình.

file = input("Enter filename: ")

grade_file = open(file, 'r')

print()

print('---------------------------------------------------------')
print('\t\tGrade Report for Programs')
print('---------------------------------------------------------')

for text in grade_file:
    end_of_name = text.find(',')
    name_seperated = text.find(' ')

    first_name = text[0:name_seperated]
    last_name = text[name_seperated+1:end_of_name]

    name_last_first = last_name + "," + " " + first_name

    grades = text[end_of_name+1:]

    start = 0
    index = 0
    sum_n = 0
    average= 0
    score = 0
    count = 0

    while index < len(grades):
        if grades[index] == ',':
            score = int(grades[start:index])
            count += 1
            sum_n = score + sum_n
            start = index + 1
        index += 1

    count += 1       

    score = int(grades[start:index])
    sum_n = score + sum_n
    average = sum_n / count



    print(name_last_first, " ", average, "<---", grades)


print('---------------------------------------------------------')


grade_file.close()

Tôi chỉ cần tìm ra cách để có các khoảng trống để nó tạo ra một hàng và cột thậm chí giống như đầu ra đầu tiên. Trợ giúp được đánh giá rất cao! Cảm ơn!

Trong bài đăng cuối cùng, chúng tôi đã học được cách kiểm soát độ chính xác của số chúng tôi in cũng như số lượng không gian mà các số này chiếm. Điều cuối cùng chúng ta cần học để xuất ra các bảng dữ liệu đẹp là cách căn chỉnh văn bản và số khi chúng ta sử dụng ____10.

Căn chỉnh văn bản và số với .format ()

Trước đây chúng tôi đã học cách chỉ định số lượng khoảng trống được phân bổ cho các đầu vào chúng tôi cung cấp cho

            Grade Report for Programs 
-------------------------------------------------------
Jacobson, Mark   19.0 <--- 20,17,20
Snurd, Mortimur   16.5 <--- 20,19,18,17,16,15,14,13
Luxemburg, Rosa   15.0 <--- 18,15,20,10,12
Atanasoff, John   20.0 <--- 20,20,20,20,20,20,20
Hopper, Grace   20.0 <--- 20,20,20,20,20,20
-------------------------------------------------------
0. Bây giờ chúng ta sẽ thấy rằng chúng ta có thể nói với Python về cách chúng ta muốn sắp xếp văn bản hoặc số của chúng ta trong các không gian này. Chúng tôi có thể điều chỉnh bên trái (
            Grade Report for Programs 
-------------------------------------------------------
Jacobson, Mark   19.0 <--- 20,17,20
Snurd, Mortimur   16.5 <--- 20,19,18,17,16,15,14,13
Luxemburg, Rosa   15.0 <--- 18,15,20,10,12
Atanasoff, John   20.0 <--- 20,20,20,20,20,20,20
Hopper, Grace   20.0 <--- 20,20,20,20,20,20
-------------------------------------------------------
2), điều chỉnh phải (
            Grade Report for Programs 
-------------------------------------------------------
Jacobson, Mark   19.0 <--- 20,17,20
Snurd, Mortimur   16.5 <--- 20,19,18,17,16,15,14,13
Luxemburg, Rosa   15.0 <--- 18,15,20,10,12
Atanasoff, John   20.0 <--- 20,20,20,20,20,20,20
Hopper, Grace   20.0 <--- 20,20,20,20,20,20
-------------------------------------------------------
3) và trung tâm (
            Grade Report for Programs 
-------------------------------------------------------
Jacobson, Mark   19.0 <--- 20,17,20
Snurd, Mortimur   16.5 <--- 20,19,18,17,16,15,14,13
Luxemburg, Rosa   15.0 <--- 18,15,20,10,12
Atanasoff, John   20.0 <--- 20,20,20,20,20,20,20
Hopper, Grace   20.0 <--- 20,20,20,20,20,20
-------------------------------------------------------
4) các giá trị của chúng tôi. Đây là một ví dụ ngắn gọn:

# Example 1
print('L {:<20} R'.format('x'))
# Example 2
print('L {:^20} R'.format('x'))
# Example 3
print('L {:>20} R'.format('x'))

Đầu ra của các ví dụ này là:

Tuyệt đấy. Chúng tôi đã nói với Python để lại 20 không gian cho văn bản chúng tôi muốn nhập và tùy thuộc vào biểu tượng chúng tôi đã chỉ định, chúng tôi có thể thay đổi sự biện minh của văn bản của chúng tôi.

Bạn thậm chí có thể chỉ định ký tự bạn muốn sử dụng thay vì khoảng trống.

print ('{:=<20}'.format('hello'))
print ('{:_^20}'.format('hello'))
print ('{:.>20}'.format('hello'))

Đầu ra của các ví dụ này là:

hello===============
_______hello________
...............hello

Như bạn có thể thấy,

            Grade Report for Programs 
-------------------------------------------------------
Jacobson, Mark   19.0 <--- 20,17,20
Snurd, Mortimur   16.5 <--- 20,19,18,17,16,15,14,13
Luxemburg, Rosa   15.0 <--- 18,15,20,10,12
Atanasoff, John   20.0 <--- 20,20,20,20,20,20,20
Hopper, Grace   20.0 <--- 20,20,20,20,20,20
-------------------------------------------------------
0 có rất nhiều tùy chọn. Truy cập tài liệu chuỗi hoặc trang web hữu ích này nếu bạn muốn tìm hiểu thêm.

Để tất cả chúng cùng nhau

Khi làm việc với dữ liệu, chúng tôi thường muốn có một cái nhìn nhanh để đảm bảo không có sai lầm và để xem liệu có bất kỳ mẫu nào có mặt không. Một cách để làm điều này là vẽ dữ liệu của bạn. Tuy nhiên, một số loại dữ liệu có xu hướng được trình bày tốt hơn trong một bảng có cấu trúc độc đáo.

Trong ví dụ này, chúng tôi sẽ làm việc với một số dữ liệu trang điểm:

data = [['NAME', 'AGE', 'HANDEDNESS', 'SCORE (%)'],
        ['Martin', 38, 'L', 54.123],
        ['Marty', 33, 'L', 32.438],
        ['Martine', 25, 'R', 71.128],
        ['Martyn', 59, 'R', 50.472],
        ['Mart', 23, 'L', 2.438],
        ['Martyne', 15, 'R', 71.128],
        ['Marlyn', 101, 'R', 0.472],
        ['Marti', 2, 'L', 55.438],
        ['Mardi', 9, 'R', 81.128],
        ['Martyne', 49, 'R', 24.472],
        ['Marteen', 91, 'L', 1.128]]

Lưu ý rằng hàng dữ liệu đầu tiên (

            Grade Report for Programs 
-------------------------------------------------------
Jacobson, Mark   19.0 <--- 20,17,20
Snurd, Mortimur   16.5 <--- 20,19,18,17,16,15,14,13
Luxemburg, Rosa   15.0 <--- 18,15,20,10,12
Atanasoff, John   20.0 <--- 20,20,20,20,20,20,20
Hopper, Grace   20.0 <--- 20,20,20,20,20,20
-------------------------------------------------------
6) chứa các nhãn cột. Các hàng khác chứa dữ liệu cho từng đối tượng.

Như bạn có thể nghi ngờ, chạy

            Grade Report for Programs 
-------------------------------------------------------
Jacobson, Mark   19.0 <--- 20,17,20
Snurd, Mortimur   16.5 <--- 20,19,18,17,16,15,14,13
Luxemburg, Rosa   15.0 <--- 18,15,20,10,12
Atanasoff, John   20.0 <--- 20,20,20,20,20,20,20
Hopper, Grace   20.0 <--- 20,20,20,20,20,20
-------------------------------------------------------
7 không dẫn đến đầu ra đẹp (hãy thử để xem cho chính mình!). Một giải pháp tốt hơn là áp dụng những gì chúng ta đã học để tạo ra một bảng đẹp. Đây là mã:

dash = '-' * 40

for i in range(len(data)):
    if i == 0:
      print(dash)
      print('{:<10s}{:>4s}{:>12s}{:>12s}'.format(data[i][0],data[i][1],data[i][2],data[i][3]))
      print(dash)
    else:
      print('{:<10s}{:>4d}{:^12s}{:>12.1f}'.format(data[i][0],data[i][1],data[i][2],data[i][3]))

Đầu ra của mã này trông như thế này:

----------------------------------------
NAME       AGE  HANDEDNESS   SCORE (%)
----------------------------------------
Martin      38     L              54.1
Marty       33     L              32.4
Martine     25     R              71.1
Martyn      59     R              50.5
Mart        23     L               2.4
Martyne     15     R              71.1
Marlyn     101     R               0.5
Marti        2     L              55.4
Mardi        9     R              81.1
Martyne     49     R              24.5
Marteen     91     L               1.1

Về mặt mã, trước tiên chúng tôi tạo một biến gọi là

            Grade Report for Programs 
-------------------------------------------------------
Jacobson, Mark   19.0 <--- 20,17,20
Snurd, Mortimur   16.5 <--- 20,19,18,17,16,15,14,13
Luxemburg, Rosa   15.0 <--- 18,15,20,10,12
Atanasoff, John   20.0 <--- 20,20,20,20,20,20,20
Hopper, Grace   20.0 <--- 20,20,20,20,20,20
-------------------------------------------------------
8 chứa 40 dấu gạch ngang.

Mã sau đó đã lặp qua mỗi trong số 12 mục trong biến

            Grade Report for Programs 
-------------------------------------------------------
Jacobson, Mark   19.0 <--- 20,17,20
Snurd, Mortimur   16.5 <--- 20,19,18,17,16,15,14,13
Luxemburg, Rosa   15.0 <--- 18,15,20,10,12
Atanasoff, John   20.0 <--- 20,20,20,20,20,20,20
Hopper, Grace   20.0 <--- 20,20,20,20,20,20
-------------------------------------------------------
9 của chúng tôi. Nếu chúng tôi đang xử lý mục đầu tiên của mình (tức là,
Mark Jacobson,20,17,20
Mortimur Snurd,20,19,18,17,16,15,14,13
Rosa Luxemburg,18,15,20,10,12
John Atanasoff,20,20,20,20,20,20,20
Grace Hopper,20,20,20,20,20,20
0), chúng tôi nói với Python rằng chúng tôi muốn in một dòng dấu gạch ngang, sau đó in các tiêu đề của chúng tôi, theo sau là một dòng dấu gạch ngang khác. Lưu ý cách chúng tôi chỉ định số lượng không gian chúng tôi muốn cho mỗi tiêu đề cũng như sự liên kết của văn bản.

Đối với tất cả các mục khác trong biến

            Grade Report for Programs 
-------------------------------------------------------
Jacobson, Mark   19.0 <--- 20,17,20
Snurd, Mortimur   16.5 <--- 20,19,18,17,16,15,14,13
Luxemburg, Rosa   15.0 <--- 18,15,20,10,12
Atanasoff, John   20.0 <--- 20,20,20,20,20,20,20
Hopper, Grace   20.0 <--- 20,20,20,20,20,20
-------------------------------------------------------
9 của chúng tôi, chúng tôi in văn bản và giá trị bằng cùng một số không gian được sử dụng cho tiêu đề và chỉ định xem chúng tôi có muốn in số nguyên (
Mark Jacobson,20,17,20
Mortimur Snurd,20,19,18,17,16,15,14,13
Rosa Luxemburg,18,15,20,10,12
John Atanasoff,20,20,20,20,20,20,20
Grace Hopper,20,20,20,20,20,20
2), một chuỗi (
Mark Jacobson,20,17,20
Mortimur Snurd,20,19,18,17,16,15,14,13
Rosa Luxemburg,18,15,20,10,12
John Atanasoff,20,20,20,20,20,20,20
Grace Hopper,20,20,20,20,20,20
3) hoặc số điểm nổi (
Mark Jacobson,20,17,20
Mortimur Snurd,20,19,18,17,16,15,14,13
Rosa Luxemburg,18,15,20,10,12
John Atanasoff,20,20,20,20,20,20,20
Grace Hopper,20,20,20,20,20,20
4 ). Lưu ý rằng vì
Mark Jacobson,20,17,20
Mortimur Snurd,20,19,18,17,16,15,14,13
Rosa Luxemburg,18,15,20,10,12
John Atanasoff,20,20,20,20,20,20,20
Grace Hopper,20,20,20,20,20,20
5 là một từ dài, nên có vẻ tốt hơn để tập trung văn bản được in bên dưới nó. Mặt khác, căn chỉnh giống như đối với hàng tiêu đề.

Hãy chắc chắn rằng bạn hiểu cách thức hoạt động của mã này. Để thực sự củng cố việc học của bạn, hãy thử thay đổi mọi thứ trong các câu lệnh in và xem liệu nó có tạo ra kết quả mong đợi không.

Sự kết luận

Hy vọng rằng bạn thích các hướng dẫn này trên phương thức chuỗi

            Grade Report for Programs 
-------------------------------------------------------
Jacobson, Mark   19.0 <--- 20,17,20
Snurd, Mortimur   16.5 <--- 20,19,18,17,16,15,14,13
Luxemburg, Rosa   15.0 <--- 18,15,20,10,12
Atanasoff, John   20.0 <--- 20,20,20,20,20,20,20
Hopper, Grace   20.0 <--- 20,20,20,20,20,20
-------------------------------------------------------
0 và hàm
Mark Jacobson,20,17,20
Mortimur Snurd,20,19,18,17,16,15,14,13
Rosa Luxemburg,18,15,20,10,12
John Atanasoff,20,20,20,20,20,20,20
Grace Hopper,20,20,20,20,20,20
7. Bây giờ bạn không còn lý do nào cho các câu lệnh in xấu xí và không chính xác!

Và nếu bạn muốn các câu lệnh in Python dễ đọc hơn, hãy xem xét sử dụng F-Strings. Như tôi thảo luận trong bài viết này, chúng là cách hiện đại để in văn bản bằng Python.

Làm thế nào để bạn làm không gian bằng nhau trong Python?

Sử dụng hàm trung tâm () để đệm cả hai đầu của một chuỗi có khoảng trắng trong Python.Hàm trung tâm () thêm phần đệm cho cả hai đầu của một chuỗi với số lượng bằng nhau.. The center() function adds padding to both ends of a string in equal amounts.

Làm thế nào để bạn biện minh cho in trong Python?

Lưu ý: Nếu bạn muốn đúng biện minh cho chuỗi, hãy sử dụng ljust ().Bạn cũng có thể sử dụng định dạng () để định dạng các chuỗi.use ljust(). You can also use format() for formatting of the strings.

Làm cách nào để in từ trái sang phải trong Python?

Căn chỉnh các chuỗi bằng phương thức định dạng () trong python để liên kết các chuỗi, chúng tôi sử dụng cùng một cú pháp mà chúng tôi sử dụng để liên kết các số.Để có được một chuỗi bên trái, chúng tôi sử dụng các trò chơi:To left-align a string, we use the “:.

Làm cách nào để in một bảng định dạng trong Python?

Làm thế nào để in bàn trong Python ?..
Sử dụng hàm định dạng () để in dict và danh sách ..
Sử dụng hàm Tabulation () để in Danh sách và Danh sách ..
texttable..
beautifultable..
PrettyTable..