声明:所有代码均在pycharm下运行
把所有目录上有’f’的目录删除,有’abcd字符串的文件删除’
import os
path = "D:\python"
files = os.walk(path)
for i,j in enumerate(files):
if j.find("abcd") >= 0:
file_path = os.path.join(path,j)
print(file_path)
if os.path.isfile(file_path):
os.remove(file_path)
if j.find("f") >= 0:
file_path = os.path.join(path,j)
print(file_path)
if os.path.isdir(file_path):
os.remove(file_path) # os.remove()函数无法删除有子文件的文件夹
# os.rmdir(file_path) # os.rmdir()删除path指定的空目录
用递归列出所有目录和文件绝对路径
import os
allFiles = []
def getFiles(path):
fileList = os.listdir(path) # 返回path指定的文件夹包含的文件或文件夹的名字的列表
for i in fileList:
filepath = os.path.join(path,i) #完整路径
if os.path.isdir(filepath):
getFiles(filepath) # 开始递归
allFiles.append(filepath) 把文件添加到列表
return allFiles
a = getFiles("D:\python")
print(a)
采用os模块自带的os.walk()方法输出目录和文件绝对路径
第一种方法:
import os
path = "D:\python"
for i in os.walk(path):
print(i)
第二种方法:返回一个三个元素的元组
· dirPaths 要列出指定目录的路径
· dirNames 目录下的所有文件夹
· fileNames 目录下的所有文件
Files = []
def getAllFiles(path):
allFiles = []
for dirPaths,dirNames,fileNames in os.walk(path):
for dir in dirNames:
allFiles.append(os.path.join(dirPath,dir))
for name in fileNames:
allFiles.append(os.path.join(dirPath,name))
return allFiles
path = "D:\python"
Files=getAllFiles(path)
for file in Files:
print(file)
根据输入参数(行数)不同,输出金字塔(三角形)图形
a = int(input("请输入行数:"))
for i in range(a): # 循环a次得到i的值
print(' ' * (a - i - 1) + '*' * (2 * i + 1)) # 输出在第几行*号前面有几个空格加几个*号
运行结果如下:
编写函数,接收一个包含若干整数的列表参数list,返回一个元组,其中第一个元素为列表list中的最小值,其余元素为最小值在列表list中的下标。
def function(listr):
num=min(listr) #得到列表中的最小值
lists=[i for i ,x in enumerate(listr) if x == num] #利用枚举的方法进行比较,并获得下标
lists.insert(0,num) #插入的列表中
tup = tuple(lists) # 列表强转元组
print(tup)
lists = [1, 2, 3, 4, 5, 1, 6, 7]
functions(lists)
轮盘抽奖是比较常见的一种游戏,在轮盘上有一个指针和一些不同颜色、不同面积的扇形,用力转动轮盘,轮盘慢慢停下后依靠指针所处的位置来判定是否中奖以及奖项等级。
转动一万次,请统计每种奖的概率?
例:奖项分布 = {‘一等奖’:(0, 0.08), ‘二等奖’:(0.08, 0.3),‘三等奖’:(0.3, 1.0)}
import random
#声明奖项分布
reward = {'一等奖':(0,0.08),'二等奖':(0.08,0.3),'三等奖':(0.3,1.0)}
#转动方法
def roll(reward):
#随机值代表转动结果
result = random.random()
for k,v in roll.items():
if v[0] <= result < v[1]
return k
#声明一个字典,用来存储结果
rewardDetail = {}
#转动一万次
for i in range(10000):
nowSituation = roll(reward) #当前战绩
rewardDetail[nowSituadion] = rewardDetail.get(nowSituation,0)+1 #存入字典
#遍历输出转动一万次之后的概率分布
for item in rewardDetail.items():
print(item)
结果如下:
递归实现一个数的阶乘
def recursion(number):
if number == 0 or number == 1:
return 1
else:
return number * recursion(number - 1)
s = recursion(5)
print(s)
利用自带*和**的参数计算个数字的累计和
def func(a, b, *c, **d):
y = 0
x = a + b
for i in c:
y += i
m = 0
for value in d.values():
m += value
return x, y, m
newList = []
newList = func(2, 3, 2, 3, d=5, z=6)
print(newList)
*注意:*func中的第三个参数相当于传入的是一个列表,即第一个参数2,第二个参数3,之后的2,3是按照列表的形式进行传入的;第四个参数传入的是一个字典(key,value)形式进行存储。
抓小狐狸游戏:假设一共有一排 5 个洞口,小狐狸最开始的时候在其中
一个洞口,然后玩家随机打开一个洞口,如果里面有狐狸就抓到了。如果洞口里没有狐狸就第二天再来抓,但是第二天狐狸会在玩家来抓之前跳到隔壁洞口里。
i = random.randint(1, 5)
while 1:
s = int(input("请选择洞口(1-5):"))
if s > 5 or s < 1:
print("您的输入有误")
elif s == '':
print("您的输入有误")
if s == i:
print("真幸运,抓到了")
break
else:
if i == 1:
i = i + 1
print("抓错了")
elif i == 5:
i = i - 1
print("抓错了")
else:
i = i + random.choice([-1, 1])
print("抓错了")
猜数字游戏:程序运行时生成一个100以内的随机数,提示用户输入,有五次机会。并根据用户输入的值进行必要的提示(猜大了、猜小了,猜对了),如果猜对则提前结束游戏,如果没有继续运行直到次数用完,并给出随机数。
a = random.randint(0, 100)
for i in range(1, 6):
b = int(input("请输入您的猜测(0-100之间):"))
if b > a:
print("猜大了")
elif b < a:
print("猜小了")
elif b == a:
print("恭喜您,猜对了!")
break
else:
print("输入有误")
i += 1
if i == 6:
print("次数用完啦!")
print(a)
思考:如何通过while循环来控制程序呢?
程序实现打印三位数的水仙花数
水仙花数定义:水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3+ 5^3+3 ^3 = 153)。
程序实现如下:
flower = []
for i in range(1, 10):
for j in range(10):
for k in range(10):
if i * i * i + j * j * j + k * k * k == 100 * i + 10 * j + k:
flower.append(100 * i + 10 * j + k)
for i in flower:
if i == flower[-1]:
print(i)
else:
print(i, end=" ")
斐波那契数列前十项
核心公式:f(0) = 1,f(1) = 1,f(n) = f(n-1) + f(n-2)
斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13,特别指出:第0项是0,第1项是第一个1。从第三项开始,每一项都等于前两项之和。
a = 0
b = 1
print(a)
print(b)
i = 1
while i < 9:
c = a + b
print(c)
a = b
b = c
i += 1
创建一个包含1-100之间所有素数的列表,排序后打印显示该列表;
随后只保留该列表前5个数字,删除其余内容并打印输出相应结果;
再将每个元素值加上100,显示列表内容;把列表转化为字符串。
思路分析:
1.创建一个空列表,用来存储1-100之间的素数
2.生成1-100之间的所有素数
3.对列表进行处理,只保留前五位
4.转为字符串
代码实现如下:
# 声明一个空列表
eList = []
# 100以内的素数
i = 2
for i in range(2, 100):
j = 2
for j in range(2, i):
if (i % j == 0):
break
else:
eList.append(i)
print(eList)
# 切片保留前五位元素
new_eList = eList[0:5:1]
print(new_eList)
# 每个元素加上100
new_eLists = []
for i in new_eList:
i = i + 100
new_eLists.append(i)
print(new_eLists)
# 转为字符串
strs = [str(i) for i in new_eLists]
s = ''.join(strs)
print(s)
9*9乘法表
for i in range(1,10):
for j in range(1,i):
print("{}*{}={}\t".format(i,j,i*J),end="")
print()
运行效果如下图所示: