我的目标是使用列表的索引来进行加法/减法。我把偶数指数变为正数,奇数指数变为负数。
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语句的占位符,该语句在我的代码中处于非活动状态,但在此处打印为粗体大字。
答案 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]))
这正是你要找的。 p>
最终我们可以将上述所有内容放在一起,但我们可能需要迭代,直到差异小于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()的