admin管理员组文章数量:1794759
【Python编程300例】入门100例(01
01. 反转一个三位整数
问题描述:反转一个只有三位数的整数。
问题实例:输入number=123,输出321;输入number=100,输出1。
代码实现: """ IDE:PyCharm project_name:Python300example file_name:01反转一个三位整数 author:Runaway_pilot create_time:2022/4/28 18:53 """ """ 问题描述:反转一个只有三位数得整数 问题实例:输入number=123,输出321;输入number=100,输出1 """ class Solution: # param: number 一个3位数整数 # return: 反转后的数字 def function(self, number): h = int(number / 100) t = int(number % 100 / 10) z = int(number % 10) return 100 * z + 10 * t + h if __name__ == '__main__': # 实例化对象 solution = Solution() num = 123 new_num = solution.function(num) print("输入:{}".format(num)) print("输出:{}".format(new_num)) 运行结果 输入:123 输出:321 02. 合并排序数组问题描述:合并两个升序得整数数组A和B,形成一个新的数组,新数组也要有序。
问题实例:输入A=[1,2,3,4],B=[2,4,6,8],输出[1,2,2,3,4,4,6,8]。
代码实现 """ IDE:PyCharm project_name:python300example file_name:02合并排序数组 author:Runaway_pilot create_time:2022/4/28 19:09 """ """ 问题描述:合并两个升序得整数数组A和B,形成一个新的数组,新数组也要有序 问题实例:输入A=[1,2,3,4],B=[2,4,6,8],输出[1,2,2,3,4,4,6,8] """ class Solution: # param: A,B均为有序整数组 # return: 合并后的有序整数组 def function(self, A, B): i, j = 0, 0 lists = [] while i < len(A) and j < len(B): if A[i] < B[j]: lists.append(A[i]) i += 1 else: lists.append(B[j]) j += 1 while i < len(A): lists.append(A[i]) i += 1 while j < len(B): lists.append(B[j]) j += 1 return lists def built(self, A, B): # 运用内置函数 A.extend(B) A.sort() return A if __name__ == '__main__': # 实例化对象 A = [1, 2, 3, 4] B = [2, 4, 6, 8] solution = Solution() print("输入:{} {}".format(A, B)) print("输出:{}".format(solution.function(A, B))) print("使用内置函数:{}".format(solution.built(A, B))) 运行结果 输入:[1, 2, 3, 4] [2, 4, 6, 8] 输出:[1, 2, 2, 3, 4, 4, 6, 8] 使用内置函数:[1, 2, 2, 3, 4, 4, 6, 8] 03. 旋转字符串问题描述:给定一个字符串(以字符数组的形式)和偏移量,根据偏移量从左向右旋转字符串。
问题实例:输入str = "abcdefg",offset = "3",输出"efgabcd"; 输入str = "abcdefg",offset = "0",输出"abcdefg"; 输入str = "abcdefg",offset = "2",输出"fgabcde";
代码实现 """ IDE:PyCharm project_name:python300example file_name:03旋转字符串 author:Runaway_pilot create_time:2022/4/28 20:36 """ """ 问题描述:给定一个字符串(以字符数组的形式)和偏移量,根据偏移量从左向右旋转字符串 问题实例:输入str = "abcdefg",offset = "3",输出"efgabcd"; 输入str = "abcdefg",offset = "0",输出"abcdefg"; 输入str = "abcdefg",offset = "2",输出"fgabcde"; """ class Solution: # param: s(字符列表);offset(整数) # return:无 def function(self, s, offset): new_s = s if len(new_s) > 0: offset = offset % len(new_s) temp = (new_s + new_s)[len(new_s) - offset:2 * len(new_s) - offset] for i in range(len(temp)): s[i] = temp[i] return new_s if __name__ == '__main__': # 实例化对象 s = ["a", "b", "c", "d", "e", "f", "g"] offset = 3 solution = Solution() print("输入:s = {},off = {}".format(s, offset)) print("输出:s = {}".format(solution.function(s, offset))) 运行结果 输入:s = ['a', 'b', 'c', 'd', 'e', 'f', 'g'],off = 3 输出:s = ['e', 'f', 'g', 'a', 'b', 'c', 'd'] 04. 相对排名问题描述:根据N名运动员得分,找到相对等级和获得最高分前3名的人,分别获得金牌、银牌和 铜牌。N是正整数,,并且不过 10000。所有运动员的成绩都保证是独一无二的。
问题实例:输入[5,4,3,2,1],输出["Gold Medal","Silver Medal", "Bronze Medal","4","5"],前 3名运动员得分较高,根据得分依次获得金牌、银牌和铜牌。对于后两名运动员,根据 分数输出相对等级。
代码实现 """ IDE:PyCharm project_name:python300example file_name:04相对排名 author:Runaway_pilot create_time:2022/4/28 22:15 """ """ 问题描述:根据N名运动员得分,找到相对等级和获得最高分前3名的人,分别获得金牌、银牌和铜牌。N是正整数, 并且不过 10000。所有运动员的成绩都保证是独一无二的。 问题实例:输入[5,4,3,2,1],输出["Gold Medal","Silver Medal", "Bronze Medal","4","5"], 前3名运动员得分较高,根据得分依次获得金牌、银牌和铜牌。对于后两名运动员,根据分数输出相对等级。 """ class Solution: # param: nums(整数列表) # return: 列表 def function(self, nums): score = {} for i in range(len(nums)): score[nums[i]] = i sortedScore = sorted(nums, reverse=True) answer = [0] * len(nums) for i in range(len(sortedScore)): res = str(i + 1) if i == 0: res = "Gold Medal" elif i == 1: res = "Silver Medal" elif i == 2: res = "Bronze Medal" answer[score[sortedScore[i]]] = res return answer if __name__ == '__main__': # 实例化对象 solution = Solution() num = [4, 5, 2, 3, 1] print("输入:{}".format(num)) print("输出:{}".format(solution.function(num))) 运行结果 输入:[4, 5, 2, 3, 1] 输出:['Silver Medal', 'Gold Medal', '4', 'Bronze Medal', '5'] 05. 二分法查找问题描述:给定一个排序的整数数组(升序)和一个要查找的目标整数target,查找到 target第1次出 现的下标(从0开始),如果target不存在于数组中,返回-1。
问题实例:输入数组[1,4,4,5,7,7,8,9,9,10]和目标整数1,输出其所在的位置为0,即第1次出现在第 0个位置。输入数组[1,2,3,3,4,5,10]和目标整数3,输出2,即第1次出现在第2 个位置。输入数组[1,2,3,3,4,5,10]和目标整数6,输出-1,即没有出现过6,返 回-1。
代码实现 """ IDE:PyCharm project_name:python300example file_name:05二分法查找 author:Runaway_pilot create_time:2022/5/5 15:01 """ """ 问题描述:给定一个排序的整数数组(升序)和一个要查找的目标整数target,查找到 target第1次出现的下标(从0开始),如果target不存在于数组中,返回-1。 问题实例:输入数组[1,4,4,5,7,7,8,9,9,10]和目标整数1,输出其所在的位置为0, 即第1次出现在第0个位置。输入数组[1,2,3,3,4,5,10]和目标整数3, 输出2,即第1次出现在第2个位置。输入数组[1,2,3,3,4,5,10]和目 标整数6,输出-1,即没有出现过6,返回-1。 """ class Solution: # param nums :整数数组 # param target :要查找的目标数字 # return :目标数字第一个出现的位置,从0开始 def binarySearch(self, nums, target:int): return self.search(nums, 0, len(nums)-1, target) def search(self, nums, start, end, target): if start > end: return -1 mid = (start + end // 2) # 中位数下标取整 if nums[mid] > target: return self.search(nums, start, mid, target) elif nums[mid] == target: return mid elif nums[mid] < target: return self.search(nums, mid, end, target) if __name__ == '__main__': # 实例化对象 nums = [1, 2, 3, 4, 5, 6, 7, 8, 9] target = 5 solution = Solution() print("输入:nums = {};target = {}".format(nums, target)) print("输出:{}".format(solution.binarySearch(nums=nums,target=target))) 运行结果 输入:nums = [1, 2, 3, 4, 5, 6, 7, 8, 9];target = 5 输出:4摘抄自《Python编程300例》,作者李永华
Everything is going smoothly.版权声明:本文标题:【Python编程300例】入门100例(01 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686984860a125507.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论