Asked:2022-08-20 00:14:51 +0000 UTC2022-08-20 00:14:51 +0000 UTC2022-08-20 00:14:51 +0000 UTC
任务:接力。我有以下代码,但是网站上的解决方案不完整,你能看看我的代码并告诉我错误吗
772
l = input().split()
n = 0
m = 1
a = l[-1]
a = int(a)
f = 0
for i in range(a-1):
z = l[n]
r = l[m]
z = int(z)
r = int(r)
if r <= z:
f = f + (z-r)
else:
f = f + (r-z)
n += 1
m += 1
print(f)
# PEP-8 не рекомендует односимвольный 'l', заменим на 'line'
# Стандартный ввод чисел в список с преобразованием типа каждого
line = list(map(int, input().split()))
f = 0
# Информации в списке достаточно для вычислений
for i in range(len(line)-1):
if line[i+1] > line[i]:
f += line[i+1] - line[i]
elif line[i+1] < line[i]:
f += line[i] - line[i+1]
print(f)
主要错误是大的代码冗余。你很难调试。另一方面,Python 要求简单。对以下文本给出了若干意见。研究与您的代码的差异,了解您引入冗余的原因。查看下面的代码。(而且原则上,一个循环中的4行可以用三元运算符写成1行,但是会比较难理解)。
我将添加我的 5 美分: