如何在整数范围之间打印字符串 - Python 3

时间:2017-12-17 21:15:50

标签: python python-3.x range

我对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")

2 个答案:

答案 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("£", "")