python中函数的编程错误

问题遇到的现象和发生背景

练习python非数学函数中出现的一个问题

问题相关代码,请勿粘贴截图

def makelist(start, stop, inc):
    value=start
    result=[]
    while value<=stop:
        result.append(value)
    return result


mylist=makelist(0, 100, 0.2)
print(mylist)

mylist=makelist(0, 100, 0.2)
print(mylist)

运行结果及报错内容

以下为运行结果

Traceback (most recent call last):

  File ~\untitled0.py:16 in 
    mylist=makelist(0, 100, 0.2)

  File ~\untitled0.py:12 in makelist
    result.append(value)

MemoryError

MemoryError

我想要达到的结果

想要达成:0,0.2,0.4……99.8,100

while value<=stop:
result.append(value)
你在循环中要改变value的值啊,否则死循环

 
def makelist(start, stop, inc):
    value=start
    result=[]
    while value<=stop:
        result.append(round(value, 1))
        value = value + inc
    return result
 
 
mylist=makelist(0, 100, 0.2)
print(mylist)
 

问题,在循环中 没有改变 value 的值,导致 出现死循环。 修改代码如下

def makelist(start, stop, inc):
    value = start
    result = []
    while value <= stop:
        # 修改小数的精度
        result.append(round(value, 1))
        value += inc
    return result


mylist = makelist(0, 100, 0.2)
print(mylist)



1、value的值得变
2、输出的小数点后的小数点位控制在1位

def makelist(start, stop, inc):
    value = start
    result = []
    while value <= stop:
        result.append(round(value, 1))
        value += inc
    return result


mylist = makelist(0, 100, 0.2)
print(mylist)

```

忘记在循环中改变value值,导致value永远小于stop,所以程序会一直循环,最终导致内存溢出,记得修改一下就好了

 
def makelist(start, stop, inc):
    value=start
    result=[]
    while value<=stop:
        result.append(value)
        value = value + inc
    return result
 
 
mylist=makelist(0, 100, 0.2)
print(mylist)
 
 

def makelist(start, end, inc):
return [i for i in range(start, end+1, inc)]

while语句里value值始终是0,stop始终是100,0始终小于100,while始终在循环运行,result始终在append值,内存result占用内存始终在增加,系统内存可使用量始终在减小,所以必然会报内存不足的错误啊哥,死循环了已经。

问题,在循环中 没有改变 value 的值,导致 出现死循环。 修改代码如下
丶丶丶
def makelist(start, stop, inc):
value = start
result = []
while value <= stop:
# 修改小数的精度
result.append(round(value, 1))
value += inc
return result

mylist = makelist(0, 100, 0.2)
print(mylist)



问题

没有改变value的值

解决方案

将每一次的添加都写入value

代码

 
def makelist(start, stop, inc):
    value=start
    result=[]
    while value<=stop:
        value = value + inc # 这个是新增的代码,其他的没变
        result.append(value)
    return result
 
 
mylist=makelist(0, 100, 0.2)
print(mylist)
 


r = [round(i*0.2, 2) for i in range(0, round(100/0.2)+1)]
print(r)

def makelist(start, stop, inc):
value = start
result = []
while value <= stop:
result.append(round(value, 1))
value += inc
return result

mylist = makelist(0, 100, 0.2)
print(mylist)

你忘记修改value的值了,直接代码死循环,然后内存溢出报错了,按照你的描述应该修改成这样

def makelist(start, stop, inc):
    value=start
    result=[]
    while value<=stop:
        result.append(value)
        value += inc
    return result
 
 
mylist=makelist(0, 100, 0.2)
print(mylist)

可以查看手册:python-函数式编程模块 中的内容