删除集中的项目

时间:2014-08-03 01:03:36

标签: python-2.7 python-3.x input numbers set

我有一个函数,它接受一个集合,打印最小值/最大值,然后要求用户删除集合中的项目,直到集合为空。

我的代码:

def deleteFromNumSet(numsSet):
    while len(numsSet)!=0:
        print("Max is",max(numsSet),"and Min is", min(numsSet))
        num=input("Enter a number between the two.")
        if num in numsSet:
            print("The number is in the set.")
            numsSet.remove(num)
        else:
            print("The number is not in the set.")
    return("No more numbers left in the set.")

代码会说“数字不在集合中”,无论它是否实际存在于集合中。它使用repl.it上的模拟器(这是我最初编写它的地方),但它不适用于我的Python程序(我目前使用的是3.4.1版本)。我想知道为什么它在python的(较旧的)版本上工作但现在不起作用,以及适用于当前版本的python的解决方案。

1 个答案:

答案 0 :(得分:4)

input()会返回字符串,而不是整数。如果我们的集合包含整数,那么Python就不会认为字符串等于数字。

首先将输入转换为整数:

num = int(input("Enter a number between the two."))

在Python 2.7中,input()是一个不同的功能;它基本上和eval(input())在Python 3中的作用相同。因此它会自动将数字解释为Python整数文字。

要使您的代码在Python 2和3中都能正常运行,需要在这两个版本上获得更多经验。如果您真的想这样做,请参阅Porting Python 2 Code to Python 3操作方法。