|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
'
A = 0
for i in os.listdir(f'D:/stock/minute/'):
A += 1
print(i)
if not os.path.exists(f'D:/stock/minute1/{i}'):
# 文件夹不存在,创建文件夹
os.makedirs(f'D:/stock/minute1/{i}')
new_data = []
for s in os.listdir(f'D:/stock/minute/{i}'):
with open(f'D:/stock/minute/{i}/{s}', 'r', encoding=de) as shz:
shz1 = csv.reader(shz)
data = list(shz1)
del data[0]
sum_v, sum_amo, h, l, c, o = 0, 0, 0, 10000, 0, 0
a, aa, aaa = 0, 0, 0
for index, d in enumerate(data):
if d[1] <= '10:30':
sum_v += float(d[3])
sum_amo += float(d[4])
if float(d[2]) > h:
h = float(d[2])
if float(d[2]) < l:
l = float(d[2])
if d[1] == '10:30':
c, o = d[2], data[0][2]
temporary = [s[0:8], '10:30', o, c, h, l, sum_amo, sum_v]
new_data.append(temporary)
sum_v, sum_amo, h, l, c, o = 0, 0, 0, 10000, 0, 0
if '10:30' < d[1] <= '11:30':
if a == 0:
o = d[2]
a = 1
sum_v += float(d[3])
sum_amo += float(d[4])
if float(d[2]) > h:
h = float(d[2])
if float(d[2]) < l:
l = float(d[2])
if d[1] == '11:30' or (index + 1 < len(data) and d[1] <= '11:30' and data[index+1][1] > '11:30'):
c = d[2]
temporary = [s[0:8], '11:30', o, c, h, l, sum_amo, sum_v]
new_data.append(temporary)
sum_v, sum_amo, h, l, c, o = 0, 0, 0, 10000, 0, 0
if '11:30' < d[1] <= '14:00':
if aa == 0:
o = d[2]
aa = 1
sum_v += float(d[3])
sum_amo += float(d[4])
if float(d[2]) > h:
h = float(d[2])
if float(d[2]) < l:
l = float(d[2])
if d[1] == '14:00' or (index + 1 < len(data) and d[1] <= '14:00' and data[index+1][1] > '14:00'):
c = d[2]
temporary = [s[0:8], '14:00', o, c, h, l, sum_amo, sum_v]
new_data.append(temporary)
sum_v, sum_amo, h, l, c, o = 0, 0, 0, 10000, 0, 0
if d[1] > '14:00':
if aaa == 0:
o = d[2] # 我在这里为最后一次的o赋值了
print(o, aaa) # 这里的打印结果为 6.85 0
aaa = 1
sum_v += float(d[3])
sum_amo += float(d[4])
if float(d[2]) > h:
h = float(d[2])
if float(d[2]) < l:
l = float(d[2])
c = data[-1][2]
# print(o) #然而在这里取o的值时却是0,而不是6.85,这是怎么回事
temporary = [s[0:8], '15:00', o, c, h, l, sum_amo, sum_v]
new_data.append(temporary)
print(new_data)
break
break
'
根据描述,你的代码中有多个问题导致变量 o 的值在循环结束后不符合预期。以下是一些可能导致这个问题的原因和建议:
1. 变量作用域问题
在Python中,变量在其作用域内有效。若 o 被重新赋值而非在预期的范围内使用,可能会导致你在打印时看到的值与期望不同。
2. 缺乏必要的判断条件
确保逻辑中的判断条件都是正确的,特别是 if 语句中用于比较的条件。你的代码片段中有一些条件可能没有写完整或导致逻辑混乱。
3. 检查关键变量初始化和更新
确保每次循环开始前关键变量(如 o)被正确初始化。此外,检查 o 的更新逻辑,特别是在 if 条件发生变化时。
4. 修改并重构部分代码,提高可读性和调试能力
尝试简化代码的结构,减少嵌套层级,并添加调试信息来帮助确定变量的值以及何时更新。例如:
[code]
# 确保合理分配和清晰的逻辑
for index, d in enumerate(data):
if d > '14:00':
if aaa == 0:
o = d # 变量 o 在满足条件时被正确赋值
print(f"Inside loop: {o}, {aaa}")
aaa = 1
[/code]
5. 验证数据操作完整性
确认所有文件操作正常,没有数据缺失或读写错误,这可能影响计算和变量更新。
通过仔细排查这些方面的问题,可以更好地理解为什么变量 o 在循环结束后没有获得预期的值。请调整代码,重新运行并检查结果,确保每一步的逻辑都正确执行。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
|
|