dragov 发表于 1 小时前

divmod 问题



A=1
G=7
aa,bb=divmod(A,7)
print("元素A的位置:第{0}行,第{1}列".format(aa+1,bb))
cc,dd=divmod(G,7)
print("元素G的位置:第{0}行,第{1}列".format(cc+1,dd))

G 的位置显示不对呀?

FishC 发表于 1 小时前

你的代码中,当使用 divmod(G, 7) 计算元素 G(值为7)时,返回的商是1,余数是0。按照你的格式化输出,会显示为第2行第0列,但这通常不是我们期望的结果(因为列数一般从1开始计数,且余数0表示前一行的最后一列)。

实际上,如果你想计算一个元素在具有7列的网格中的位置(假设元素编号从1开始,按行顺序排列),正确的做法是先对元素编号减1,然后再进行divmod运算。这样,余数的范围是0到6,分别对应第1列到第7列,商的行号也从0开始,加1后得到实际行号。

以下是修改后的代码:

A = 1
G = 7
aa, bb = divmod(A - 1, 7)
print("元素A的位置:第{0}行,第{1}列".format(aa + 1, bb + 1))
cc, dd = divmod(G - 1, 7)
print("元素G的位置:第{0}行,第{1}列".format(cc + 1, dd + 1))

运行结果:
元素A的位置:第1行,第1列
元素G的位置:第1行,第7列

这样,元素A和G的位置就都正确了。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

第_个鱼油 发表于 1 小时前

列数一般从1开始计数,先对元素编号减1,然后再进行divmod运算就好了

修改后:A = 1
G = 7
aa, bb = divmod(A - 1, 7)
print("元素A的位置:第{0}行,第{1}列".format(aa + 1, bb + 1))
cc, dd = divmod(G - 1, 7)
print("元素G的位置:第{0}行,第{1}列".format(cc + 1, dd + 1))

包OK的{:10_256:}
页: [1]
查看完整版本: divmod 问题