我有一个函数,它接受一个集合,打印最小值/最大值,然后要求用户删除集合中的项目,直到集合为空。
我的代码:
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的解决方案。
答案 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操作方法。