【蓝桥杯】python基础练习——查找整数

问题描述

给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。

输入格式

第一行包含一个整数n。
第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。
第三行包含一个整数a,为待查找的数。

输出格式

如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。

样例输入

6
1 9 4 8 3 9
9

样例输出

2
看到这个题我就直接想到了用列表加索引的方式来查找这个数,一气呵成写了个代码,一验证题目上的输入输出刚好还对了。然后提交蓝桥杯题库,结果判别为错。。。
仔细核对了输入输出,发现

输入

1
41
41

输出应该为

1

n = int(input()) #包含n个整数的数列,整数n
i = 0
aList = []
if i < n:
    aList = list(map(int,input().split())) #输入给定的数列
    i=i+1
m = int(input())  #输入待查找的数
if aList[i] == m:
    print(i+1)
else:
    print(-1)

但我这个代码,对于这种单数据输入的情况就会数据溢出。仔细分析了下,应该是i=i+1的锅,于是反复调整循环嵌套里面的内容,但始终不对,目前还没有找到解决的办法,但我相信是能救的,希望有大佬一起探讨帮忙修改
上网查了一些别人的代码,发现虽然输出结果能判别为正确,但其中的语句没有用到第一次输入的数据n作为约束。简单整理了一下思路:

方法1:

n=int(input())
aList=input().split()
a=int(input())
num=1
if str(a) in aList:
    for i in aList:
        if int(i) == a:
            print(num)
            break
        num=num+1
else:
    print(-1)

方法2:

n = int(input())
aList = list(map(int,input().split()))
a = int(input())
count = -1
for i in range(len(aList)):  #用列表的长度作为限制
    if aList[i] == a:
        count = i+1
        break
print(count)

你可能感兴趣的:(蓝桥杯,python,算法)