Python的一些编程上的疑难问题

  • [1 ] 创建自己宿舍全部同学(不包括自己)一周内消费的商品名称、消费金额。分别按消费总额和最高单次消费额用sort函数进行排序,打印每个人的姓名和消费总额,姓名和最高单次消费额。

  • [ 2] 假设你宿舍的同学是你的客户,生成客户类,实例化客户类时输入姓名,默认性别为男,上学期各门功课的成绩,家庭地址。使用map()函数把他们的家庭地址转换为ASCII编码、Unicode编码和UTF-8编码,比较三种编码的不同。

  • [ 3] 下图为RFM模型的定义,使用@property来设置R,F和M的值,使用if_elif判断并打印会员细分类型和营销策略

    img

  • [ 4] 采用一边循环一边计算的机制定义一个不限制长度的存储用户名和用户账户余额的对象,并判断这个对象是否是Iterator,输出所有用户账户余额总数。

data = []
data.append(('张三', '2022-11-21', '牙膏', 10))
data.append(('张三', '2022-11-21', '薯片', 20))
data.append(('李四', '2022-11-21', '方便吗', 5))
data.append(('李四', '2022-11-21', '水果', 40))
data.append(('王五', '2022-11-21', '羽毛球', 35))
data.append(('王五', '2022-11-21', '饮料', 18))

result = []
for i in data:
    temp = [j for j in result if j[0] == i[0]]
    if len(temp) == 0:
        result.append([i[0], i[3]])
    else:
        temp[0][1] += i[3]
result.sort(key=lambda x: x[1], reverse=True)
print("总消费额倒序排列:")
for i in result:
    print(f'{i[0]} {i[1]}')

result = []
for item in data:
    temp = [index for index, j in enumerate(result) if j[0] == item[0]]
    if len(temp) == 0:
        result.append(item)
    elif result[temp[0]][3] < item[3]:
        result[temp[0]] = item
result.sort(key=lambda x: x[3], reverse=True)
print("单次消费额倒序排列:")
for i in result:
    print(f'{i[0]} {i[3]}')
class Customer:
    def __init__(self, name=None, sex='男', math_score=None, english_score=None, manager_score=None, address=None):
        self.name = name
        self.sex = sex
        self.math_score = math_score
        self.english_score = english_score
        self.manager_score = manager_score
        self.address = address

    def __str__(self):
        return f'{self.name} 性别={self.sex} 高数={self.math_score} 英语={self.english_score} 管理学={self.manager_score} 家庭住址={self.address}'


if __name__ == '__main__':
    result = []
    print("请输入5位室友数据,输入格式如下:")
    print('1:XXC 男 70 80 82 新乡')
    print('2:XXC 70 80 82 新乡')
    for i in range(0, 5):
        data = input().split()
        if len(data) == 6:
            result.append(Customer(data[0], data[1], data[2], data[3], data[4], data[5]))
        else:
            result.append(
                Customer(data[0], math_score=data[1], english_score=data[2], manager_score=data[3], address=data[4]))
    for index, item in enumerate(result, 1):
        print(f'室友{index}:{item}')
    for i in list(map(lambda x: x.address, result)):
        print(i.encode('unicode-escape'))
        print(i.encode('UTF-8'))
class AccountType:
    def __init__(self, r, m, f):
        self._r = r
        self._m = m
        self._f = f

    @property
    def r(self):
        return self._r

    @property
    def m(self):
        return self._m

    @property
    def f(self):
        return self._f

    def __str__(self):
        result = self.r + ' ' + self.m + ' ' + self.f + ' '
        if self.r == '高' and self.m == '高' and self.f == '高':
            return result + '重要价值会员' + ' ' + '倾斜更多资源, VIP 服务,个性化服务,附加销售'
        if self.r == '低' and self.m == '高' and self.f == '高':
            return result + '重要换回会员' + ' ' + 'DM 营销,提供有用的资源,通过新的商品赢回他们'
        return result + '未知' + ' ' + '未知'


if __name__ == '__main__':
    print(AccountType('高', '高', '高'))
    print(AccountType('低', '高', '高'))
class CustomerLists:
    def __init__(self):
        self.data = []

    def add(self, name, balance):
        self.data.append((name, balance))

    def __iter__(self):
        self._count = 0
        return self

    def __next__(self):
        if self._count == len(self.data):
            raise StopIteration
        else:
            self._count += 1
            return self.data[self._count - 1]


if __name__ == '__main__':
    lists = CustomerLists()
    lists.add('张三', 1000)
    lists.add('李四', 1000)
    lists.add('王五', 1000)
    sum = 0
    for i in lists:
        sum += i[1]
    print(f'总额:{sum}')

哟西

哈哈哈哈,这是直接要代码的节奏啊;

你可以先分析下思路,然后再来交流。