python常见脚本

1.插入排序

插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序;首先将第一个作为已经排好序的,然后每次从后的取出插入到前面并排序;

  • 时间复杂度:O(n²)
  • 空间复杂度:O(1)
  • 稳定性:稳定
def insert_sort(ilist):for i in range(len(ilist)):for j in range(i):if ilist[i] < ilist[j]:ilist.insert(j, ilist.pop(i))breakreturn ilistilist = insert_sort([4,5,6,7,3,2,6,9,8])
print ilist

2.希尔排序

希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止

  • 时间复杂度:O(n)
  • 空间复杂度:O(n√n)
  • 稳定性:不稳定
def shell_sort(slist):gap = len(slist)while gap > 1:gap = gap // 2for i in range(gap, len(slist)):for j in range(i % gap, i, gap):if slist[i] < slist[j]:slist[i], slist[j] = slist[j], slist[i]return slistslist = shell_sort([4,5,6,7,3,2,6,9,8])
print slist

3.冒泡排序

它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成

  • 时间复杂度:O(n²)
  • 空间复杂度:O(1)
  • 稳定性:稳定
list01 = [1,89,546,54,2,58,98]def sortport():for i in range(len(list01)-1):for j in range(len(list01)-1-i):if list01[j] > list01[j+1]:list01[j],list01[j+1] = list01[j+1],list01[j]return list01l = sortport()
print(l)

4.快速排序:

通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列

  • 时间复杂度:O(nlog₂n)
  • 空间复杂度:O(nlog₂n)
  • 稳定性:不稳定
def quick_sort(qlist):if qlist == []:return []else:qfirst = qlist[0]qless = quick_sort([l for l in qlist[1:] if l < qfirst])qmore = quick_sort([m for m in qlist[1:] if m >= qfirst])return qless + [qfirst] + qmoreqlist = quick_sort([4,5,6,7,3,2,6,9,8])
print qlist

5.选择排序:

第1趟,在待排序记录r1 ~ r[n]中选出最小的记录,将它与r1交换;第2趟,在待排序记录r2 ~ r[n]中选出最小的记录,将它与r2交换;以此类推,第i趟在待排序记录r[i] ~ r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕

  • 时间复杂度:O(n²)
  • 空间复杂度:O(1)
  • 稳定性:不稳定
def select_sort(slist):for i in range(len(slist)):x = ifor j in range(i, len(slist)):if slist[j] < slist[x]:x = jslist[i], slist[x] = slist[x], slist[i]return slistslist = select_sort([4,5,6,7,3,2,6,9,8])
print slist

6.计算x的n次方的方法

def power(x,n):s = 1while n > 0:n = n - 1s = s * xreturn s

7.计算aa + bb + c*c + ……

def clas(*numbers):sum = 0for n in numbers:sum = sum + n * nreturn sum

8.计算阶乘 n!

#第一种方法
def fac(n):num = int(input("请输入一个数字:"))factorial = 1#查看数字是负数,0或正数if num < 0:print("抱歉,负数没有阶乘")elif num == 0:print("0的阶乘为1")else:for i in range(1,num + 1):factorial = factorial * iprint("%d 的阶乘为%d" %(num,factorial))#第二种方法
def factorial(n):result = 1for i in range(1,n):result *= ireturn result
#第三种方法
def fact(n):if n == 1:return 1return n * fact(n - 1)

9.列出当前目录下的所有文件和目录名

[d for d in os.listdir('.')]

10.把一个list中所有的字符串变成小写:

l = ['Hello','World','IBM','Apple']
a = [s.lower() for s in l]
print(a)

11.有一本100页的书,可以一天看一页,也可以一天看两页,总共有多少种看法?

def read_book(n):if n == 1:return 1elif n == 2:return 2else:return read_book(n-1) + read_book(n-2)a = read_book(10)
print(a)

12.输出某个路径下的所有文件和文件夹的路径

import osdef print_dir():filepath = input("请输入一个路径:")if filepath == "":print("请输入正确路径")else:for i in os.listdir(filepath):   #获取目录中的文件及子目录列表print(os.path.join(filepath,i)) #把路径组合起来print(print_dir())

