检查第i项和第n-i-1项相等性的python代码

检查第i项和第n-i-1项相等性的python代码,python,Python,我用python编写了以下代码来检查第I项和第n-I-1项的相等性。我在第一个for循环的末尾(在:)出现错误。请帮助 arr=[] n=int(input("Enter the number of terms you want in the array")) for i in range(0,n): a=int(input("Enter your number here")) arr.append(a) for i in range(0,len(arr)):

我用python编写了以下代码来检查第I项和第n-I-1项的相等性。我在第一个for循环的末尾(在:)出现错误。请帮助

arr=[]
n=int(input("Enter the number of terms you want in the array"))


for i in range(0,n):
      a=int(input("Enter your number here"))
      arr.append(a)

for i in range(0,len(arr)):
    if arr[i]==arr[len(arr)-i-1]:
        print("The "+i+"th element and the "+len(arr)-i-1+"th element are equal" )

此代码段的第二个for循环的逻辑不正确。您不应该在
a
上调用
len()
,而应该在
arr
上调用它。因此,您的第二个for循环应该如下所示:

for i in range(0, len(arr)):
    if arr[i] == arr[len(arr) - i - 1]:
        print("The " + str(i) + "th element and the " + str(len(a) - i - 1) + "th element are equal")
希望这有帮助

编辑:为了适应重复的结果,您必须固定for循环的迭代次数。因此for循环将如下所示:

# Halve the number of iterations so it doesn't repeat itself
for i in range(0, len(arr) // 2):
    ...
编辑2:要找出特定数字的正确结尾,请尝试以下类似操作:

if not (10 < i < 14):
    if i % 10 == 1:
        print("st")
    # elif, etc...
    else:
        print("th")
如果不是(10
应该是:

for i in range(0,len(arr)):
    if arr[i]==arr[len(arr)-i-1]:
         print("The "+i+"th element and the "+len(arr)-i-1+"th element are equal" )
此外,不能将int转换为str隐式:

print("The "+i+"th element and the "+len(arr)-i-1+"th element are equal" )
应该是

print("The {}th element and the {}th element are equal".format(i,len(arr)-i-1))
最后,要消除冗余,请替换:

if arr[i]==arr[len(arr)-i-1]:
与:


谢谢你的回答。我仍然面临一个错误。我得到了多余的答案。第0项和第4项相等,第4项和第0项相等。如何解决这个问题?@joeylang根据新的规范编辑了我的回复。我相信你的编辑是有缺陷的。如果最后两个元素相等,将范围减半,您将错过它。非常感谢。我想问最后一件事。我想为i=1或i=21或i=31显示str(i),结尾是st而不是th。第二次和第三次相同。“我们该怎么做?”乔伊朗考虑下一次在这个问题上发表一个单独的问题。这次我修改了我的答案——但请记住,这并不是为了鼓励你继续这样做!
if arr[i]==arr[len(arr)-i-1]:
if arr[i]==arr[len(arr)-i-1] and len(arr)-i-1>i: