我正在为即将到来的比赛做一些样本编程挑战,而且我发现自己很难接受一个相当容易的挑战。
基本上,用户必须输入x个数字,我必须返回数字的总和。条件是每次输入0时,都意味着我必须忽略他们输入的最后一个数字,所以它不再是总和的一部分了。
这是我的代码:
numbers = []
index = 0
total = 0
k = input("How many numbers would you like to enter? (1- 100000)" + "\n").strip()
for x in range (int(k)):
number = input("Enter a number." + "\n").strip()
numbers.append(number)
if number == '0':
index = numbers.index(number)
numbers.pop([index - 1])
numbers.pop([index])
for y in range (len(numbers)):
for item in numbers:
total += int(item)
print(total)
错误就在这一行:
numbers.pop([index - 1])
它告诉我' list' object不能解释为整数。我最初试图使它成为int(索引)希望它将它转换为int所以我可以执行减法来获取它之前的数字的索引,所以我可以将它从列表中弹出,但我得到了相同的错误信息。
有没有办法将此值用作整数,因此我可以执行减1。或者是否有不同的方法来获得之前的数字索引?
答案 0 :(得分:2)
好吧,在python中,可以使用负数来引用列表 end 中的元素:
>>> l = range(10, 100, 5)
>>> l
[10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]
>>> l[-1]
95
>>> l[-2]
90
和pop将采用这些负数,因此要删除列表中倒数第二个项目只是:
>>> l.pop(-2)
90
>>> l
[10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 95]
答案 1 :(得分:1)
您认为[index - 1]
是什么?这显然是list
。这不是一个整数。没有方括号的index - 1
将是一个整数。此外,您应该在附加之前检查用户的号码是0
,还是list
中的最后一个值是0
而不是值k = int(input("How many numbers would you like to enter? (1- 100000)\n"))
result = []
for i in range(k):
num = int(input("Enter a number.\n"))
if num:
result.append(num)
elif result:
result.pop(-1)
print(sum(result))
你需要删除,这只是为了额外的工作。
您的代码还有很大的改进空间,包括正确使用内置函数和消除不必要的计数器:
City
答案 2 :(得分:0)
应为{{1}}
您需要做的是传递需要弹出的索引的整数值,而不是传递列表。
答案 3 :(得分:0)
试试这个
numbers = []
index = 0
total = 0
k = input("How many numbers would you like to enter? (1- 100000)" + "\n").strip()
for x in range (int(k)):
number = input("Enter a number." + "\n").strip()
numbers.append(number)
if number == '0':
index = numbers.index(number)
numbers.pop(index - 1)
numbers.pop(index)
for y in range (len(numbers)):
for item in numbers:
total += int(item)
print(total)
答案 4 :(得分:0)
当你传递一个int
时,你正在传递一个列表numbers.pop(index-1)
代码:
numbers = []
index = 0
total = 0
k = input("How many numbers would you like to enter? (1- 100000)" + "\n").strip()
for x in range (int(k)):
number = input("Enter a number." + "\n").strip()
numbers.append(number)
if number == '0':
index = numbers.index(number)
numbers.pop(index)
numbers.pop(index-1)
for y in range (len(numbers)):
for item in numbers:
total += int(item)
print(total)
如果可以的话,这是一种更简单的方法
total = 0
last = 0
k = input("How many numbers would you like to enter? (1- 100000)" + "\n").strip()
for x in range (int(k)):
print("Enter Number")
temp = int(input())
total += temp
if temp == 0:
total -= last
else:
last = temp
print(total)