13.输出某个路径及其子目录下的所有文件路径

import osdef show_dir(filepath):for i in os.listdir(filepath):path = (os.path.join(filepath,i))print(path)if os.path.isdir(path):   #isdir()判断是否是目录show_dir(path)        #如果是目录,使用递归方法filepath = "C:\Program File\Internet Explorer"
show_dir(filepath)

14.输出某个路径及其子目录下所有以.html为后缀的文件

import osdef print_dir(filepath):for i in os.listdir(filepath):path = os.path.join(filepath,i)if os.path.isdir(path):print_dir(path)if path.endswith(".html"):print(path)filepath = "E:\PycharmProjects"
print_dir(filepath)

15.把原字典的键值对颠倒并生产新的字典

dict01 = {"A":"a","B":"b","C":"c"}
dict02 = {y:x for x,y in dict01.items()}
print(dict02)#{'a': 'A', 'b': 'B', 'c': 'C'}

16.打印九九乘法表

for i in range(1,10):for j in range(1,i+1):#print('{}x{}={}\t'.format(j,i,i*j),end='')   #两种都可以print('%dx%d=%d\t'%(i,j,i*j),end='')print()

17.替换列表中所有的3为3a

num = ["harden","lampard",3,34,45,56,76,78,3,3,3]
print(num.count(3))
print(num.index(3))
for i in range(num.count(3)):  #获取3出现的次数ele_index = num.index(3)   #获取首次出现3的坐标num[ele_index] = "3a"      #修改3为3a
print(num)

18.打印每个名字

l = ["James","Meng","Xin"]
for i in range(len(l)):print("Hello ,%s"%l[i])

19.合并去重

list01 = [2,3,8,4,9,5,6]
list02 = [5,6,10,17,11,2]
list03 = list01 + list02
print(list03)
print(set(list03))
print(list(set(list03)))

20.随机生成验证码的两种方式

#第一种方法
import randomlist01 = []
for i in range(65,91):list01.append(chr(i)) #通过for循环遍历assi追加到空列表中
for j in range(97,123):list01.append(chr(j))
for k in range(48,58):list01.append(chr(k))ma = random.sample(list01,6)
print(ma)                       #获取到的为列表
ma = ''.join(ma)           #将列表转化为字符串
print(ma)#第二种方法
import random,stringstr01 = "0123456789"
str02 = string.ascii_letters   #string.ascii_letters 包含所有字母(大写或小写)的字符串
str03 = str01 + str02
ma1 = random.sample(str03,6)
ma2 = ''.join(ma1)
print(ma2)

21.猜数字游戏

import randomi = 1
a = random.randint(0,100)
b = int(input("请输入0-100中的一个数字\n然后查看是否与电脑一样:"))
while a != b:if a > b:print("你第%d输入的数字小于电脑随机数"%i)b = int(input("请再次输入数字:"))else:print("你第%d输入的数字大于电脑随机数"%i)b = int(input("请再次输入数字:"))i += 1
else:print("恭喜你,你第%d输入的数字与电脑随机数%d一样"%(i,b))

22.计算平方根

num = float(input("请输入一个数字:"))
num_sqrt = num ** 0.5
print('%0.2f 的平方根为 %0.2f'%(num,num_sqrt))

23.判断字符串是否只由数字组成

#第一种方法
def is_number(s):try:float(s)return Trueexcept ValueError:passtry:import unicodedataunicodedata.numeric(s)return Trueexcept (TypeError,ValueError):passreturn Falsec = is_number("455")
print(c)
#第二种方法
print("chri".isdigit())  # 检测字符串是否只由字符串组成
print("000".isnumber())  # 检测字符串是否只由字符串组成,这种方法只针对unicode对象

24.判断奇偶数

#第一种方法
num = int(input("输入一个数字: "))
if (num % 2) == 0:print("{0} 是偶数".format(num))
else:print("{0} 是奇数".format(num))
#第二种方法
while True:try:num = int(input('输入一个整数:'))    #判断输入是否为整数except ValueError:                      #不是纯数字需要重新输入print("输入的不是整数!")continueif num % 2 == 0:print('偶数')else:print('奇数')break

