python计算机中丢失_Python找出丢失的数

有一个包含 1 到 100,一共 100 整数的列表 list,但是顺序已经被打乱,现在随机丢掉一个值,请计算出被扔掉的数的值。

1. 直接的解法

依次查看 1 到 100 哪些数没有在输入的列表中。代码如下:

import random # 引入伪随机数模块

def find_missing_num(list): # 查找丢失的数

for candidate in range(1, 101): # 对所有的数,查看是否在结果队列中

if candidate not in list: # 如果不在结果队列中,那么它就是丢失的数

return candidate # 返回该丢失的数

return None # 如果没有找到,返回None

def test(): # 测试代码

list_a = range(1, 101) # 得到100个数

random.shuffle(list_a) # 打乱顺序

drop_val = list_a.pop(49) # 丢掉一个数

print("The Dropped Item is %d" % drop_val)

ret = find_missing_num(list_a) # 查找该丢失的数

print("Answer: %d" % ret)

if __name__=='__main__': # 如果是脚本运行而不是import,那么执行测试代码

test()

运行结果:

$ python listdemo3.py

The Dropped Item is 77

Answer: 77

$ python listdemo3.py

The Dropped Item is 97

Answer: 97

2. 求和的方法

求出列表中所有元素的和 s,假定丢掉的元素为 x,那么 s+x=1+2+3+…+100。这样可以求出 x 的值来。代码如下:

import random # 引入随机库

def find_missing_num(list):

expected_sum = ( (1 + 100) * 100) / 2

real_sum = sum(list)

return (expected_sum - real_sum)

def test():

list_a = range(1, 101)

random.shuffle(list_a)

drop_val = list_a.pop(49)

print("The Dropped Item is %d" % drop_val)

ret = find_missing_num(list_a)

print("Answer: %d" % ret)

if __name__=='__main__':

test()

运行结果:

$ python listdemo4.py

The Item is 87

Missing Number = 87

$ python listdemo4.py

The Dropped Item is 79

Answer: 79

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值