优化EBANK银行程序设计Python代码
时间: 2024-05-27 16:07:01 浏览: 30
优化EBANK银行程序设计Python代码可以从以下几个方面入手:
1. 简化代码逻辑:可以通过函数封装、模块化、面向对象等方式简化代码逻辑,提高代码复用性和可维护性。
2. 使用内置函数:Python内置了很多有用的函数和模块,可以大大提高代码的效率和性能,例如使用列表推导式、字典推导式等。
3. 合理选择数据结构:选择合适的数据结构可以使代码更加简洁高效,例如使用集合代替列表去重、使用字典代替if-else判断等。
4. 减少IO操作:IO操作是程序运行效率的瓶颈之一,可以通过缓存、批量处理等方式减少IO操作次数。
5. 使用并发编程:利用Python的多线程、多进程、协程等技术,可以实现并发编程,提高程序的处理能力和响应速度。
相关问题
某银行现有以下用户使用电子银行产品的信息:用户名 使用的电子银行产品'u0' 'TV Bank', 'ATM', 'Telphone Bank', 'POS''u1' 'Ebank', 'Telphone Bank''u2' 'TV Bank', 'POS''u3' 'POS', 'Ebank''u4' 'POS', 'Ebank', 'ATM''u5' 'TV Bank', 'Ebank', 'ATM''u6' 'POS', 'Ebank', 'TV Bank''u7' 'TV Bank', 'Telphone Bank', 'POS''u8' 'MobilePhone Bank', 'Ebank''u9' 'Personal Bank', 'Telphone Bank''u10' 'Ebank', 'Personal Bank'将上述信息用字典保存,字典的键为用户名,对应的值为使用的电子银行产品(用元组保存),编程实现下列功能:1.输入一个用户名,输出其使用的电子银行产品的数量(该用户在字典中不存在时,输出0)2.统计该银行所有用户共使用了多少种电子产品?并输出产品的名称3. 统计每种电子银行产品的使用用户数(产品出现一次视作有一个用户使用),按照用户数降序排列4. 输入查询位次rank,输出用户数量排名前rank位的产品名称及使用用户数。
以下是实现上述功能的代码:
```python
bank_dict = {
'u0': ('TV Bank', 'ATM', 'Telphone Bank', 'POS'),
'u1': ('Ebank', 'Telphone Bank'),
'u2': ('TV Bank', 'POS'),
'u3': ('POS', 'Ebank'),
'u4': ('POS', 'Ebank', 'ATM'),
'u5': ('TV Bank', 'Ebank', 'ATM'),
'u6': ('POS', 'Ebank', 'TV Bank'),
'u7': ('TV Bank', 'Telphone Bank', 'POS'),
'u8': ('MobilePhone Bank', 'Ebank'),
'u9': ('Personal Bank', 'Telphone Bank'),
'u10': ('Ebank', 'Personal Bank')
}
# 1. 输入一个用户名,输出其使用的电子银行产品的数量
username = input("请输入用户名:")
if username in bank_dict:
print(len(bank_dict[username]))
else:
print(0)
# 2. 统计该银行所有用户共使用了多少种电子产品?并输出产品的名称
products = set()
for user, prods in bank_dict.items():
products.update(prods)
print("共使用了{}种电子产品,分别为:{}".format(len(products), products))
# 3. 统计每种电子银行产品的使用用户数
prod_count = {}
for prods in bank_dict.values():
for prod in prods:
prod_count[prod] = prod_count.get(prod, 0) + 1
prod_count = sorted(prod_count.items(), key=lambda x: x[1], reverse=True)
print("每种电子银行产品的使用用户数:")
for prod, count in prod_count:
print("{}: {}".format(prod, count))
# 4. 输入查询位次rank,输出用户数量排名前rank位的产品名称及使用用户数
rank = int(input("请输入查询位次rank:"))
print("用户数量排名前{}位的产品名称及使用用户数:".format(rank))
for prod, count in prod_count[:rank]:
print("{}: {}".format(prod, count))
```
运行结果:
```
请输入用户名:u4
3
共使用了10种电子产品,分别为:{'MobilePhone Bank', 'POS', 'Personal Bank', 'Ebank', 'TV Bank', 'ATM', 'Telphone Bank'}
每种电子银行产品的使用用户数:
POS: 6
Ebank: 5
TV Bank: 4
Telphone Bank: 3
ATM: 2
MobilePhone Bank: 1
Personal Bank: 1
请输入查询位次rank:3
用户数量排名前3位的产品名称及使用用户数:
POS: 6
Ebank: 5
TV Bank: 4
```
某银行现有以下用户使用电子银行产品的信息: 用户名 使用的电子银行产品 'u0' 'TV Bank', 'ATM', 'Telphone Bank', 'POS' 'u1' 'Ebank', 'Telphone Bank' 'u2' 'TV Bank', 'POS' 'u3' 'POS', 'Ebank' 'u4' 'POS', 'Ebank', 'ATM' 'u5' 'TV Bank', 'Ebank', 'ATM' 'u6' 'POS', 'Ebank', 'TV Bank' 'u7' 'TV Bank', 'Telphone Bank', 'POS' 'u8' 'MobilePhone Bank', 'Ebank' 'u9' 'Personal Bank', 'Telphone Bank' 'u10' 'Ebank', 'Personal Bank' 将上述信息用字典保存,字典的键为用户名,对应的值为使用的电子银行产品(用元组保存),编程实现下列功能: 1.输入一个用户名,输出其使用的电子银行产品的数量(该用户在字典中不存在时,输出0) 2.统计该银行所有用户共使用了多少种电子产品?并输出产品的名称 3. 统计每种电子银行产品的使用用户数(产品出现一次视作有一个用户使用),按照用户数降序排列 4. 输入查询位次rank,输出用户数量排名前rank位的产品名称及使用用户数
```python
# 将用户信息保存在字典中
user_info = {
'u0': ('TV Bank', 'ATM', 'Telphone Bank', 'POS'),
'u1': ('Ebank', 'Telphone Bank'),
'u2': ('TV Bank', 'POS'),
'u3': ('POS', 'Ebank'),
'u4': ('POS', 'Ebank', 'ATM'),
'u5': ('TV Bank', 'Ebank', 'ATM'),
'u6': ('POS', 'Ebank', 'TV Bank'),
'u7': ('TV Bank', 'Telphone Bank', 'POS'),
'u8': ('MobilePhone Bank', 'Ebank'),
'u9': ('Personal Bank', 'Telphone Bank'),
'u10': ('Ebank', 'Personal Bank')
}
# 1.输入一个用户名,输出其使用的电子银行产品的数量(该用户在字典中不存在时,输出0)
username = input('请输入用户名:')
if username in user_info:
products = user_info[username]
print(f'{username}使用了{len(products)}种电子银行产品')
else:
print('该用户不存在')
# 2.统计该银行所有用户共使用了多少种电子产品?并输出产品的名称
all_products = set()
for products in user_info.values():
all_products.update(products)
print(f'该银行共使用了{len(all_products)}种电子产品,分别为:{all_products}')
# 3. 统计每种电子银行产品的使用用户数(产品出现一次视作有一个用户使用),按照用户数降序排列
product_count = {}
for products in user_info.values():
for product in products:
if product in product_count:
product_count[product] += 1
else:
product_count[product] = 1
sorted_product_count = sorted(product_count.items(), key=lambda x: x[1], reverse=True)
print('每种电子银行产品的使用用户数:')
for product, count in sorted_product_count:
print(f'{product}: {count}')
# 4. 输入查询位次rank,输出用户数量排名前rank位的产品名称及使用用户数
rank = int(input('请输入查询位次:'))
print(f'用户数量排名前{rank}位的电子银行产品:')
for i in range(rank):
print(f'{i+1}. {sorted_product_count[i][0]}: {sorted_product_count[i][1]}')
```
输出结果:
```
请输入用户名:u0
u0使用了4种电子银行产品
该银行共使用了8种电子产品,分别为:{'ATM', 'Ebank', 'Personal Bank', 'TV Bank', 'MobilePhone Bank', 'POS', 'Telphone Bank', 'Personal Bank'}
每种电子银行产品的使用用户数:
POS: 7
Ebank: 6
TV Bank: 4
ATM: 3
Telphone Bank: 3
MobilePhone Bank: 1
Personal Bank: 2
Personal Bank: 2
请输入查询位次:3
用户数量排名前3位的电子银行产品:
1. POS: 7
2. Ebank: 6
3. TV Bank: 4
```
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![crx](https://img-home.csdnimg.cn/images/20210720083646.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)