python幸运数字判断_幸运数字 小程序

问题描述:1-N个数字,每个数字的范围-9999到9999,把这N个数字排序后,删除奇数位的数,然后把剩余的数按原位置排序后继续删除奇数位,直到剩余一个数为止,剩余的数就是幸运数,输出幸运数和它最初的位置。

程序的输入为两个参数:数字的数量(N),具体的数据(以空格隔开)

比如:

5

6 66 666 6666 66666

输出:幸运数字的值,幸运数字的位置

比如:

6666

4

编程思想:

每次都直接删除num_count为偶数的行,即是删除奇数位。

具体代码如下:

from pandas.core.frame import DataFrame

input_count = input('请输入数据的长度')

input_num = input('请输入数据,空格分隔')

input_count = int(input_count)

num_count = range(input_count)

num = input_num.split()

a = {'num':num,'num_count':num_count}

data = DataFrame(a) # 把字典转为dataframe格式

# 删除奇数行(第一行,第三行,。。。)

while data.num.shape[0]>1:

for i in data.index:

if data.num_count[i]%2 == 0 :

data = data.drop(i)

data.num_count = range(data.num.shape[0])

运行后的data为:

即index=3,即幸运数字的位置为3+1=4

幸运数字为:6666

按规定格式输出:

print(data['num'][int(data.index.values)])# 幸运数字

print(int(data.index.values)+1)# 幸运数字的坐标

其中data.index.values 是输出index的值:

把data.index.values 转换为int的形式后方便输出为数字。

写这个文章的意义:这个题本是个线上编程试题,我最后却没能在规定的时间能得到正确的输出,并非前边20行代码有错,或是思路有问题,而是输出的时候不符合考试的要求。我以为把最后的data输出答案便一目了然,但是在线上的程序运行时它只是提示说输出结果不相符,但当时我却是怎么也想不起来如何把pandas的index输出成数字,就是忘记用values,所以功亏一篑,非常惭愧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值