python-3.x - python3中的最大成对乘积问题以及当输入100000和90000等长输入时返回0
问题描述
我想输入一个长输入并打印它们之间的最大成对乘积,但我得到 0 作为我的输出。例如,想将 10^5 和 9^4 作为我的输入并打印最大成对积 9^9 但我得到 0 作为我的答案。那么如何解决python3中输入长的问题呢?
n = len(numbers)
largest = 0
second = 0
for i in range(0,n):
if numbers[i] > largest:
second = largest
largest = numbers[i]
max_product = largest * second
return max_product
if __name__ == '__main__':
input_numbers = []
input_n = int(input())
input_numbers = [int(x) for x in input().split()]
print(max_pairwise_product(input_numbers))
解决方案
您的代码在 about 的主函数中有一些语法错误input
,这应该修复:
if __name__ == '__main__':
input_numbers = []
input_n = input()
input_numbers = [int(x) for x in input_n.split()]
print(max_pairwise_product(input_numbers))
关于逻辑,想想如果你的 is 会发生什么3 2 1 0
。由于最大值将在第一次迭代中被替换,因此将接收issecond
的当前值,并且永远不会被另一个替换。要解决这个问题,您应该首先检查该值是否大于第二个值,然后再检查它是否大于. 以下代码段应该可以解决您的问题:largest
0
largest
def max_pairwise_product(numbers):
n = len(numbers)
largest = float('-inf')
second = float('-inf')
for i in range(0, n):
if numbers[i] > second:
if numbers[i] > largest:
second = largest
largest = numbers[i]
else:
second = numbers[i]
max_product = largest * second
return max_product
如果负无穷大,我还更改了largest
和的值。second
推荐阅读
- c++ - 无法将 OpenCV Mat 转换为 dlib array2D
- docker - 带有 URL 路径的 Docker
- python - Python 请求在特定 HTTPS 站点上失败,尽管其证书有效
- amazon-web-services - 对 pod 使用安全组时无法从 eks 节点访问 pod
- ansible - Ansible - 组合数据以获得单个输出或组
- python - MQL4 如何与 python 通信?
- java - 是否存在相当于 Java 的公共和私有的 C 和 Python?
- c# - 如何使用 EF 使用 id 获取大量数据?
- c++ - volatile 是否只需要一次或在来自 MMIO mmap 的地址指针的每个派生指针上?
- git - 让 git 告诉我有问题的空格在哪里?