【发布时间】:2019-10-28 21:35:17
【问题描述】:
如果有人知道如何做到这一点,我正在尝试摆脱这个 yield 和 '%g' 语句并用 return 语句替换它。除此之外,我正在尝试使它真正像函数一样工作,您可以将变量传递给它并将范围作为列表获取,但我也不知道该怎么做。任何帮助,将不胜感激。我对这个很迷茫。
代码应该充当范围函数,但返回一个列表。
def myRange(start, stop=None, step=None):
if stop == None:
stop = start
if step == None:
step = 1
while True:
if step > 0 and start >= stop:
break
elif step < 0 and start <= stop:
break
yield ("%g" % start)
start = start + step
lyst = myRange(0.5, 1.0, 0.1)
for num in lyst:
print (num)
【问题讨论】:
-
首先,你为什么不
append将项目添加到列表中而不是让它们生成?无论如何,您为什么要字符串格式 数字?最后,为什么不只是return list(range(start, stop, step))? -
我应该怎么做而不是字符串格式?我想摆脱整个 yield 代码行。
-
既然你想要一个列表——为什么不建立一个呢?既然您不想对数字进行字符串格式化——为什么不按原样使用数字呢?
-
我收到此错误 - TypeError: 'NoneType' object is not iterable - 当我删除代码行时。以及我需要摆脱 - lyst = myRange(0.5, 1.0, 0.1) for num in lyst: print (num)
-
您必须替换该行,而不是删除它。你知道如何追加到列表吗?
标签: python list user-defined-functions