page contents

python基础编程100例:第30期-寻求两个数对之间的最大乘积

本文讲述了python基础编程100例:第30期-寻求两个数对之间的最大乘积!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:

attachments-2022-03-DGLcmXWk62329b4138cb7.png

本文讲述了python基础编程100例:第30期-寻求两个数对之间的最大乘积!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:

第30期-寻求两个数对之间的最大乘积

1 问题描述

两个数对 (a, b) 和 (c, d) 之间的 乘积差 定义为 (a * b) - (c * d) 。

例如,(5, 6) 和 (2, 7) 之间的乘积差是 (5 * 6) - (2 * 7) = 16 。

给你一个整数数组 nums ,选出四个 不同的 下标 w、x、y 和 z ,使数对 (nums[w], nums[x]) 和 (nums[y], nums[z]) 之间的 乘积差 取到 最大值 。

返回以这种方式取得的乘积差中的 最大值 。

输入:nums = [5,6,2,7,4]

输出:34

解释:可以选出下标为 1 和 3 的元素构成第一个数对 (6, 7) 以及下标 2 和 4 构成第二个数对 (2, 4)

乘积差是 (6 * 7) - (2 * 4) = 34


2 解题思路

输入一组数据,可以考虑使用map函数,但需要定义的变量过多,可以考虑使用split函数形成列表

取最大值与次大值,可以考虑使用remove函数去除列表元素

可以考虑使用sort函数排列列表


3 解题方法

方法一

def PoorProduct(nums):

    max_1 = max(nums)

    nums.remove(max_1)

    max_2 = max(nums)

    min_1 = min(nums)

    nums.remove(min_1)

    min_2 = min(nums)

    poorproduct = int(max_1) * int(max_2) - int(min_1) * int(min_2)

    return poorproduct


a = input('请输入一组数字,中间用逗号隔开:')

nums1 = a.split(',')

nums=[]

for i in nums1:

    nums.append(int(i))

print(PoorProduct(nums))


第1行: 定义函数PoorProduct,用于返回最大乘积差

第2-7行: 使用max与min函数找出数组中的最大值、次大值、最小值以及次小值,并分别赋值给对应变量

第8-9行: 计算最大乘积差并返回给函数

第11行: 使用input函数输入数组并提示用户中间用逗号隔开

第12行: 使用split函数,将逗号前后的字符串分别列出并作为元素放进列表中

第13-15行: 将列表num1中的元素全部转化为整数类型再存到新的列表num中

第16行: 计算数组最大乘积差


方法二

a = input('请输入一组数字,中间用逗号隔开:')

nums1 = a.split(',')

nums=[]

for i in nums1:

    nums.append(int(i))

nums.sort()

print(nums[-1]*nums[-2]-nums[0]*nums[1])

第1行: 使用input函数输入数组并提示用户中间用逗号隔开

第2行: 使用split函数,将逗号前后的字符串分别列出并作为元素放进列表中

第3-5行: 将列表num1中的元素全部转化为整数类型再存到新的列表num中

第6行: 使用sort函数将列表中的整数从小到大重新排列

第7行: 打印数组最大乘积差


代码运行结果为:

attachments-2022-03-Gl7HtWsx62329b2d3b7b2.png这里用到了remove函数和split函数,简单讲解下这两个函数:

remove()函数

remove() 函数用于移除列表中某个值的第一个匹配项。

语法:

list.remove(obj)

参数说明:

obj -- 列表中要移除的对象。

例如:aList = [123, 'xyz', 'zara', 'abc', 'xyz'];

aList.remove('xyz');

print(aList):[123, 'zara', 'abc', 'xyz']

默认删除列表中与参数对应的第一个元素

split()函数

split()函数可以将一个字符串分裂成多个字符串组成的列表。

语法:

str.split(sep, maxsplit).

参数说明:

sep 是分割符,不写分割符时表示所有的空字符,包括空格、换行(\n)、制表符(\t)等,有分隔符时,以该分隔符进行分割。

maxsplit是分割次数。


例如:L = '100 200 300\n400\t500'

print(L.split())

执行结果:['100', '200', '300', '400', '500']

print(L.split(' ', 1))

执行结果:['100', '200 300\n400\t500']


小思考

为什么方法一与方法二都需要下面这段代码?

nums=[]

for i in nums1:

    nums.append(int(i))

如果删除这段代码,输出结果会有区别吗?为什么?

更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。

如果你想用Python开辟副业赚钱,但不熟悉爬虫与反爬虫技术,没有接单途径,也缺乏兼职经验
关注下方微信公众号:Python编程学习圈,获取价值999元全套Python入门到进阶的学习资料以及教程,还有Python技术交流群一起交流学习哦。

attachments-2022-06-ZmxuE5tM62b3beaa9ae03.jpeg

  • 发表于 2022-03-17 10:22
  • 阅读 ( 590 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
轩辕小不懂
轩辕小不懂

2403 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1658 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章