python试题[转]

本文介绍了两种数组处理算法:寻找平衡点(数组中某点前后元素和相等的位置)和寻找支配点(数组中出现次数超过一半的元素位置)。通过Python实现并提供示例代码。

转自:http://forum.ubuntu.org.cn/viewtopic.php?t=260613

 

1.平衡点问题

平衡点:比如int[] numbers = {1,3,5,7,8,25,4,20}; 25前面的总和为24,25后面的总和也是24,25这个点就是平衡点;假如一个数组中的元素,其前面的部分等于后面的部分,那么这个点的位序就是平衡点
要 求:返回任何一个平衡点

2.支配点问题:
支配数:数组中某个元素出现的次数大于数组总数的一半时就成为支配数,其所在位序成为支 配点;比如int[] a = {3,3,1,2,3};3为支配数,0,1,4分别为支配点;
要求:返回任何一个支配点

以下给 出我想的答案

#1.平衡点问题

代码
 1 # -*- coding: utf-8 -*- 
 2 
 3 data = [1357825420]
 4 
 5 def main() :
 6 
 7    dataIndex = []
 8    length = len(data)
 9    total = sum(data)
10 
11    if (length > 2) :
12       tempSum = data[0]
13       for i in range(1, length - 1) :
14          if (tempSum * 2 + data[i] == total) :
15             dataIndex.append(i)
16          tempSum = tempSum + data[i]   
17    
18    return dataIndex
19 
20 if __name__ == "__main__" :
21    print(main())

#2.支配点问题

代码
 1 # -*- coding: utf-8 -*-
 2 # 用dictionary实现,key存放所给的数,value为list,存放所给数在数组中的位置
 3 # 一个数可能在数组中出现多次
 4 
 5 data = [33123]
 6 
 7 def main() :
 8    dataIndex = []
 9    hashData = {}
10 
11    for i in range(0, len(data)) :
12       key = data[i]
13       if (key in hashData) :
14          value = hashData[key]
15          value.append(i)
16       else :
17          value = []
18          value.append(i)
19          hashData[key] = value
20 
21    halfLength = int(len(data) / 2)
22    if (len(data) % 2 == 1) :
23       halfLength = halfLength + 1
24 
25    for key in hashData :
26       if (len(hashData[key]) >= halfLength) :
27          dataIndex.append(hashData[key])
28    
29    return dataIndex
30 
31 if __name__ == "__main__" :
32    print(main())

 

 要求算一任意长度字符串中不同的字符以及它的个数

= "abcdefgabc"
dic 
= dict.fromkeys(s, 0)
for x in s:
dic[x] 
+= 1
print '\n'.join('%s,%s' % (k, v) for k, v in dic.items())

 

 

转载于:https://www.cnblogs.com/nsnow/archive/2010/04/18/1714658.html

### 关于Python编程语言的试题与练习题 以下是关于Python编程语言的一些常见试题和练习题,涵盖了基础知识、函数设计、数据处理等多个方面: #### 基础知识类题目 1. **解释型语言和编译型语言的区别是什么?** 解释型语言是指源代码不需要经过显式的编译过程即可被逐条执行的语言;而编译型语言则需要先通过编译器将整个程序换为目标机器码后再运行。Python属于典型的解释型语言[^3]。 2. **什么是GIL(Global Interpreter Lock),它对多线程有什么影响?** GIL是CPython实现中的全局解释器锁,用于保护Python对象模型的安全性,在同一时刻只允许一个线程执行Python字节码。这意味着即使在多核CPU环境下,传统的基于线程的并行计算也无法充分利用多个核心资源[^4]。 #### 数据结构与算法类题目 3. **如何判断两个列表是否有相同元素?** 可以利用集合操作来快速完成此任务。例如: ```python list1 = [1, 2, 3] list2 = [4, 5, 3] if set(list1) & set(list2): print("存在共同元素") ``` 4. **编写一段代码找出数组中重复次数最多的元素及其出现次数。** 使用`collections.Counter`可以轻松统计频率最高的项: ```python from collections import Counter data = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k'] counter = Counter(data) most_common_element, frequency = counter.most_common(1)[0] print(f'最常出现的是 {most_common_element} ,共出现了 {frequency} 次') ``` #### 实际应用类题目 5. **怎样用Python抓取HTTPS网站的数据?** 抓取HTTPS站点通常需要用到`requests`库,并设置SSL验证选项。如果遇到证书错误,则可以通过关闭SSL认证绕过该问题(不推荐生产环境这么做)。示例代码如下所示: ```python import requests response = requests.get('https://example.com', verify=False) print(response.text) ``` 需要注意的是,禁用SSL校验可能会带来安全隐患[^1]。 6. **列举几个常用的Python设计模式实例。** 设计模式分为创建型、结构型和行为型三类。比如单例模式是一种常见的创建型模式,用来确保某类仅有一个实例;适配器模式则是典型结构性模式之一,负责让原本接口不兼容的对象能够协同工作[^1]。 #### 编码技巧优化类题目 7. **简化下列代码逻辑:** 已知原始版本为: ```python result = [] for i in range(len(lst)): if lst[i] % 2 == 0: result.append(lst[i]) ``` 改写成更简洁的形式可采用列表推导式表达方式: ```python result = [item for item in lst if item % 2 == 0] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值