昨天遇到个奇葩,在测试代码的时候运行了以下文件源代码,结果卡屏了,尝试了两次
本人在外借用图书馆的电脑,也不知道是不是这个原因,属实不理解原因,
如果有网友想尝试的话建议使用虚拟机测试一下,是否真的会卡屏
# x轴确定
x_all = [2, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9,
4, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9, 5, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9,
6, 6.1, 6.2, 6.3, 6.4, 6.5, 6.6, 6.7, 6.8, 6.9, 7, 7.1, 7.2, 7.3, 7.4, 7.5, 7.6, 7.7, 7.8, 7.9,
8, 8.1, 8.2, 8.3, 8.4, 8.5, 8.6, 8.7, 8.8, 8.9, 9]
for i in x_all:
def_math = ["{} + '.PM'".format(i)]
x_all += def_math
print(x_all)
【以下回答由 GPT 生成】
问题分析:根据给出的代码,遍历列表x_all
时,每次循环都向x_all
中添加一个元素,导致列表无限增长,从而可能引起卡屏问题。
解决方案:将循环遍历改为在新的列表中操作。
x_all = [2, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9,
4, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9, 5, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9,
6, 6.1, 6.2, 6.3, 6.4, 6.5, 6.6, 6.7, 6.8, 6.9, 7, 7.1, 7.2, 7.3, 7.4, 7.5, 7.6, 7.7, 7.8, 7.9,
8, 8.1, 8.2, 8.3, 8.4, 8.5, 8.6, 8.7, 8.8, 8.9, 9]
new_x_all = []
for i in x_all:
def_math = "{}.PM".format(i)
new_x_all.append(def_math)
print(new_x_all)
运行以上代码,将无限增长的x_all
修改为new_x_all
列表,每次循环向new_x_all
中添加一个字符串,最终输出结果。这样即可解决卡屏问题。
请注意:在虚拟机中运行的结果可能会卡屏,因此并不建议使用虚拟机来测试这段代码。
【相关推荐】
这个是死循环了把,遍历列表x_all的同时,在循环中不断添加元素到列表x_all中,循环就会遍历不完列表了,然后在循环执行过程中,当列表x_all达到一定长度,占用计算机大部分内存后,电脑就会出现卡顿或者直接卡死;
推测代码的逻辑可能有问题,如果是要利用列表x_all中的值产生一定的格式的字符串,可以将每个格式后的字符串添加到一个新列表即可。
测试代码如下:
# x轴确定
x_all = [2, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9,
4, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9, 5, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9,
6, 6.1, 6.2, 6.3, 6.4, 6.5, 6.6, 6.7, 6.8, 6.9, 7, 7.1, 7.2, 7.3, 7.4, 7.5, 7.6, 7.7, 7.8, 7.9,
8, 8.1, 8.2, 8.3, 8.4, 8.5, 8.6, 8.7, 8.8, 8.9, 9]
# 可以将产生的指定格式的字符串添加到新列表al中
al=[]
for i in x_all:
def_math = ["{} + '.PM'".format(i)]
#def_math = ["{}.PM'".format(i)] # 不知道是不是要这种格式的字符串结果
al += def_math
print(al)
a=input() # 按下回车继续下一步
j=0
# 观察原代码的执行过程
print(len(x_all))
for i in x_all:
def_math = ["{} + '.PM'".format(i)]
x_all += def_math
print("j=",j,"len(x_all)=",len(x_all),"i=",i,"x_all=",x_all)
print()
j+=1
a=input() # 按下回车继续下一步
#print(x_all)