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

本文讨论了一种高效的方法,用于在给定的整数数列中查找特定整数a的首次出现位置。通过避免数据溢出和利用输入数量的约束,作者分享了两种代码优化策略,适用于单数据输入情况,并解决了之前代码的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

给出一个包含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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值