Python 列表 Iteration/Addition
Python List Iteration/Addition
我觉得我的问题很简单,但我想不通。我正在尝试将列表的偶数索引添加到变量中。错误仍然存在于函数的最后一行。我不明白为什么您不能使用 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()
您的代码中没有错误,但它什么也没做,因为:
- 您 return 您的结果
even
来自 oddEvenSame
函数
- 在您的
main
函数中,您没有使用 oddEvenSame
调用中的 returned 值。
以下是您应该做的小改动:
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
func:
def oddEvenSame(n):
digits = [int(i) for i in str(n)]
return sum(digits[::2])
哈哈,真是个愚蠢的错误!谢谢...我这周刚学了函数。这是最终程序:
作业 12 "Odd-Even" - 2020 年 1 月 5 日到期
要求用户输入一个数字。如果奇数位数字加起来等于偶数位数字,则该数字有效。例如,1234 无效,因为 1+3 != 2+4,但 1232 有效,因为 1+3 = 2+2。您的程序应该使用我们在视频中讨论过的功能。特别是: 您的程序应该在 main() 函数中接收用户的输入。主函数应该用输入的数字调用一个名为 oddEvenSame 的函数。如果获取的数字有效,oddEvenSame 函数应该 return True,否则它应该 return False。您应该根据 oddEvenSame returned. 在主函数中输出 Invalid 或 Valid
注意:您可以假设用户将输入一个偶数位数的数字
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()
我觉得我的问题很简单,但我想不通。我正在尝试将列表的偶数索引添加到变量中。错误仍然存在于函数的最后一行。我不明白为什么您不能使用 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()
您的代码中没有错误,但它什么也没做,因为:
- 您 return 您的结果
even
来自oddEvenSame
函数 - 在您的
main
函数中,您没有使用oddEvenSame
调用中的 returned 值。
以下是您应该做的小改动:
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
func:
def oddEvenSame(n):
digits = [int(i) for i in str(n)]
return sum(digits[::2])
哈哈,真是个愚蠢的错误!谢谢...我这周刚学了函数。这是最终程序:
作业 12 "Odd-Even" - 2020 年 1 月 5 日到期
要求用户输入一个数字。如果奇数位数字加起来等于偶数位数字,则该数字有效。例如,1234 无效,因为 1+3 != 2+4,但 1232 有效,因为 1+3 = 2+2。您的程序应该使用我们在视频中讨论过的功能。特别是: 您的程序应该在 main() 函数中接收用户的输入。主函数应该用输入的数字调用一个名为 oddEvenSame 的函数。如果获取的数字有效,oddEvenSame 函数应该 return True,否则它应该 return False。您应该根据 oddEvenSame returned. 在主函数中输出 Invalid 或 Valid 注意:您可以假设用户将输入一个偶数位数的数字
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()