在python中创建两个函数

时间:2015-12-29 21:13:40

标签: python algorithm

我有这些任务,我相信我在某种程度上做得很好

创建一个函数get_algorithm_result来实现下面的算法

1-获取数字列表L1,L2,L3 .... LN作为参数    2-假设L1是最大的,最大= L1    3-从列表中取下一个号码Li并执行以下操作    4-如果最大值小于Li    5-最大=李    6-如果Li是列表中的最后一个数字    7-返回最大并出来    8-否则从步骤3开始重复相同的过程

创建一个执行以下操作的函数prime_number 将参数作为整数和 如果值为prime或,则返回布尔值true 如果值不是素数,则返回布尔值false

所以我想出了下面的代码

def get_algorithm_result(my_list):
if not any(not type(y) is int for y in my_list):
    largest = 0
    for item in range(0,len(my_list)):
        if largest < my_list[item]:
            largest = my_list[item]
    return largest
else:

    return(my_list[-1])

def prime_number(integer):
if integer%2==0 and 2!=integer:
    return False
else:
    return True

get_algorithm_result([1, 78, 34, 12, 10, 3])     
get_algorithm_result(["apples", "oranges", "mangoes", "banana", "zoo"]) 
prime_number(1) 
prime_number(78) 
prime_number(11) 

对于上面的问题,有一个单位读取

import unittest

class AlgorithmTestCases(unittest.TestCase):
  def test_maximum_number_one(self):
    result = get_algorithm_result([1, 78, 34, 12, 10, 3])
    self.assertEqual(result, 78, msg="Incorrect number")

  def test_maximum_number_two(self):
    result = get_algorithm_result(["apples", "oranges", "mangoes", "banana", "zoo"])
self.assertEqual(result, "zoo", msg="Incorrect number")

  def test_prime_number_one(self):
    result = prime_number(1)
    self.assertEqual(result, True, msg="Result is invalid")

  def test_prime_number_two(self):
    result = prime_number(78)
    self.assertEqual(result, False, msg="Result is invalid")

  def test_prime_number_three(self):
    result = prime_number(11)
    self.assertEqual(result, True, msg="Result is invalid")

但是一旦我运行我的代码,就会返回错误说明     测试规格失败

Your solution failed to pass all the tests

我的代码究竟出了什么问题?

2 个答案:

答案 0 :(得分:1)

以下是解决方案..

 def get_algorithm_result(num_list):    
    largest =num_list[0]        
    for item in range(0,len(num_list)):    
        if largest < num_list[item]:                
            largest = num_list[item]    
    return largest

def prime_number(integer):
 if integer == 1:
   return False
 elif integer == 3:
   return True
 if integer > 3:
   for i in range(3, (integer-1)):
     if integer % i == 0:
       return False
  else:
    return True

答案 1 :(得分:0)

这应该有助于素数

def prime_number(integer): 
  if integer == 1: return True
  if integer == 2: return True
  if integer == 3: return True
  if integer % 2 == 0: return False
  if integer % 3 == 0: return False
  else: return True