Python3.4 - 带索引号的数学

时间:2015-02-20 21:44:34

标签: python math

我的目标是使用列表的索引来进行加法/减法。我把偶数指数变为正数,奇数指数变为负数。

EX1:1234508应该以0:1-2 + 3-4 + 5-0 + 8 = 11回答,然后while再次循环,我得到1-2 + 1 = 0 例2:12345应该用3:1-2 + 3-5 = 3来回答,所以它不应该再次循环。 Ex3:121应该以0:1-2 + 1 = 0回答,所以它不应该再次循环。

def main():
    print()
    print("Program to determine if a number is evenly\ndivisible by 11")
    print()
    indexed = input("Enter a number: ",)

    total = 0
    num = 0
    while num >= 10:    
        for item in indexed:
            if num %2 == 0:
                total = total + int(item) 
            else:                      
                total = total - int(item) 
            num = num + 1

    print(total)

main()

请注意,上面的print语句是if语句的占位符,该语句在我的代码中处于非活动状态,但在此处打印为粗体大字。

3 个答案:

答案 0 :(得分:0)

你到底想要做什么?

evenindex = evenindex int(item)

“list”是一个类型,表示python中的列表类型,因此它不能是变量的名称。此外,您还没有在代码中定义此变量。

答案 1 :(得分:0)

假设您有一个字符串st,其字符都是数字,并且您希望拥有这些数字的总和。然后定义以下函数

def sd(st):
    return sum(int(d) for d in st)

我们可以在解释器中测试

In [30]: sd('10101010101010101010')
Out[30]: 10

In [31]: sd('101010101010101010101')
Out[31]: 11

你真正想要的是将奇数位相加并减去偶数位数,但这相当于求和的几率,分别求和,然后取差,不是吗?所以你想要的是

step_1 = sd(odds(st)) - sd(evens(st))

如何将奇数与偶数分开?啊!不需要功能,我们可以使用切片

step_2 = sd(st[::2]) - sd(st[1::2])

现在我们要测试解释器中的切片

In [32]: '101010101010101010101'[::2]
Out[32]: '11111111111'

In [33]: '101010101010101010101'[1::2]
Out[33]: '0000000000'

但是step_2可能是一个负数,我不想管理...我宁愿使用abs内置

step_3 = abs(sd(st[::2]) - sd(st[1::2]))

这正是你要找的。


最终我们可以将上述所有内容放在一起,但我们可能需要迭代,直到差异小于11 ---我们将使用无限循环和break语句来退出循环时我们会找到答案

def sd(st):
    return sum(int(d) for d in st)

number = input('Give me a number: ')

trial = number
while True:
    n = abs(sd(trial[::2]) - sd(trial[1::2]))
    if n < 11: break
    trial = str(n)

if n > 0:
    ...
else:
    ...

答案 2 :(得分:0)

我已经找到了上面提到的问题的答案。因此,我的回答是,如果有人发现我的上述问题。

def main():     indexed = input(&#34;输入一个数字:&#34;,)

total = 0
num = 0
while num <= 10:
    for item in indexed:
        if num %2 == 0:
            total = abs(total + int(item)) 
        else:                      
            total = abs(total - int(item))
        num = num + 1

if total == 0:
    print(indexed, "is evenly divisible by 11 \ncheck since", indexed, "modulus 11 is", int(indexed) % 11)      
else:
    print(indexed, "is not evenly divisible by 11 \ncheck since", indexed, "modulus 11 is", int(indexed) % 11)

input()

main()的