# 算法
# 二分查找 [1,2,3,4,5,6,7,8,9,10,27,36,46,58,69] - 有序列表
# in index 从列表中找到一个值的位置
# 实现上面的功能 - 用代码
def b_search(li, target, right=None, left=0):
if right == None:
right = len(li)
mid = (right + left) // 2
if li[mid] == target:
return mid
elif right <= left:
return 0 # 递归出口
elif li[mid] < target:
return b_search(li, target, right, mid + 1)
else:
return b_search(li, target, mid - 1, left)
l = [1,2,3,4,5,6,7,8,9,10,27,36,46,58,69]
print(b_search(l, 69))
# sys.argv练习
# 写一个python脚本,在cmd里执行
# python D:\Python\Python_Project\day22\作业.py 用户名 密码 cp 文件路径 目的地址
# python D:\Python\Python_Project\day22\作业.py alex sb cp D:\python_22\day22\1.内容回顾.py D:\python_22\day21
# python D:\Python\Python_Project\day22\作业.py alex sb rm D:\python_22\day22
# python D:\Python\Python_Project\day22\作业.py alex sb rename D:\python_22\day22 D:\python_22\day23
import os
import sys
import shutil
temp_list = sys.argv[:]
if temp_list[0] == "0":
exit()
elif len(temp_list) < 5 or len(temp_list) > 6:
print(‘ILLEGAL INPUT.‘)
exit()
file, user, password, mode, path_1 = temp_list[:5]
if len(temp_list) == 6:
path_2 = temp_list[5]
s = ‘ ‘.join(temp_list)
if mode == ‘cp‘:
# shutil.copy2(path_1, path_2)
print(s)
if mode == ‘rename‘:
# os.rename(path_1, path_2)
print(s)
else:
print(‘ILLEGAL INPUT.‘)
exit()
elif len(temp_list) == 5:
s = ‘ ‘.join(temp_list)
if mode == ‘rm‘:
# shutil.rmtree(path_1)
print(s)
else:
print(‘ILLEGAL INPUT.‘)
exit()
# 使用walk来计算文件夹的总大小
import os
obj = os.walk(r‘D:\Python\Python_Project\day22‘)
storage_space = 0
for i in obj:
for file in i[2]:
temp_path = os.path.join(i[0], file)
storage_space += os.path.getsize(temp_path)
# print(temp_path + ‘>>>>‘ + str(os.path.getsize(temp_path)))
print(storage_space)
# 定义一个圆形类,半径是这个圆形的属性,实例化一个半径为5的圆形,一个半径为10的圆形
# 完成方法
# 计算圆形面积
# 计算圆形周长
from math import pi as PI
class Circle:
def __init__(self, radius):
self.radius = radius
def get_area(self):
return PI * (self.radius**2)
def get_perimeter(self):
return 2 * PI * self.radius
circle_1 = Circle(5)
circle_2 = Circle(10)
print(circle_1.get_area()) # 78.53981633974483
print(circle_2.get_area()) # 314.1592653589793
print(circle_1.get_perimeter()) # 31.41592653589793
print(circle_2.get_perimeter()) # 62.83185307179586
# 定义一个用户类,用户名和密码是这个类的属性,实例化两个用户,分别有不同的用户名和密码
# 登陆成功之后才创建用户对象
# 设计一个方法 修改密码
class User:
def __init__(self, username, password):
self.username = username
self.password = password
def change_password(self, old_password, new_password):
if self.password != old_password:
return False
else:
self.password = new_password
return True
alex = User(‘alex‘, 123)
taibai = User(‘taibai‘,456)
alex.change_password(123,12345678)
print(alex.__dict__) # {‘username‘: ‘alex‘, ‘password‘: 12345678}
# 继续完成人狗大战
# 你是人
# 狗是一个npc
# 你一个回合 狗一个回合
# 狗掉的血是一个波动值
# 闪避概率
import random
class New_player:
def __init__(self, name):
self.name = name
self.hp = 500
self.ad_max = 50
self.ad_min = 30
self.dodge = 0.2
def normal_attack(self, obj):
if random.random() <= self.dodge:
print(f"{obj.name} dodged {self.name}‘s attack.")
else:
lose_hp = random.randint(self.ad_min, self.ad_max)
obj.hp -= lose_hp
print(f"{self.name} attack {obj.name}, {obj.name} lose {lose_hp}HP.")
class New_dog:
def __init__(self, name):
self.name = name
self.hp = 500
self.ad_max = 40
self.ad_min = 20
self.dodge = 0.2
def normal_attack(self, obj):
if random.random() <= self.dodge:
print(f"{obj.name} dodged {self.name}‘s attack.")
else:
lose_hp = random.randint(self.ad_min, self.ad_max)
obj.hp -= lose_hp
print(f"{self.name} attack {obj.name}, {obj.name} lose {lose_hp}HP.")
alex = New_player(‘alex‘)
xiaobai = New_dog(‘xiaobai‘)
def battle(obj_1, obj_2):
while True:
if obj_2.hp <= 0:
print(f‘{obj_2.name} died.‘)
break
elif obj_1.hp <= 0:
print(f‘{obj_1.name} died.‘)
break
obj_1.normal_attack(obj_2)
obj_2.normal_attack(obj_1)
battle(alex, xiaobai)
# alex attack xiaobai, xiaobai lose 49HP.
# alex dodged xiaobai‘s attack.
# alex attack xiaobai, xiaobai lose 41HP.
# alex dodged xiaobai‘s attack.
# xiaobai dodged alex‘s attack.
# xiaobai attack alex, alex lose 32HP.
# alex attack xiaobai, xiaobai lose 43HP.
# xiaobai attack alex, alex lose 26HP.
# alex attack xiaobai, xiaobai lose 48HP.
# alex dodged xiaobai‘s attack.
# alex attack xiaobai, xiaobai lose 36HP.
# xiaobai attack alex, alex lose 27HP.
# xiaobai dodged alex‘s attack.
# xiaobai attack alex, alex lose 37HP.
# alex attack xiaobai, xiaobai lose 48HP.
# xiaobai attack alex, alex lose 29HP.
# alex attack xiaobai, xiaobai lose 30HP.
# alex dodged xiaobai‘s attack.
# xiaobai dodged alex‘s attack.
# xiaobai attack alex, alex lose 23HP.
# alex attack xiaobai, xiaobai lose 42HP.
# alex dodged xiaobai‘s attack.
# alex attack xiaobai, xiaobai lose 35HP.
# xiaobai attack alex, alex lose 32HP.
# xiaobai dodged alex‘s attack.
# xiaobai attack alex, alex lose 27HP.
# alex attack xiaobai, xiaobai lose 45HP.
# alex dodged xiaobai‘s attack.
# xiaobai dodged alex‘s attack.
# xiaobai attack alex, alex lose 38HP.
# alex attack xiaobai, xiaobai lose 35HP.
# xiaobai attack alex, alex lose 28HP.
# alex attack xiaobai, xiaobai lose 35HP.
# xiaobai attack alex, alex lose 29HP.
# alex attack xiaobai, xiaobai lose 38HP.
# alex dodged xiaobai‘s attack.
# xiaobai died.
原文:https://www.cnblogs.com/raygor/p/13342119.html