25.判断闰年

#第一种方法
year = int(input("输入一个年份: "))
if (year % 4) == 0:if (year % 100) == 0:if (year % 400) == 0:print("{0} 是闰年".format(year))   # 整百年能被400整除的是闰年else:print("{0} 不是闰年".format(year))else:print("{0} 是闰年".format(year))       # 非整百年能被4整除的为闰年
else:print("{0} 不是闰年".format(year))#第二种方法
year = int(input("请输入一个年份:"))
if (year % 4) == 0 and (year % 100) != 0 or (year % 400) == 0:print("{0}是闰年".format(year))
else:print("{0}不是闰年".format(year))#第三种方法
import calendaryear = int(input("请输入年份:"))
check_year=calendar.isleap(year)
if check_year == True:print ("%d是闰年"% year)
else:print ("%d是平年"% year)

26.获取最大值

#第一种方法
N = int(input('输入需要对比大小数字的个数:'))
print("请输入需要对比的数字:")
num = []
for i in range(1,N+1):temp = int(input('输入第 %d 个数字:' % i))num.append (temp)print('您输入的数字为:',num)
print('最大值为:',max(num))#第二种方法
N = int(input('输入需要对比大小数字的个数:\n'))num = [ int(input('请输入第 %d 个对比数字: \n'%i))for i in range(1,N+1)]print('您输入的数字为:',num)
print('最大值为: ',max(num))#第三种方法(不适用内置函数)
def getMax(arr):for i in range(0, len(arr)):for j in range(i + 1, len(arr)):first = int(arr[i])second = int(arr[j])if first < second:arr[i] = arr[j]arr[j] = firstprint(arr[0])arr = [19, 29, 30, 48]
getMax(arr)

27.斐波那契数列

斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13;特别指出:第0项是0,第1项是第一个1。从第三项开始,每一项都等于前两项之和。

# 判断输入的值是否合法
if nterms <= 0:print("请输入一个正整数。")
elif nterms == 1:print("斐波那契数列:")print(n1)
else:print("斐波那契数列:")print(n1, ",", n2, end=" , ")while count < nterms:nth = n1 + n2print(n1+n2, end=" , ")# 更新值n1 = n2n2 = nthcount += 1

28.十进制转二进制、八进制、十六进制

# 获取输入十进制数
dec = int(input("输入数字:"))print("十进制数为:", dec)
print("转换为二进制为:", bin(dec))
print("转换为八进制为:", oct(dec))
print("转换为十六进制为:", hex(dec))

29.最大公约数

def hcf(x, y):"""该函数返回两个数的最大公约数"""# 获取最小值if x > y:smaller = yelse:smaller = xfor i in range(1, smaller + 1):if ((x % i == 0) and (y % i == 0)):hcf = ireturn hcf# 用户输入两个数字
num1 = int(input("输入第一个数字: "))
num2 = int(input("输入第二个数字: "))print(num1, "和", num2, "的最大公约数为", hcf(num1, num2))

30.最小公倍数

# 定义函数
def lcm(x, y):#  获取最大的数if x > y:greater = xelse:greater = ywhile(True):if((greater % x == 0) and (greater % y == 0)):lcm = greaterbreakgreater += 1return lcm# 获取用户输入
num1 = int(input("输入第一个数字: "))
num2 = int(input("输入第二个数字: "))print( num1,"和", num2,"的最小公倍数为", lcm(num1, num2))

31.简单计算器

# 定义函数
def add(x, y):"""相加"""return x + ydef subtract(x, y):"""相减"""return x - ydef multiply(x, y):"""相乘"""return x * ydef divide(x, y):"""相除"""return x / y# 用户输入
print("选择运算:")
print("1、相加")
print("2、相减")
print("3、相乘")
print("4、相除")choice = input("输入你的选择(1/2/3/4):")num1 = int(input("输入第一个数字: "))
num2 = int(input("输入第二个数字: "))if choice == '1':print(num1, "+", num2, "=", add(num1, num2))elif choice == '2':print(num1, "-", num2, "=", subtract(num1, num2))elif choice == '3':print(num1, "*", num2, "=", multiply(num1, num2))elif choice == '4':if num2 != 0:print(num1, "/", num2, "=", divide(num1, num2))else:print("分母不能为0")
else:print("非法输入")

