Python每日一练(20230312)

本文涉及的产品
公网NAT网关,每月750个小时 15CU
简介: Python每日一练(20230312)

1. 提示用户输入的简单菜单


如果用户选择菜单选项1,提示用户输入1到10之间的整数,并打印一个乘法表,显示整数1与输入整数相乘的结果,如下面的示例所示。


注意:不需要检查输入的数字是否在1到10之间。

如果用户选择菜单选项2,退出程序。

如果用户在菜单选择中输入了1或2以外的任何内容,输出信息“菜单选择错误,请重试并继续程序。”


结果应该如下:

1)创建乘法表

2)退出程序


请从以上菜单中选择一个选项:1

输入一个介于1到10之间的整数:3

1  2  3  

2  4  6  

3  6  9  


1)创建乘法表


2)退出程序

请从以上菜单中选择一个选项:4

菜单选择错误,请重试


1)创建乘法表

2)退出程序

请从以上菜单中选择一个选项:2

谢谢你使用乘法表


代码:

while True:
    print('1)创建乘法表')
    print('2)退出程序')
    n = input('请从以上菜单中选择一个选项:').strip()
    if n=='1':
        x = int(input('输入一个介于1到10之间的整数:'))
        for i in range(1,x+1):
            for j in range(1,x+1):
                print("{:>4}".format(i*j),end="")
            print()
    elif n=='2':
        print('谢谢你使用乘法表')
        break
    else:
        print('菜单选择错误,请重试')
    print('-----------------------------')



输入输出:


1)创建乘法表

2)退出程序

请从以上菜单中选择一个选项:1

输入一个介于1到10之间的整数:3

  1   2   3

  2   4   6

  3   6   9

-----------------------------

1)创建乘法表

2)退出程序

请从以上菜单中选择一个选项:4

菜单选择错误,请重试

-----------------------------

1)创建乘法表

2)退出程序

请从以上菜单中选择一个选项:2

谢谢你使用乘法表




2. 字母异位词分组


给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。

示例:


输入:[eat", "tea", "tan", "ate", "nat", "bat"]

输出:[[ate","eat","tea"],["nat","tan"],["bat"]]


说明:

  • 所有输入均为小写字母。
  • 不考虑答案输出的顺序。

代码:


class Solution(object):
    def groupAnagrams(self, strs):
        strs.sort()
        hash = {}
        for s in strs:
            key = self.hash_key(s)
            try:
                hash[key].append(s)
            except KeyError:
                hash[key] = [s]
        return list(hash.values())
    def hash_key(self, s):
        table = [0] * 26
        for ch in s:
            index = ord(ch) - ord('a')
            table[index] += 1
        return str(table)
# %%
s = Solution()
print(s.groupAnagrams(strs = ["eat", "tea", "tan", "ate", "nat", "bat"]))


输出:

[['ate', 'eat', 'tea'], ['bat'], ['nat', 'tan']]


3. 俄罗斯套娃信封问题


给你一个二维整数数组 envelopes ,其中 envelopes[i] = [wi, hi] ,表示第 i 个信封的宽度和高度。

当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。


请计算 最多能有多少个 信封能组成一组“俄罗斯套娃”信封(即可以把一个信封放到另一个信封里面)。


注意:不允许旋转信封。


示例 1:

输入:envelopes = [[5,4],[6,4],[6,7],[2,3]]

输出:3

解释:最多信封的个数为 3, 组合为: [2,3] => [5,4] => [6,7]。


示例 2:

输入:envelopes = [[1,1],[1,1],[1,1]]

输出:1

提示:

   1 <= envelopes.length <= 5000

   envelopes[i].length == 2

   1 <= wi, hi <= 10^4


代码:


class Solution:
    def maxEnvelopes(self, envelopes) -> int:
        """
        :param envelopes: List[List[int]]
        :return: int
        """
        n = len(envelopes)
        if not n:
            return 0
        envelopes.sort(key=lambda x: (x[0], -x[1]))
        dp = [1] * n
        for i in range(n):
            for j in range(i):
                if envelopes[j][1] < envelopes[i][1]:
                    dp[i] = max(dp[i], dp[j] + 1)
        return max(dp)
# %%
s = Solution()
envelopes = [[5,4],[6,4],[6,7],[2,3]]
print(s.maxEnvelopes(envelopes))
envelopes = [[1,1],[1,1],[1,1]]
print(s.maxEnvelopes(envelopes))


输出:

3

1

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
目录
相关文章
|
Python 人工智能
讯飞星火、文心一言和通义千问同时编“贪吃蛇”游戏,谁会胜出?
讯飞星火、文心一言和通义千问同时编“贪吃蛇”游戏,谁会胜出?
292 1
讯飞星火、文心一言和通义千问同时编“贪吃蛇”游戏,谁会胜出?
|
Shell Unix Linux
Linux 终端命令之文件浏览(3) less
Linux 终端命令之文件浏览(3) less
243 0
Linux 终端命令之文件浏览(3) less
|
Rust
Rust 编程小技巧摘选(8)
Rust 编程小技巧摘选(8)
398 0
Rust 编程小技巧摘选(8)
|
算法 C++ 机器人
力扣 C++|一题多解之动态规划专题(1)
力扣 C++|一题多解之动态规划专题(1)
169 0
力扣 C++|一题多解之动态规划专题(1)
|
C++ Python 索引
Python Numpy入门基础(二)数组操作
Python Numpy入门基础(二)数组操作
261 0
Python Numpy入门基础(二)数组操作
|
C++ 存储
力扣C++|一题多解之数学题专场(1)
力扣C++|一题多解之数学题专场(1)
234 0
力扣C++|一题多解之数学题专场(1)
|
Java Go C++
Golang每日一练(leetDay0118) 扁平化嵌套列表迭代器、整数拆分
Golang每日一练(leetDay0118) 扁平化嵌套列表迭代器、整数拆分
203 0
Golang每日一练(leetDay0118) 扁平化嵌套列表迭代器、整数拆分
|
Java Go C++
Golang每日一练(leetDay0114) 矩阵中的最长递增路径、按要求补齐数组
Golang每日一练(leetDay0114) 矩阵中的最长递增路径、按要求补齐数组
230 0
Golang每日一练(leetDay0114) 矩阵中的最长递增路径、按要求补齐数组
|
Java Go C++
Golang每日一练(leetDay0110) 零钱兑换I\II Coin Change
Golang每日一练(leetDay0110) 零钱兑换I\II Coin Change
247 0
Golang每日一练(leetDay0110) 零钱兑换I\II Coin Change
|
Java Go Rust
Rust每日一练(Leetday0030) 合并有序数组、格雷编码、子集II
Rust每日一练(Leetday0030) 合并有序数组、格雷编码、子集II
193 0
Rust每日一练(Leetday0030) 合并有序数组、格雷编码、子集II

推荐镜像

更多