用Python摸拟假设智能手机的默认语言为英文,我们可以根据需要将默认语言 修改任意语言。请编写手机类,采用无参数构造方法,表示使用默认 语言;采用有参数的实例方法,修改手机的默认语言为中文。

Python假设智能手机的默认语言为英文,我们可以根据需要将默认语言
修改任意语言。请编写手机类,采用无参数构造方法,表示使用默认
语言;采用有参数的实例方法,修改手机的默认语言为中文。

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7610745
  • 你也可以参考下这篇文章:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个python 冒泡+迭代
  • 除此之外, 这篇博客: 4.Python数据结构与算法分析课后习题(第二版)__chapter4中的 11.写一个程序来解决这样一个问题:3个羚羊和3只狮子准备乘船过河,河边有一艘能容纳2只动物的小船。但是,如果两侧河岸上的狮子数量大于羚羊数量,羚羊就会被吃掉。找到运送办法,使得所有动物都能安全渡河。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 参考链接:https://blog.csdn.net/fhlsyol/article/details/106439254link(ps:这个代码的输出结果含义是小船每次一来一回载的动物)

      搜了一下过河问题大多都是用图解决,还没复习到,先插个眼回头看。

    from collections import Counter
    from random import sample, randint
    
    
    class Solution:
        """解决问题的方案类"""
    
        def __init__(self):
            """初始化属性"""
            self.left = ['羚羊'] * 3 + ['狮子'] * 3  # 后面用到了Counter,所以这里可以用字符串表示,不用0,1表示,更直观一点
            self.left_checkpoint = []  # 左边的存档,用于试错后恢复
            self.right = []
            self.right_checkpoint = []
            self.result = [[]]  # 结果,给个初始值是为了避免out of index的情况,取结果的时候切片即可
            self.result_checkpoint = []
            self.r_direction = True  # True为右,False为左
    
        def go(self):
            """渡河"""
            if self.r_direction:  # 向右渡河
                boat = sample(self.left, 2)
                for i in boat:
                    self.left.remove(i)
                    self.right.append(i)
            else:  # 向左渡河
                if len(self.right) > 1:  # 这里判断是为了避免sample取的时候越界(从1个里面取2个)
                    boat = sample(self.right, randint(1, 2))
                else:
                    boat = sample(self.right, 1)
                for i in boat:
                    self.right.remove(i)
                    self.left.append(i)
            return boat
    
        def judge(self):
            """判断"""
            if self.left and self.right:
                left_counter = Counter(self.left)
                right_counter = Counter(self.right)
                if (left_counter['羚羊'] and left_counter['羚羊'] < left_counter['狮子']) or \
                        (right_counter['羚羊'] and right_counter['羚羊'] < right_counter['狮子']):
                    return False
            return True
    
        def checkpoint(self):
            """检查点"""
            self.left_checkpoint, self.right_checkpoint, self.result_checkpoint = \
                self.left.copy(), self.right.copy(), self.result.copy()
    
        def reset(self):
            """读档"""
            self.left, self.right, self.result = \
                self.left_checkpoint.copy(), self.right_checkpoint.copy(), self.result_checkpoint.copy()
    
        def get_result(self):
            """模拟渡河过程,获取结果"""
            while len(self.right) < 6:
                self.checkpoint()  # 存档
                boat = self.go()  # 渡河
                boat.sort()
                if self.judge() and boat != self.result[-1]:  # 这里判断是为了避免相同的人来回的情况,以求尽可能少的解
                    self.r_direction = not self.r_direction  # 调转船头
                    self.result.append(boat)
                else:
                    self.reset()  # 读档
            return self.result[1:]
    
    
    def main():
        """主函数"""
    
        repeat = 10000  # 重复执行次数
        result_set = set()  # 解的集合
        solution = Solution()
    
        for _ in range(repeat):
            result = solution.get_result()
            result_set.add(str(result))
            solution.__init__()
    
        print(f'经{repeat}次执行,共得到{len(result_set)}种不同的结果,结果如下:', end='\n\n')
        for result in result_set:
    
            print(result)
    
    
    if __name__ == '__main__':
        main()