32.生成日历

# 引入日历模块
import calendar# 输入指定年月
yy = int(input("输入年份: "))
mm = int(input("输入月份: "))# 显示日历
print(calendar.month(yy, mm))

33.文件IO

# 写文件
with open("test.txt", "wt") as out_file:out_file.write("该文本会写入到文件中\n看到我了吧!")# Read a file
with open("test.txt", "rt") as in_file:text = in_file.read()print(text)

34.字符串判断

# 测试实例一
print("测试实例一")
str = "runoob.com"
print(str.isalnum()) # 判断所有字符都是数字或者字母
print(str.isalpha()) # 判断所有字符都是字母
print(str.isdigit()) # 判断所有字符都是数字
print(str.islower()) # 判断所有字符都是小写
print(str.isupper()) # 判断所有字符都是大写
print(str.istitle()) # 判断所有单词都是首字母大写,像标题
print(str.isspace()) # 判断所有字符都是空白字符、\t、\n、\rprint("------------------------")# 测试实例二
print("测试实例二")
str = "Bake corN"
print(str.isalnum())
print(str.isalpha())
print(str.isdigit())
print(str.islower())
print(str.isupper())
print(str.istitle())
print(str.isspace())

35.字符串大小写转换

str = "https://www.cnblogs.com/ailiailan/"
print(str.upper())          # 把所有字符中的小写字母转换成大写字母
print(str.lower())          # 把所有字符中的大写字母转换成小写字母
print(str.capitalize())     # 把第一个字母转化为大写字母,其余小写
print(str.title())          # 把每个单词的第一个字母转化为大写,其余小写

36.计算每个月天数

import calendar
monthRange = calendar.monthrange(2016,9)
print(monthRange)

37.获取昨天的日期

# 引入 datetime 模块
import datetime
def getYesterday(): today=datetime.date.today() oneday=datetime.timedelta(days=1) yesterday=today-oneday  return yesterday# 输出
print(getYesterday())

38.列表去重

#方法一
def delList(L):L1 = [ ]for i in L:if i not in L1:L1.append(i)return L1
print(delList(L1))#方法二:去重
L1=list(set(L))#a = [2,2,2,2,6,84,5,9]
#print(delList(a))
#a2 = list(set(a))
#print(a2)

39.列表插入

l = [1,2,3]
l.insert(0,4)         #在列表的索引处插入
print(l)

40.列表元素替换

x = "hello world "
y = x.replace("hello","hi")
print(y)                                               # 结果为:hi world

41.a=1,b=2,不用中间变量交换 a 和 b 的值?

#方法一:
a = a+b
b = a-b
a = a-b
#方法二:
a = a^b
b =b^a
a = a^b
#方法三:
a,b = b,a

42.下面这段代码的输出结果将是什么?请解释?

class Parent(object):x=1
class Child1(Parent):pass
class Child2(Parent):pass
print(Parent.x, Child1.x, Child2.x)
Child1.x = 2
print( Parent.x, Child1.x, Child2.x)
Parent.x = 3
print( Parent.x, Child1.x, Child2.x)#结果为:
1 1 1        #继承自父类的类属性 x,所以都一样,指向同一块内存地址。
1 2 1        #更改 Child1,Child1 的 x 指向了新的内存地址。
3 2 3        #更改 Parent,Parent 的 x 指向了新的内存地址。

43.阅读下面的代码,写出 A0,A1 至 An 的最终值。

