2016-07-28 90 views
1

我想知道你是否能够提供帮助,因为我一直在寻找这个好半小时,而我完全困惑不解,我想我必须错过一些东西,所以我希望你可以在这里说明一些事情。最小和最大查询无法正常工作(Python 3.5)

在我的程序的这个区域中,我编写了一个查询,它将搜索人员薪水的元组列表。列表中的每个元组都是一个单独的人员详细记录,因此我使用了两个索引;一个用于循环记录,另一个用于员工的工资。我的目标是让该计划向你询问最低和最高工资,并且让该计划打印出该工资范围内雇员的姓名。

这一切似乎工作正常,直到我意识到,作为最大值输入值“100000”时,查询将不输出任何内容。我非常困惑,我尝试输入“999999”,然后运行,所有记录都打印出来。我能想到的唯一的事情就是程序忽略了额外的数字,我无法弄清楚为什么会这样?!

下面是我的代码,为特定的部分和输出的最大值999999(我宁愿不粘贴整个程序,因为这是一个课程作品项目,我想防止任何人在同一课程潜在复制我的工作,对不起,如果这使得我的问题不清楚!):

所有记录中的最高工资是55000,因此,为什么它没有任何意义,至少0和最大100000不起作用,但最大999999呢!

如果需要更多信息请帮助!这可能似乎不清楚,但正如我上面所说的,我不希望任何人从课堂上剽窃,我的工作因此而无效!所以我试图在没有发布我的代码的情况下询问这个问题!

回答

1

鉴于您使用了print函数(而不是Python 2 print语句),它看起来像是在编写Python 3代码。在Python 3中,input返回str。我猜你的数据也存储在str(否则比较会提高TypeError)工资。您需要将两个存储的值和input的结果转换为int,以便执行数字比较,而不是ASCII码比较。

+0

谢谢!我完全明白你说的是对的,但是我对如何将存储值转换为整数有点不确定,因为课程要求我从.txt文件导入记录,所以它们以str类型和我不知道我是如何改变这一点的! – RonB7

+0

我通过将用户输入更改为int(input(“”))''来轻松转换用户输入,因此不需要担心 – RonB7

+0

@RJB:在解析'.txt'文件的代码中,您需要确保它是将相关值转换为“int”。例如,如果文件只是空格分隔的文本,你可以使用'record = line.split()','record [2] = int(record [2])','tuplist.append(tuple(record)) ' – ShadowRanger

1

当您从Python的标准输入中读入数据时,无论输入什么内容,都会以字符串形式接收输入。这意味着您的比较功能是:

if tuplist[x][2] > "0" and tuplist[x][2] < "999999" : 

您能否看到现在的问题?因为这是一项家庭作业,我不想马上给你答案。