Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-格式化元组/字符串_Python_Python 3.x - Fatal编程技术网

Python-格式化元组/字符串

Python-格式化元组/字符串,python,python-3.x,Python,Python 3.x,对于我正在拼命学习的课程作业,我尝试将输入设置到字典中,然后使用它格式化和打印字符串,以便显示如下所示 名称应使用上面显示的格式显示,因此您需要创建一个包含此格式名称的字符串,并在固定宽度字段中打印。您可以假设,在此格式中显示时,任何名称都不会包含超过30个字符,任何部门都不会包含超过15个字符,工资单编号最多包含5位数字,所有工资都将是小于100000的整数 到目前为止,我只能做到这一点,因为每次我似乎修改第9行中的任何一行,它都会返回一个错误,即“元组索引必须是整数或切片,而不是字符串”,但

对于我正在拼命学习的课程作业,我尝试将输入设置到字典中,然后使用它格式化和打印字符串,以便显示如下所示

名称应使用上面显示的格式显示,因此您需要创建一个包含此格式名称的字符串,并在固定宽度字段中打印。您可以假设,在此格式中显示时,任何名称都不会包含超过30个字符,任何部门都不会包含超过15个字符,工资单编号最多包含5位数字,所有工资都将是小于100000的整数

到目前为止,我只能做到这一点,因为每次我似乎修改第9行中的任何一行,它都会返回一个错误,即“元组索引必须是整数或切片,而不是字符串”,但我不知道如何做到这一点

payroll = int(input("Enter your Payroll.")) 
department = input("Enter your Department Name.") 
salary = int(input("Enter your Salary."))
forename = input("Enter your Forename.")
surname = input("Enter your Surname.")

list_lect = payroll, department, salary, forename, surname

str = '{0[4]},{0[3]}{0[0:5]} {0[2]}    {0[3]}'.format(list_lect)

print(str)

如果有人在python中苦苦挣扎,我们将非常感谢您的帮助。

您为什么需要这个?据我所知,用空格打印一个元组是不可能的,但我相信有另一种方法可以实现您所寻找的。除此之外,还有一种解决方法,比如说,虽然您没有打印元组

indexs = {
    payroll = 0,
    dept = 1,
    salary = 2,
    name = 3,
    surname = 4
}
str = "('{surname}', '{name}'      '{payroll}', '{dept}'      
'{salary}')".format(surname = z[indexs[surname]], name = z[indexs[name]], 
payroll = z[indexs[payroll]], dept = z[indexs[dept]], salary = 
z[indexs[salary]])
print(str)

这并不完美,因为它只是字符串格式,但如果您希望输出的内容与您所说的完全一致,这是唯一的方法。当然,你的目标可能会大不相同。无论如何,希望这有助于

,同时可以简单地使用打印功能以您想要的方式打印:

a = ('Surname', 'Forename', 'Payroll', 'Department', 'Salary')
def printer(tup):
        print_string = str("(")
        pad = 24
        print_string += ", ".join(tup[:2]).ljust(pad)
        print_string += ", ".join(tup[2:4]).ljust(pad)
        print_string += tup[-1] + ")"
        print(print_string)

>>> printer(a)
(Surname, Forename       Payroll, Department     Salary)
我建议用另一种方式处理这件事会更干净。也许我可以建议分别接受这些值,然后以命名的方式组合它们。像这样

payroll = input("Enter your Payroll.") 
department = input("Enter your Department Name.") 
salary = input("Enter your Salary.")
forename = input("Enter your Forename.")
surname = input("Enter your Surname.")
然后,您可以执行所需的分组,并以更理智的方式打印它们

print("%s, %s      %s, %s     %s" % (surename, forename, .....etc)

然后你可以将它们存储在一个有意义的数据结构中

元组不可能那样打印。我可以问一下,除了不可能以这种方式打印元组之外,你为什么要以这种格式打印它吗?元组是一种数据结构,并且与该结构在屏幕上的显示方式无关。当然,您可以按照任何方式打印数据结构中的数据。这是一项课程作业所必需的。有没有可能再次将元组更改为列表,然后将其格式化?@Shaun你确定教授不想让你这样打印元组中的数据?复制实际作业文本,明确这是一个家庭作业问题。通过编辑问题而不是粘贴到评论中来完成此操作
print("%s, %s      %s, %s     %s" % (surename, forename, .....etc)