我希望能够执行以下代码:
for i in Squares(5, 50):
print(i)
Run Code Online (Sandbox Code Playgroud)
现在使用循环很容易实现,但是我想使用迭代器.
所以我定义了以下类:
import math
class Squares(object):
def __init__(self, start, stop):
self.start = start
self.stop = stop
def __iter__(self):
return self
def __next__(self):
start = self.start
stop = self.stop
squareroot = math.sqrt(start)
if self.start > self.stop:
raise StopIteration
if squareroot == math.ceil(squareroot):
start += 1
Run Code Online (Sandbox Code Playgroud)
但目前这种情况None无数次返回.这意味着必须是因为StopIteration即使它不应该执行也是如此.我认为我的if squareroot == math.ceil(squareroot):情况是正确的,因为我单独测试它,但我无法弄清楚要改变什么来获得我想要的输出.任何帮助表示赞赏.
编辑:对于如下代码:
for i in Squares(4, 16):
print(i)
Run Code Online (Sandbox Code Playgroud)
我希望输出为:
4
9
16
Run Code Online (Sandbox Code Playgroud) 我想编写一个函数来评估作为列表传递的后缀表达式。到目前为止,我有:
def evalPostfix(text):
s = Stack()
for symbol in text:
if symbol in "0123456789":
s.push(int(symbol))
if not s.is_empty():
if symbol == "+":
plus = s.pop() + s.pop()
if symbol == "-":
plus = s.pop() - s.pop()
if symbol == "*":
plus = s.pop() * s.pop()
if symbol == "/":
plus = s.pop() / s.pop()
Run Code Online (Sandbox Code Playgroud)
但我认为我有错误的方法。帮助?
我正在尝试编写一段代码来处理负平方根的例外,因为我只想要一个正结果.我的代码是:
def sqRoot(x):
try:
result = (x)**0.5
except ValueError:
result = "This is a negative root"
except TypeError:
result = "Please enter a number"
return result
Run Code Online (Sandbox Code Playgroud)
出于某种原因,当我使用调用运行此代码时
x = sqRoot(-200)
Run Code Online (Sandbox Code Playgroud)
我没有得到错误,而是python给了我一个复数的结果.我似乎无法在代码中看到错误.