def decode():
results = {}
steps = 2
postNumber = 1
with open('Example.txt') as txt_file:
for line in txt_file:
key, value = line.strip().split(' ')
results[int(key)] = str(value)
for key, value in results.items():
if postNumber == key:
print(key, value)
postNumber += steps
steps += 1
decode()
使用上面的代码,我目前正在尝试制作一个Python脚本,该脚本读取文件“Example.txt”,其中包含“6 q 1 r 3 p”行,其中每个数字和字母对都用换行符分隔。然后将它们存储到字典中,其中数字是键(存储为整数),字母是值(存储为字符串)。我试图做到如果 postNumber 与 for 语句迭代的键值匹配,它会打印键值对,然后用步骤数更新 postNumber 并将步骤更新为 1。目标是让它将每个键值对打印为
1 r
3 p
6 q
但是,当我尝试运行它时,它没有给我任何输出。当我从代码中删除 postNumber += 步骤和步骤 += 1 时,我得到
1 r
然后,当我将两个变量方程放回到代码中时,它根本不给我任何输出,这对我来说没有意义,特别是考虑到它发生在 if 语句之后,所以它至少必须打印“ 1 r" 并且它没有嵌入到 if 语句中;只有 for 语句。
我尝试添加一个 else 语句,并使其和 if 语句都具有 postNumber += 步骤和步骤 += 1,看看它是否会改变任何内容,但无济于事。
如果您想按顺序遍历键/值对,那么您可能应该按排序顺序迭代键,并将它们用作字典的索引:
for key in sorted(results.keys()):
value = results[key]
print(f'{key} {value}')
我不太明白你想通过使用
steps
和 postNumber
来做什么,但在我看来,你试图混合两种方法: