python基础函数
冒泡排序
def sortport(lis):
for i in range(len(lis)-1):
for j in range(len(lis)-1-i):
if(lis[j]<lis[j+1]):
lis[j],lis[j+1]=lis[j+1],lis[j]
return lis
lis=[10,8,3,4,5,6,7,2,1,9]
sortport(lis)
for i in range(len(lis)):
print(lis[i],end=' ')
计算x 的 n 次方
def power(x,n):
s=1
while(n>0):
s*=x
n-=1
return s
print(power(2,3))
计算a * a + b * b + c * c + …
def mulc(number):
s=0
for i in range(len(number)):
s+=number[i]*number[i]
return s
lis=[1,2,3]
print(mulc(lis))
计算阶乘 n!
def fac():
n=int(input("请输入您要计算的数:"))
if(n<0):
print("对不起,负数没有阶乘。。。。。")
elif n==0:
print("0的阶乘为1。")
else:
s=1
for i in range(1,n+1):
s*=i
print("%d的阶乘为%d" % (n,s))
fac()
列出当前目录下的所有文件和目录名
1.
import os
for d in os.listdir('.'):
print(d)
2.
[d for d in os.listdir('.')]
把一个list中所有的字符串变成小写:
print([item.lower() for item in ['ABC','SHAREJS.COM']])
输出某个路径下的所有文件和文件夹的路径
1.
import os
def dir_print():
path=input("请输入您要查找的路径:")
if (path==""):
print("请输入正确地路径!")
else:
for i in os.listdir(path):
print(i)
dir_print()
2.
import os
def dir_print():
path=input("请输入您要查找的路径:")
if (path==""):
print("请输入正确地路径!")
else:
for i in os.listdir(path):
print(os.path.join(path,i)) #把路径组合起来
dir_print()
输出某个路径及其子目录下的所有文件路径
一开始总是出现此类报错:
原因1:用python3 的import os 访问路径时报错:
SyntaxError: (unicode error) ‘unicodeescape’ codec can’t decode bytes in position 2-3: truncated \UX
原因:文件中的\u被编译器认为是八进制
解决方法:访问路径前加一个r
import os
def show_dir(filepath):
for i in os.listdir(filepath):
path=(os.path.join(filepath,i))
print(path)
if os.path.isdir(path):
show_dir(path)
filepath=r"C:\Users\win10\Desktop\python"
show_dir(filepath)
原因2:后斜杠‘\’导致的,python中的‘\’代表转义字符。与路径造成了混 淆。
解决办法:把路径中的后斜杠‘\’改为前斜杠‘/’,或者改为双后斜杠‘\’就可以了。
import os
def show_dir(filepath):
for i in os.listdir(filepath):
path=(os.path.join(filepath,i))
print(path)
if os.path.isdir(path):
show_dir(path)
filepath="C:/Users/win10/Desktop/python"
show_dir(filepath)
输出某个路径及其子目录下所有以.html为后缀的文件
import os
def 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=r"C:\Users\win10\Desktop\python"
print_dir(filepath)
把原字典的键值对颠倒并生产新的字典
dict1={"A":"a","B":"b","C":"c"}
dict2={y:x for x,y in dict1.items()}
print(dict2)
替换列表中所有的3为3a
num=["ship","hhhh",3,34,356,66,3,888,387,3]
for i in range(num.count(3)):
e_index=num.index(3)
num[e_index]="3a"
print(num)
合并去重
list1=[1,2,3,4,5,6,7,8]
list2=[2,4,6,8,9,10,11,12]
list3=list1+list2
print(list3)
#set是集合形式,自动去重。
print(set(list3))
print(list(set(list3)))
list1=[1,1,2,2,3,4,5,5,5,5]
print(list1)
print(set(list1))
随机生成验证码的两种方式
import random
list1=[]
for i in range(65,91): #大写字母
list1.append(chr(i))
for j in range(97,123): #小写字母
list1.append(chr(j))
for k in range(48,58): #数字0-9
list1.append(chr(k))
ma=random.sample(list1,6) #从list中随机获取6个元素,作为一个片断返回
print(ma)
ma=''.join(ma)#join():连接字符串数组。将字符串、元组、
#列表中的元素以指定的字符(分隔符)
#连接生成一个新的字符串
print(ma)
import random,string
str1="0123456789"
str2=string.ascii_letters #string.ascii_letters包含所有的字母(大写或小写)
str3=str1+str2
ma=random.sample(str3,6)
ma=''.join(ma)
print(ma)
求平方根(主要想说明:python的求次方(**)的功能很强大,可以小数)
num=float(input("请输入一个你想开方的数字:"))
num_sqrt=num**0.5
print("%0.2f的平方根为%0.2f"%(num,num_sqrt))
判断字符串是否只由数字组成
def is_number(s):
try:
float(s)
return True
except ValueError:
pass
# try:
# import unicodedata
# unicodedata.numeric(s)
# return True
# except (TypeError,ValueError):
# pass
#
return False
print(is_number(12))
print(is_number("a2"))
print(is_number(a))
print("a2".isdigit())
str = "123456"; # Only digit in this string
print("123".isdigit());
str = "string example....wow!!!";
print(str.isdigit())
判断奇偶数
while True:
try:
num=int(input("请输入一个您想要判断的整数:"))
except ValueError:
print("输入的不是整数!")
continue
if num%2==0:
print('偶数')
else:
print('奇数')
break
判断是否为闰年
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 calendar
year=int(input("请输入年份:"))
check_year=calendar.isleap(year)
if check_year==True:
print('{}是闰年'.format(year))
else:
print('{0}不是闰年'.format(year))
输入一个数组
n=int(input('请输入您要输入的数组的数的个数:'))
num=[int(input('第%d个数:\n'%i)) for i in range(1,n+1)]
print(num)
十进制转化为二进制,八进制,十六进制
num=int(input('请输入一个数:'))
print('十进制数为:',num)
print('二进制数为:',bin(num))
print('八进制为:',oct(num))
print('十六进制为:',hex(num))