我对Python和编程很新,所以请原谅我,如果代码很糟糕,问题很容易解决。
我编写了代码,允许用户根据3种不同的输入打印员工数据,允许用户选择。 用户可以选择的选项是根据员工的工资号码选择员工;最低和最高工资范围;他们的职称。
我为格式化做了两个函数。第一个将文本文件的行转换为列表,然后第二个函数抓取那些单独的列表并格式化它们。
然后代码请求用户输入文件名。如果找不到该文件,他们可以再试一次。如果正确,则加载文件,然后运行函数以打印出整齐的表格。
然后询问用户他们想要选择哪种方法来选择特定员工。它们有4个选项,3个在开始时提到,第4个是刚刚结束程序。
我设法成功地获得了第一个选项,可以毫不费力地打印出员工,结束程序的第四个选项也是如此。我几乎完成了第三个,我只需要找到一种方法来打印名称而不用逗号。 我的问题在于第二个选项:如果员工及其详细信息介于用户输入的最小和最大薪资范围之间,如果范围不是整数,则如何打印员工及其详细信息,因为它必须包含'£ '签署?
这是代码。这是该计划中最大的一块,因为我不知道如何让它正常工作 -
def detailsPrint(field) : #takes tuple and prints
print("{:30}" "{:6}" "{:15}" "{:7}".format(field[3] + ", " + field[4], field[0], field[2], "£" + field[1]))
if display == 2 :
maxSalary = "£1000000"
minpay = input("Enter the minimum pay : ")
maxpay = input("Enter the maximum pay : ")
if len(minpay) and len(maxpay) < maxSalary :
for s in employeeList :
if s[1] >= minpay :
detailsPrint(s)
结果应该是(例如)Simpson, Bart 12345 Consultant £55000
,如果minpay是50000英镑和maxpay£60000
编辑:管理以使其正常运行。这是代码
if display == 2 :
x = False
maxSalary = 1000000
minpay = int(input("Enter the minimum pay: "))
maxpay = int(input("Enter the maximum pay: "))
if int(minpay) > int(maxSalary) or int(maxpay) > int(maxSalary) :
x = False
print("No employees earn over £1000000. Try again.")
if int(minpay) or int(maxpay) < int(maxSalary) :
for s in employeeList :
if int(s[1]) >= minpay and int(s[1]) <= maxpay :
detailsPrint(s)
x = True
if x == False :
print("No employees could be found within that range. Try again")
print("\n")
答案 0 :(得分:2)
最简单的解决方案:不要求£char; - )
符合您要求的解决方案是更改行
if len(minpay) or len(maxpay) > maxSalary :
类似
if int(minpay[1:]) > int(maxSalary[1:]) or int(maxpay[1:]) > int(maxSalary[1:]) :
检查字符串的数值(无论如何你的情况似乎都错了)
答案 1 :(得分:0)
您可以将所有“£”符号替换为字符串中的“”。
YourString.replace("£", "")