我定义了一个方法,如下所示:
class MyDatastructure(object):
# init method here
def appending(self, elem):
self.data.append(elem)
if self.count >= self.size:
print "popping " + str(self.data[0])
print "inserting " + str(elem)
self.data.pop(0)
elif self.count < self.size:
self.count += 1
print "count after end of method " + str(self.count)
我测试了它,它按原样运行。
在此定义下,我想处理一些用户输入并使用此方法。但是,它不再进入if案例了!知道为什么吗?
# in the same file
def process_input():
while True:
# getting user input
x = raw_input()
ds = MyDatastructure(x) # creating data structure of size, which was taken from user input, count initially 0
ds.appending(1)
ds.appending(2)
ds.appending(3)
# Still appending and NOT popping, even though the if in appending doesn't allow it!
# This functionality works if I test it without user input!
答案 0 :(得分:2)
问题在于这一行:
x = raw_input()
调用raw_input
将返回一个字符串。如果我输入数字3,这意味着数据结构将字符串"3"
分配给大小。
尝试将字符串与数字进行比较被认为是未定义的行为,并且会做出奇怪的事情 - 请参阅此StackOverflow answer。请注意,Python 3修复了这个奇怪的问题 - 尝试将字符串与int进行比较将导致发生TypeError
异常。
相反,您希望将其转换为int,以便您可以正确地进行大小比较。
x = int(raw_input())