Python使用for循环对齐文本

2024-10-01 15:40:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用for循环对齐一些下一个,如下所示

def display_name(first_name,last_name,align1,length1,align2,length2):

 str = ""
 
 #first name
 #align left
 if align1 == "L":
   str = first_name
   for i in range(0, length1 - len(first_name)):
       str += " "
 print("First name")       
 print(str)
 
 #align right
 if align1 == "R":
   str = first_name
   for i in range(0, length1 - len(first_name)):
       str += " "
       str += first_name
 print("First name")       
 print(str)
 
 #align centre
 if align1 == "C":
   str = first_name
   for i in range(0, length1 - len(first_name)):
       str += " "
       str += first_name
 print("First name")       
 print(str)


 display_name("John", "Smith", "L", 12, "R", 10)

如您所见,我有3个主要的代码块,每个对齐类型一个。当我运行代码时,左对齐有效,但是,右对齐和中心对齐不起作用,因为所有文本都是左对齐的

First name
John        
First name
John        
First name
John  

如果能在不使用格式的情况下帮助文本对齐中心和右侧,则必须用于循环,我们将不胜感激


Tags: nameinforlenifdisplayrangejohn
2条回答

如果允许使用,我建议使用标准字符串函数进行格式化

  • 左对齐
  • 朱斯特:对
  • 中心:中心

样本

def display_name(first_name,last_name,align1,length1,align2,length2):  
  align_map = {
      "L": str.ljust,
      "R": str.rjust,
      "C": str.center
  }
  print("First name")
  print (align_map[align1](first_name, length1))

  print("Last name")
  print (align_map[align2](last_name, length2))

  # Or just
  # print(f"First name:\n{align_map[align1](first_name, length1)}\nLast name:\n{align_map[align2](last_name, length2)}")

display_name("John", "Smith", "L", 12, "R", 10)

输出:

First name
John        
Last name
     Smith

我看到的一件事是,你的右对齐和中对齐将名字放在第一位,然后重复它。试试这个怎么样:

def display_name(first_name,last_name,align1,length1,align2,length2):
  str = ""

  # Left section leave as is

  #align right
    if align1 == "R":
      # Put the spaces in first, THEN the name.    
      for i in range(0, length1 - len(first_name)):
        str += " "
      str += first_name               
      print("First name")
      print(str)

  #align centre
    if align1 == "C":
      # Put in half the spaces first, THEN the name, THEN the rest of the spaces.
      for i in range(0, (length1 - len(first_name))//2):
        str += " "
      str += first_name 
      for i in range(0, length1 - len(str)):
        str += " "
      print("First name")
      print(str)

显然,根据您的需要更新姓氏

相关问题 更多 >

    热门问题