Python1000道练习题(7)
1、将整数转化为罗马数字
class py_solution:
def int_to_Roman(self, num):
val = [
1000900500400,
100905040,
10954,
1
]
syb = [
"M""CM""D""CD",
"C""XC""L""XL",
"X""IX""V""IV",
"I"
]
roman_num = ''
i = 0
while  num > 0:
for _ in range(num // val[i]):
roman_num += syb[i]
num -= val[i]
i += 1
return roman_num
print(py_solution().int_to_Roman(110))
print(py_solution().int_to_Roman(12))
输出
CX
XII
round是什么函数 返回什么
2、查括号('(',')','{','}','['和']的有效性。这些括号必须以正确的顺序闭合;例如,“()”和“()[] {}”是有效的,但“ []”,“(({[)]”和“ {{{”)无效
class py_solution:
def 个人简历模板下载空白下载is_valid_parenthese(self, str1):
stack, pchar = [], {"("")""{""}""[""]"}
for parenthese in str1:
if parenthese in pchar:
stack.append(parenthese)
elif len(stack) == 0 or pchar[stack.pop()] != parenthese:
return False
return len(stack) == 0
print(py_solution().is_valid_parenthese("(){}[))]"))
print(py_solution().is_valid_parenthese("()[{)}"))
print(py_solution().is_valid_parenthese("()"))
输出
False
False
True
3、从一组不同的整数中获取所有可能的唯一子集
class py_solution:
def sub_sets(self, sset):
tabletten中文意思
return self.subsetsRecur([], sorted(sset))
def subsetsRecur(self, current, sset):
if sset:
return self.subsetsRecur(current, sset[1:]) + self.subsetsRecur(current + [sset[0]], sset[1:])
return [current]
print(py_solution().sub_sets([1,2,3,4]))
输出
[[], [4], [3], [34], [2], [24], [23], [234], [1], [14], [13], [134], [12], [124], [123], [12微服务架构的选课系统设计与应用, python基础知识测试题34]]
4、从给定数组中求和等于目标数的一对元素(返回两个数的索引)
class py_solution:
def twoSum(self, nums, target):
lookup = {}
for i, num in enumerate(nums):
if target - num in lookup:
return (lookup[target - num], i )
lookup[num] = i
print("index1=%d, index2=%d" % py_solution().twoSum((10,20,10,40,50,60,70),80))
输出
index1=1, index2=5
字体大小怎么调电脑快捷键
4、从给定数组中求和等于目标数的一对元素(返回两个数的索引)
class py_solution:
def threeSum(self, nums):
nums, result, i = sorted(nums), [], 0
while i < len(nums) - 2:
j, k = i + 1, len(nums) - 1
while j < k:
if nums[i] + nums[j] + nums[k] < 0:
j += 1
elif nums[i] + nums[j] + nums[k] > 0:
k -= 1
else:
result.append([nums[i], nums[j], nums[k]])
j, k = j + 1, k - 1
while j < k and nums[j] == nums[j - 1]:
j += 1
while j < k and nums[k] == nums[k + 1]:
k -= 1
i += 1
while i < len(nums) - 2 and nums[i] == nums[i - 1]:
i += 1
return result
print(py_solution().threeSum([-25-10-7-324810,12,45,6]))
输出
[[-1028], [-1046], [-7-310]]
今天又和大家一起学习了 10 道 Python 练习题;大家都学会了吗?

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。