从输入python中减去n个值

时间:2018-04-12 21:21:05

标签: python python-3.x for-loop

我还没有发现任何与我的问题相关的内容,所以我可能会问错了。

我正在进行一项练习,我从1开始给出顺序值,然后转到n,但不是按顺序。我必须从列表中找到缺失值。

我的方法是添加完整的1 =>在for循环中的n值,但是我无法弄清楚如何将n - 1个非连续值作为其自己的输入行添加,以便从完整值中减去它以获得丢失的值。

我一直在搜索对for循环的修改或者只是如何添加非连续数字的n个输入。如果我只是提出错误的问题,如果有人能指出我正确的方向,我很乐意做自己的研究。

total = 0
for i in range (1 , (int(input())) + 1):
    total += i

print(total)

for s in **?????(int(input()))**:
    total -= s

print(total)

示例输入: 五 3 2 五 1 预期产量:4

2 个答案:

答案 0 :(得分:0)

我不知道你是否应该创建初始数据(缺少项目),所以我添加了一些行来生成这个序列:

import random

n = 12 # or n = int(input('Enter n: ')) to get user input

# create a shuffled numeric sequence with one missing value
data = list(range(1,n+1))
data.remove(random.randrange(1,n+1))
random.shuffle(data)
print(data)

# create the corresponding reference sequence (without missing value)  
data2 = list(range(1,n+1))

# find missing data with your algorithm
print("Missing value =", sum(data2)-sum(data))

这是输出:

[12, 4, 11, 5, 2, 7, 1, 6, 8, 9, 10]
Missing value = 3

答案 1 :(得分:0)

要填写您在示例代码中使用的方法:

total = 0
n = int(input("How long is the sequence? "))
for i in range(1, n+1):
    total += i

for i in range(1, n):
    total -= int(input("Enter value {}: ".format(i)))

print("Missing value is: " + str(total))

虽然第一次循环是不必要的。首先,你的循环等同于sum函数:

total = sum(range(1,n+1))

但是你可以使用公式完全取消任何迭代:

total = int(n*(n+1)/2) # division causes float output so you have to convert back to an int