我认为我的问题很简单,但我无法解决。我试图将列表的偶数索引添加到变量中。错误仍然存在于函数的最后一行。我不明白为什么您不能使用for循环遍历列表以添加索引?
def main():
# Get Input Number
n = int(input("Enter a number:"))
# Call <oddEvenSame()>
oddEvenSame(n)
def oddEvenSame(n):
# Split all digits of <n> into their own index within <digits>
digits = [int(i) for i in str(n)]
# Add even indices of <digits> into <even>
even = 0
for j in range(0, len(digits), 2):
even += digits[j]
# Call <main()>
main()
您的代码中没有错误,但是它没有任何作用,因为:
even
函数返回结果oddEvenSame
main
函数中,您不使用oddEvenSame
调用返回的值。这是您应该做的较小更改:
def main():
# Get Input Number
n = int(input("Enter a number:"))
# Call <oddEvenSame()>
print(oddEvenSame(n))
def oddEvenSame(n):
# Split all digits of <n> into their own index within <digits>
digits = [int(i) for i in str(n)]
# Add even indices of <digits> into <even>
even = 0
for j in range(0, len(digits), 2):
even += digits[j]
return even
main()
作为旁注,您可以使用slicing
代替oddEvenSame
函数中的循环:
def oddEvenSame(n):
digits = [int(i) for i in str(n)]
return sum(digits[::2])
哈哈,多么愚蠢的错误!谢谢...我这周刚学了函数。这是最终程序:
作业12“奇偶”-到期时间:5.1.2020
要求用户输入数字。如果奇数位数字加到偶数位数字,则该数字有效。例如1234是无效的,因为1 + 3!= 2 + 4,而1232是有效的,因为1 + 3 = 2 + 2。您的程序应使用视频中讨论的功能。特别是:您的程序应在main()函数中接受用户的输入。主函数应使用输入的数字调用一个名为oddEvenSame的函数。如果获得的数字有效,则奇数EvenSame函数应返回True,否则应返回False。您应该在main函数中输出Invalid或Valid,具体取决于返回的奇数EvenSame。注意:您可以假设用户输入的数字为偶数位数
def main():
# Get Input Number
n = int(input("Enter a number:"))
# Call <oddEvenSame()>
if oddEvenSame(n) == True:
print("Valid")
else:
print("Invalid")
def oddEvenSame(n):
# Split all digits of <n> into their own index within <digits>
digits = [int(i) for i in str(n)]
# Add even indecies of <digits> into <even>
even = 0
for j in range(0, len(digits), 2):
even += digits[j]
# Add odd indecies of <digits> into <odd>
odd = 0
for k in range(1, len(digits), 2):
odd += digits[k]
# Check if odd digits add up to even digits
if odd == even:
return True
else:
return False
# Call <main()>
main()