A0 = dict(zip(('a','b','c','d','e'),(1,2,3,4,5)))
A1 = range(10)
A2 = [i for i in A1 if i in A0]
A3 = [A0[s] for s in A0]                  #[]
A4 = [i for i in A1 if i in A3]
A5 = {i:i*i for i in A1}
A6 = [[i,i*i] for i in A1]
#结果为:
A0 = {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4}
A1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
A2 = []
A3 = [1, 3, 2, 5, 4]
A4 = [1, 2, 3, 4, 5]
A5 = {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
A6 = [[0, 0], [1, 1], [2, 4], [3, 9], [4, 16], [5, 25], [6, 36],[7, 49],[8, 64] [9,81]]

44.考虑以下 Python 代码,如果运行结束,命令行中的运行结果是什么?

l = []
for i in range(10):l.append({'num':i})
print (l)#结果为:[{'num':0},{'num':1},{'num':2},{'num':3},{'num':4},{'num':5},{'num':6},{'num':7},{'num':8},{'num':9}]

再考虑以下代码,运行结束后的结果是什么?

l = []
a = {'num':0}
for i in range(10):a['num'] = il.append(a)
print(l)#结果为:[{'num':9},{'num':9},{'num':9},{'num':9},{'num':9},{'num':9},{'num':9},{'num':9},{'num':9},{'num':9}]

45.返回文件及其子文件路径

def print_directory_contents(sPath):"""
这个函数接收文件夹的名称作为输入参数
返回该文件夹中文件的路径
以及其包含文件夹中文件的路径
"""
# ------------代码如下--------------------import osfor sChild in os.listdir(sPath):sChildPath = os.path.join(sPath, sChild)if os.path.isdir(sChildPath):print_directory_contents(sChildPath)else:print(sChildPath)

46.输入某年某月某日,判断这一天是这一年的第几天?(可以用 Python 标准库)

import datetime
def dayofyear():year = input("请输入年份:")month = input("请输入月份:")day = input("请输入天:")date1 = datetime.date(year=int(year),month=int(month),day=int(day))date2 = datetime.date(year=int(year),month=1,day=1)return (date1 - date2 + 1).days

47.打乱一个排好序的 list 对象 alist?

import random
alist = [1,2,3,4,5,98,56]
random.shuffle(alist)
print(alist)

48.Python 是如何进行类型转换的?

int(x,base=10)                #x字符串或数字,base进制数,默认十进制 浮点转为整数
float                                                          #整数转换为浮点型
complex(1,2)                                        #转换为复数
str(10)                                                     #将对象转换为字符串
repe()                                                      #将对象转换为表达式字符串
repr(dict)                                              #将对象转换为表达式字符串
eval(str)                                #用来计算在字符串中有效的python表达式,返回一个对象
tuple(listi)                                           #将列表转化为元组
list()                                                      #将元组转换为列表
set                                                         #转换集合

49.按 alist 中元素的 age 由大到小排序

alist =[{'name':'a','age':20},{'name':'b','age':30},{'name':'c','age':25}]
def sort_by_age(list1):return sorted(alist,key=lambda x:x['age'],reverse=True)re = sort_by_age(alist)
print(re)

50.写一个列表生成式,产生一个公差为 11 的等差数列?

print([x*11 for x in range(10)])

51.给定两个列表,怎么找出他们相同的元素和不同的元素?

1. list1 = [1,2,3]
2. list2 = [3,4,5]
3. set1 = set(list1)
4. set2 = set(list2)
5. print(set1&set2)
6. print(set1^set2)

52.请写出一段 Python 代码实现删除一个 list 里面的重复元素?

比较容易记忆的是用内置的 set:

l1 = ['b','c','d','b','c','a','a']
l2 = list(set(l1))
print(l2)

如果想要保持他们原来的排序:
用 list 类的 sort 方法:

l1 = ['b','c','d','b','c','a','a']
l2 = list(set(l1))
l2.sort(key=l1.index)
print (l2)

也可以这样写:

l1 = ['b','c','d','b','c','a','a']
l2 = sorted(set(l1),key=l1.index)
print (l2)

也可以用遍历:

l1 = ['b', 'c', 'd', 'b', 'c', 'a', 'a']
l2 = []
for i in l1:if not i in l2:l2.append(i)print (l2)

53.获取 1~100 被 6 整除的偶数?

def A():alist = []for i in range(1,100):if i % 6 == 0:alist.append(i)print(alist)A()

54.将以下 3 个函数按照执行效率高低排序

def f1(lIn):l1 = sorted(lIn)l2 = [i for i in l1 if i<0.5]return [i*i for i in l2]def f2(lIn):l1 = [i for i in l1 if i<0.5]l2 = sorted(l1)return [i*i for i in l2]def f3(lIn):l1 = [i*i for i in lIn]l2 = sorted(l1)return [i for i in l1 if i<(0.5*0.5)]

按执行效率从高到低排列:f2、f1 和 f3。要证明这个答案是正确的,你应该知道如何分析自己代码的性能。Python
中有一个很好的程序分析包,可以满足这个需求。

import random
import cProfile
lIn = [random.random() for i in range(100000)]
cProfile.run('f1(lIn)')
cProfile.run('f2(lIn)')
cProfile.run('f3(lIn)')

55.请尝试用“一行代码”实现将 1-N 的整数列表以 3 为单位分组,比如 1-100 分组后为?

print([[x for x in range(1,100)][i:i+3] for i in range(0,len(list_a),3)])

56.给定一个 int list a,满足 a[i + 1]>=a[i],给定 int key找出 list a 中第一个大于等于 key 的元素的 index,无满足要求的元素则返回-1

def findindex(int_list,int_key):int_list = sorted(int_list)for i in range(len(int_list)):if int_list[i] == int_key:return ireturn -1
if __name__ == "__main__":lista = [12,3,4,5,8,6]index = findindex(lista,5)print(index)

57.字典转换为字符串

a = {"name":"jack","age":30}
#现在需要生成字符串:name=jack|age=30
#请用一行代码实现:
s = '|'.join([str(x)+'='+str(a[x]) for x in a])

58.请将这两个list合并,去重并按照升序排列

list1 = [2, 3, 8, 4, 9, 5, 6]
list2 = [5, 6, 10, 17, 11, 2]
list_new = list1 + list2
list = []
for x in list_new:if x not in list:list.append(x)
list.sort()
print(list)

59.写一段程序,判断字符串内左右括号是否配对

class SStack():def __init__(self):self.__elem = []def is_empty(self):return self.__elem == []def top(self):return self.__elem[-1]def push(self,elem):self.__elem.append(elem)def pop(self):return self.__elem.pop()def kuohao(text):kinds = "()[]{}" #用来定义出现的括号,因为待匹配的字符中含有其他的字符,我们值检查括号是否匹配,而且是只有出现括号后再进行匹配zuo = "([{"   #定义左括号,如果是左括号就入栈dict0 = {")":"(","]":"[","}":"{"} #匹配字典,这个字典定义了匹配规则,如果字典的键值对匹配就可以认定括号是匹配的def pipei(text):     #将等待匹配的文本输入,这个函数的目标是从文本中过滤出括号i,text_len = 0,len(text) #扫描指针用来记录匹配位置while True:while  i< text_len and text[i] not in kinds: #用来寻找到括号i += 1if i >= text_len: #如果字符串中没有包含括号则结束returnyield text[i],i  #返回括号字符和字符对应的下标i += 1st = SStack()for text0,i in pipei(text):#获取得到的符号进行匹配,因为pipei()是一个含有yield函数,所以是一个生成器,调用它会产生一个可迭代的对象if text0 in zuo: #如果是左括号就让它入栈#print(text0)st.push(text0)elif st.pop() != dict0[text0]:#如果是右括号,就弹出栈顶元素进行匹配检查print("本次不匹配")return False #遇到不匹配的,就直接退出函数,结束匹配print("所有的括号都已经匹配完毕,匹配成功!") #如果函数还能够执行到这里说明所有的括号都是匹配的return True
#kuohao("({{[]}})")
kuohao("[{}]")

60.将一个正整数分解质因数。例如输入90,打印90=233*5.

n = num = int(input('请输入一个数字:'))  # 用num保留初始值
f = []  # 存放质因数的列表for j in range(int(num / 2) + 1):  # 判断次数仅需该数字的一半多1次for i in range(2, n):t = n % i  # i不能是n本身if t == 0:  # 若能整除f.append(i)  # 则表示i是质因数# 除以质因数后的n重新进入判断,注意应用两个除号,使n保持整数 n = n // ibreak  # 找到1个质因数后马上break,防止非质数却可以整除的数字进入质因数列表if len(f) == 0:  # 若一个质因数也没有print('该数字没有任何质因数。')
else:  # 若至少有一个质因数f.append(n)  # 此时n已被某个质因数整除过,最后一个n也是其中一个质因数f.sort()  # 排下序print('%d=%d' % (num, f[0]), end='')for i in range(1, len(f)):print('*%d' % f[i], end='')

61.实现一个函数,在给定数组中寻找第2 大的数。

def fn():a=[1,3,5,7,9]return sorted(a[1])

62.求二叉树深度

class TreeNode(object):def __init__(self, x):self.val = xself.left = Noneself.right = None
class Solution(object):def isBalanced(self, root):if root==None:return 0leftheight=self.isBalanced(root.left)rightheight=self.isBalanced(root.right)if leftheight>=rightheight:return leftheight+1else:return rightheight+1
input_3=TreeNode(3)
input_4=TreeNode(4)
input_5 = TreeNode(5)
input_5.left=input_3
input_5.right=input_4
input_18 = TreeNode(18)
input_all = TreeNode(2)
input_all.left = input_5
input_all.right = input_18
slu_ = Solution()
print (input_all)
t = slu_.isBalanced(input_all)
print (t)

63.求两个字符串的最长公共子串

def initindexs(char, string):index = []length = len(string)for i in range(length):if char == string[i]:index.append(i + 1)  # 保存相同字符坐标+1的位置return indexdef Substring(str1, str2):str1_len = len(str1)str2_len = len(str2)length = 0longest = 0startposition = 0start = 0for i in range(str1_len):start = iindex = initindexs(str1[i], str2)index_len = len(index)for j in range(index_len):end = i + 1while end < str1_len and index[j] < str2_len and str1[end] == str2[index[j]]:  # 保证下标不会超出列表范围end += 1index[j] += 1length = end - startif length > longest:longest = lengthstartposition = startreturn startposition, longeststr1 = "pmcdcdfe"
str2 = 'aoccddcdfe'
Substring(str1, str2)
(start, longest) = Substring(str1, str2)
print(start, longest)
for i in range(longest):print(str1[start + i], end=' ')

64.如何快速计算两个list的交集、并集

#简单的方法:
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
b = [2, 5, 8, 11, 0]
# 交集(intersection)
intersection = [v for v in a if v in b]
# 并集( union)
union = b.extend([v for v in a])#高效的方法:
# 交集(intersection)
intersection = list(set(a).intersection(set(b)))
# 并集(union)
union = list(set(a).union(set(b)))

65.翻转一个字符串s = “abcdef”

string = 'abcdef'
#第一种方法
def string_reverse1(string):return string[::-1]
#第二种方法
def string_reverse2(string):t = list(string)l = len(t)for i,j in zip(range(l-1,0,-1),range(1/2)):t[i],t[j] = t[j],t[i]return "".join(t)
#第三种方法
def string_reverse3(string):if len(string) <= 1:return stringreturn string_reverse3(string[1:] + string[0])
#第四种方法
from collections import deque
def string_reverse4(string):d = deque()d.extendleft(string)return ''.join(d)
#第五种方法
def string_reverse5(string):# return ''.join(string[len(string) - i] for i in range(1,len(string) + 1))return  ''.join(string[i] for i in range(len(string) -1 ,-1,-1))print(string_reverse1(string))   #fedcba
print(string_reverse1(string))   #fedcba
print(string_reverse1(string))   #fedcba
print(string_reverse1(string))   #fedcba
print(string_reverse1(string))   #fedcba

66.判断一个字符串是否为回文字符串(将字符串反转之后,得到的字符串同原字符串,称为回文字符串

s = input("请输入文字: ")
# 反转字符串s
r = s[::-1]
if s == r:print(s, "是回文")
else:print(s, "不是回文")

python常见脚本相关推荐

  1. python内置模块重要程度排名_论Python常见的内置模块

    Python常见的内置模块 系统的内置模块 sys hashlib hmac base64 time datetime sys模块 sys.argv()# 在Python脚本传参使用 sys.exit ...

  2. python的库在哪_你知道python常见的库有哪些吗?五大python库

    大家都知道,现在python是一门非常不错的编程,各行各业都开始使用python进行编程,而且python每个功能模块,都有对应的python库,那么你知道python常见的库有哪些吗?今天为大家介绍 ...

  3. python自动化部署程序,聊聊Python自动化脚本部署服务器全流程(详细)

    原标题:聊聊Python自动化脚本部署服务器全流程(详细) 来源:AirPython 作者:星安果 1. 前言 大家好,我是安果! 日常编写的 Python 自动化程序,如果在本地运行稳定后,就可以考 ...

  4. python常见模块命令(os/sys/platform)

    python常见模块命令(os/sys/platform) 一.Os Python的标准库中的os模块主要涉及普遍的操作系统功能.可以在Linux和Windows下运行,与平台无关. os.sep 可 ...

  5. python写的脚本怎么用,如何用python写脚本

    如何用python写脚本 以Python2.7操作为例:1.首先需要打开电脑桌面,按开始的快捷键,点击Python2.7如图所示的选项进入. 相关推荐:<Python入门教程>2.打开之后 ...

  6. 利用pyinstaller将python项目脚本打包成可执行文件

    利用pyinstaller打包python项目 由于本文讲述还算比较详细,如果对pyinstaller有一定的了解,只需快速上手,可以直接跳到第四章结合实例进行操作. 1简介及安装pyinstalle ...

  7. 华为云云服务器 - 设置 python 定时脚本 || 设置后台运行程序

    云服务器 - 设置 python 定时脚本 1.连接云服务器 2.上传文件 可视化操作: 命令行操作: 3.设置定时运行 *设置程序后台运行 1.先查看下python版本: 2.设置程序后台运行: 3 ...

  8. 掌财社:Python常见的安全问题有哪些?如何避免?

    随着计算机应用的普及,计算机安全的问题也随之暴露出来.实际上很多计算机安全的问题都是软件的问题,而软件的安全问题又有很大一部分是因为开发者开发不规范导致的(虽然也有攻击者钻空子的问题,但作为开发者让攻 ...

  9. Python 常见的 170 道面试题全解析:2022 版

    Python 常见的 170 道面试题全解析:2019 版 语言特性 1.谈谈对 Python 和其他语言的区别 答:Python 是一门语法简洁优美,功能强大无比,应用领域非常广泛,具有强大完备的第 ...

最新文章

  1. Opencv-python 图像处理基础知识
  2. 利用Git Bash 远程访问服务器
  3. 我校四名学生在全国中学生物理竞赛中勇夺一金三银并全部直保清华
  4. abap 如何去掉字符串前导0
  5. 关于eclipse不编译项目的问题解决
  6. 华硕vm510l拆电池图解_图解说设备:凯斯CX80C你会买吗?
  7. Qt入门(11)——Qt插件
  8. Oracle sqlserver mysql的自增变量设置
  9. 在vSphere 6.x vSAN数据存储上使用Oracle RAC(2121181)
  10. 判断线程池中的线程是否全部执行完毕
  11. java代码获取数据源_tomcat中获取不同的数据源java代码
  12. 超强阵容实操教学, 0 基础 Flink 训练营免费抢报啦!
  13. 软电话HTML界面,软电话条对接
  14. python+selenium自动化软件测试(第1章)
  15. 小强期中考试(考察1-9章)
  16. 网络编程-libevnet不带缓冲的事件框架
  17. 真实入手评测:荣耀手表gspro和华为gt2的区别-荣耀手表gspro和magic2的区别-看看内行人怎么说
  18. 【已更新】北航计算机学院考研知识点总结(专业课961)
  19. Java-断点续传(分片上传)
  20. Token一般存放在哪里

热门文章

  1. 几种Java序列化方式的实现
  2. 中山市公共汽车公司公交线路
  3. HBase(6):HBase优化
  4. Java 13 –深入了解JDK的新功能
  5. flex弹性布局教程-03-项目属性flex-basis
  6. 山东大学软件学院考试回忆——大一上
  7. 数据结构大作业--迷宫问题
  8. 一劳永逸去除Word文档修订和批注帮助(转)
  9. 美团点评高级1234面:算法+HashMap+Zookeeper+线程+Redis+kafka
  10. 有关一个公用的BPL的问题