gpt4 book ai didi

Python - 递增的数字链不能正常工作

转载 作者:太空宇宙 更新时间:2023-11-04 10:01:36 24 4
gpt4 key购买 nike

我有一个程序将三个数字作为命令行参数。然后它应该显示一个数字列表,这些数字与前两个数字相差相同,列表的长度是第三个数字。

当前两个输入之间的差异为负或零时,我当前的代码不起作用。

这里是三个测试用例:

  1. 这有效(但总和是错误的):

    python suite.py 1 2 10  
    > 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 56

    总和应为 55

  2. 这失败了:

    python suite.py 30 27 8
    > 0

    输出应该是

    > 30 27 24 21 18 15 12 9 = 156
  3. 这失败了:

    python suite.py 6 6 6
    > 6

    输出应该是

    > 6 + 6 + 6 + 6 + 6 + 6 = 36

代码如下:

import sys

def suite(premier, second, nombre):
message = ""
message2 = ""
if second < premier:
diff = (premier - second) * -1
else:
diff = second - premier
maximum = premier + (diff * nombre)
i = premier
total = premier
for i in range(premier, maximum, diff):
message += str(i) + " + "
message2 = message[:-3]
total += i
message2 += " = " + str(i)
return message2

def main():
premier = int(sys.argv[1])
second = int(sys.argv[2])
nombre = int(sys.argv[3])
if premier == second:
resultat = premier
else:
resultat = suite(premier, second, nombre)
print(resultat)

if __name__ == "__main__":
main()

最佳答案

这是一个更 Pythonic 的替代方案:

import sys 

def suite(premier, second, nombre):
diff = second - premier
if diff == 0:
nombres = [premier] * nombre
else:
maximum = premier + diff * nombre
nombres = range(premier, maximum, diff)
gauche = ' + '.join(map(str, nombres))
droite = sum(nombres)
return '%s = %d' % (gauche, droite)

def main():
premier = int(sys.argv[1])
second = int(sys.argv[2])
nombre = int(sys.argv[3])
print(suite(premier, second, nombre))

if __name__ == "__main__":
main()

对于 1 2 10,它输出:

1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55

对于 30 27 8:

30 + 27 + 24 + 21 + 18 + 15 + 12 + 9 = 156

对于 6 6 6:

6 + 6 + 6 + 6 + 6 + 6 = 36

关于Python - 递增的数字链不能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43281769/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com