大家好 stackoverflowers,我正在用给我的一个示例问题(实际上是一个谷歌面试练习题)练习我的 Python,遇到了一个我不知道如何 a)正确摆姿势(因此标题模糊),b)的问题克服。
问题是:对于一个数字数组(给定的或随机的),在数组中找到唯一的数字对,当它们相加时给出一个给定的数字。例如:在下面的数组中找到相加为 6 的数字对。
[1 2 4 5 11]
所以在上面的例子中:
[1,5] and [2,4]
我写的代码是:
from secrets import *
i = 10
x = randbelow(10)
number = randbelow(100) #Generate a random number to be the sum that we are after#
if number == 0:
pass
else:
number = number
array = []
while i>0: #Generate a random array to use#
array.append(x)
x = x + randbelow(10)
i -= 1
print("The following is a randomly generated array:\n" + str(array))
print("Within this array we are looking for a pair of numbers which sum to " + str(number))
for i in range(0,10):
for j in range(0,10):
if i == j or i>j:
pass
else:
elem_sum = array[i] + array[j]
if elem_sum == number:
number_one = array[i]
number_two = array[j]
print("A pair of numbers within the array which satisfy that condition is: " + str(number_one) + " and " + str(number_two))
else:
pass
如果没有找到对,我想要“没有找到对”这一行。我在想一个 try/except,但不确定它是否正确或如何实现它。另外,我不确定如何停止出现重复的对(仅限唯一对),例如,如果我想要 22 作为总和并拥有数组:
[7, 9, 9, 13, 13, 14, 23, 32, 41, 45]
[9,13] would appear twice
最后,如果有冗余/代码编写得不是很有效,请原谅我,我正在慢慢学习,所以任何其他提示将不胜感激!
感谢阅读:)
最佳答案
您可以简单地添加一个 bool 值来保存“是否至少找到一对?”的答案。
在代码的开头将其初始化为 found = false
。
然后,无论何时找到一对(保存当前 print
命令的条件 block ),只需添加 found = true
。
在你所有的搜索之后(双 for
loop`),添加这个:
if not found:
print("No pairs were found")
关于python - 如果条件不满足则打印一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45287602/