以专家视角生成满足逻辑和约束的高质量函数
以下是满足需求的`calculate_discount`函数的实现: ### 功能说明 - **函数参数**: - `price` (float): 原始价格,表示商品的原始价格。 - `discount_rate` (float): 折扣率,表示将以多少比例进行折扣计算。 - **功能逻辑**: - 检查`price`和`discount_rate`是否有效,给出友好的错误提示。 - 如果输入符合要求,则按照折扣计算逻辑进行计算。 - 结果经过四舍五入到两位小数后返回。 - **边界处理**: - 如果`price`为负数,会抛出`ValueError`。 - 如果`discount_rate`为负数或大于1.0(100%折扣),也会抛出`ValueError`。 下面是代码实现: ```python import math def calculate_discount(price: float, discount_rate: float) -> float: """ 计算折扣后的价格并四舍五入到两位小数。 参数: price (float): 原始价格。 discount_rate (float): 折扣率,应在0到1之间。 返回: float: 折扣后的价格,四舍五入到两位小数。 异常: ValueError: price为负数或discount_rate不在0到1之间时抛出。 """ # 参数检查 if price < 0: raise ValueError("价格不能为负数") if not (0 <= discount_rate <= 1): raise ValueError("折扣率必须在0到1之间") # 折扣计算并四舍五入到两位小数 discounted_price = price * discount_rate return round(discounted_price, 2) # 测试代码 (可选) if __name__ == "__main__": try: print(calculate_discount(100.0, 0.15)) # 输出: 15.0 print(calculate_discount(0, 0.5)) # 输出: 0.0 print(calculate_discount(200, 1.0)) # 输出: 200.0 print(calculate_discount(-50, 0.2)) # 抛出 ValueError except ValueError as e: print(f"错误: {e}") ``` --- ### 实现细节 1. **参数验证**: - 价格不能为负值,若出现负值,则抛出`ValueError`,并给出详细的错误提示。 - 折扣率必须在0到1的区间内,超出则抛出`ValueError`。 2. **逻辑操作**: - 原始价格和折扣率相乘,计算出折扣后的价格。 - 使用`round`函数对结果进行四舍五入到两位小数处理。 3. **示例用法**: - 函数被调用时,可以处理`price`为零或`discount_rate`为零的场景。 - 同时对边界条件提供了有效的错误处理。 如果有其他需求或者需要扩展逻辑(例如处理更多的业务规则),可以进一步修改!
以下是使用Java编写的 `find_max_value` 方法,该方法旨在根据要求实现所描述的功能: ```java import java.util.*; public class MaxValueFinder { /** * 查找列表中的最大值,支持忽略负数的选项。 * @param data_list List<Integer> 输入的整数列表 * @param ignore_negative boolean 是否忽略负数 * @return 列表中的最大值(整数),或者在特定条件下返回 null */ public static Integer find_max_value(List<Integer> data_list, boolean ignore_negative) { // 边界检查:如果列表为空或为 null,直接返回 null if (data_list == null || data_list.isEmpty()) { return null; } // 如果忽略负数,则过滤掉负数 if (ignore_negative) { // 使用流来过滤出非负数 data_list = new ArrayList<>(data_list); data_list.removeIf(number -> number < 0); } // 再次检查:列表可能被过滤为空 if (data_list.isEmpty()) { return null; // 如果只剩负数且被过滤,返回 null } // 利用 Collections 的内置方法获取最大值 return Collections.max(data_list); } public static void main(String[] args) { // 示例测试 List<Integer> test_list1 = Arrays.asList(3, -1, 7, 2, -10); List<Integer> test_list2 = Arrays.asList(-5, -15, -22, -1); List<Integer> test_list3 = new ArrayList<>(); System.out.println(find_max_value(test_list1, false)); // 输出 7 System.out.println(find_max_value(test_list1, true)); // 输出 7 System.out.println(find_max_value(test_list2, false)); // 输出 -1 System.out.println(find_max_value(test_list2, true)); // 输出 null System.out.println(find_max_value(test_list3, true)); // 输出 null } } ``` ### 方法逻辑和特点: 1. **参数检查**: - 判断输入列表是否为空或为 `null`。如果是,返回 `null` 作为输出。 2. **负数过滤**: - 当 `ignore_negative` 为 `true` 时,使用 `removeIf` 过滤掉所有负数。如果过滤后列表为空,则直接返回 `null`。 - 这种方式确保按需忽略负数,不污染原始数据。 3. **最大值查找**: - 利用 `Collections.max` 从列表中高效查找最大值。 4. **边界情况处理**: - 列表为空、全是负数且需要忽略负数等情况下,返回 `null`。 ### 测试结果: 可以通过主函数对不同输入和边界情况进行验证: - 包含正数和负数的列表。 - 全为负数的列表。 - 空列表。 ### 性能特点: - 通过 `Collections.max` 和流操作,简化了代码并提升可读性。 - 赋予清晰的边界条件验证,提高方法的健壮性。
以下是`generate_multiplication_table`函数的实现代码,采用JavaScript编写,考虑了处理边界情况以及提升代码性能与可维护性: ```javascript /** * Generates a multiplication table for a given number up to the specified limit. * * @param {number} number - The base number for the multiplication table. * @param {number} limit - The upper limit up to which the multiplication table is generated. * @returns {Array<number>} - An array containing the results of the multiplication table. */ function generate_multiplication_table(number, limit) { // Ensure inputs are valid integers if (!Number.isInteger(number) || !Number.isInteger(limit)) { throw new Error("Both 'number' and 'limit' must be integers."); } // Handle edge cases if (limit <= 0) { // When limit is 0 or negative, return an empty array return []; } // Generate the multiplication table const result = Array.from({ length: limit }, (_, i) => number * (i + 1)); return result; } // Example usage: console.log(generate_multiplication_table(5, 10)); // Output: [5, 10, 15, 20, 25, 30, 35, 40, 45, 50] console.log(generate_multiplication_table(3, 0)); // Output: [] console.log(generate_multiplication_table(7, -5)); // Output: [] console.log(generate_multiplication_table(2, 5)); // Output: [2, 4, 6, 8, 10] ``` ### 说明 1. **核心逻辑**: - 利用`Array.from()`生成一个数组,其中`length`指定了数组大小为`limit`。 - 使用第二个参数`(_, i)`生成所需的乘法结果,计算公式为`number * (i + 1)`。 2. **边界处理**: - 如果`limit <= 0`,返回空数组,表示没有需要生成结果的情况。 - 确保输入参数是整数,否则抛出错误,因为非整数输入不会产生预期的结果。 3. **性能优化**: - 使用`Array.from()`的方法比普通`for`循环写法更简洁且易读,避免了显式地创建变量和手动推入数组的操作。 4. **附加验证**: - 通过条件`Number.isInteger()`保证输入的合法性,防止非整数输入导致的计算错误。 此实现严谨、简洁且高效,非常适合在需要处理边界值的情况下进行乘法表生成。
需要快速实现复杂功能逻辑的高效函数,同时确保代码性能与边界条件的可靠处理。
处理算法优化时,用于生成逻辑严谨且高效的代码实现,节省繁杂的代码编写时间。
借助模板化的代码输出,学习编程语言核心函数结构和常见实践技巧,提升编程能力。
在开发初期快速生成可用代码原型,与技术团队沟通时提供更清晰直观的需求实现方案。
为团队成员提供标准化且高质量的函数模板,减少重复劳动并提升整体开发效率。
提供一个高效、专业的工具,帮助开发者快速生成满足复杂逻辑和约束条件的高质量代码函数,提升开发效率并减少潜在错误。
将模板生成的提示词复制粘贴到您常用的 Chat 应用(如 ChatGPT、Claude 等),即可直接对话使用,无需额外开发。适合个人快速体验和轻量使用场景。
把提示词模板转化为 API,您的程序可任意修改模板参数,通过接口直接调用,轻松实现自动化与批量处理。适合开发者集成与业务系统嵌入。
在 MCP client 中配置对应的 server 地址,让您的 AI 应用自动调用提示词模板。适合高级用户和团队协作,让提示词在不同 AI 工具间无缝衔接。
免费获取高级提示词-优惠即将到期