1. 打印酒店房间号
注意点 f“ ....”的使用
for i in range(1,6): # L2
print(f"----------{i}层---------")
for j in range(1,9): # 5
print(f"L{i}-{i}0{j}室")
2. 打印九九乘法表
注意点 f“ ....”的使用 、end=“ ”表示以空格分隔
for i in range(1,10):
for j in range(1,i+1):
print(f"{i}x{j}={i*j} ",end=" ")
print()
3. 打印四角形
# 打印 四角形
n = 10
for i in range(n):
if i < 5:
s = i * "#"
else:
s = (n-i) * "#"
print(s.center(20," "))
4. 京牌摇号小程序
模拟一个抽车牌号的程序
import random
import string
car_num_sample = string.digits+string.ascii_uppercase
print(random.sample(car_num_sample,5))
count = 3
while count > 0 :
count -= 1
num_list = []
for i in range(20):
second_letter = random.choice(string.ascii_uppercase)
car_num = f"京{second_letter}-{ ''.join(random.sample(car_num_sample,5)) }"
num_list.append(car_num)
print(i, car_num)
choice = input("choice:").strip()
if choice in num_list:
exit(f"恭喜你选购成功,您的新车牌是{choice}")
else:
print(f"未选中, 还有{count}次机会")
5. string类型操作
print(a.center(50,"-")) # output : --------------------Alex 金角大王---------------------
print(a.count("l",0,4))
print(a.endswith("王八")) # False 判断结尾
print(a.startswith("Alex")) # False 判断开头
print(a.find("i")) # 字符查找,返回-1代表没找到,如果找到了,就返回所查字符的索引
print(a.isdigit())
print("22".isdigit()) # 判断是否是整数
l = ["alex","black girl","peiqi"]
print("-".join(l)) # 拼接字符串, alex-black girl-peiqi
print(a.replace("l","M" ,1)) # 字符串替换, output: AMex li 金角大王
print(a.split("l",1)) # 字符串分割 output: ['A', 'ex li 金角大王']
6. 快递分拣系统
add_list= []
for line in f:
name,region,*addr= line.split(",")
region = "".join(region.split())
if len(name) >1:
name = name.replace(name[1],"*")
else:
name += "*"
add_list.append(
[name,region+"".join(addr).strip()]
)
mail_addrs = {}
for i in add_list:
region = i[1][0:3]
if region not in mail_addrs:
mail_addrs[region] = [ i ]
else:
mail_addrs[region].append(i)
print(mail_addrs)
for k,v in mail_addrs.items():
print(k,v)
7. 替换文件内string为另一个string
利用sys.argv收到用户打的要替换的string和替换后的string
import sys
print(sys.argv)
old_str = sys.argv[1]
new_str = sys.argv[2]
filename = sys.argv[3]
# 1 load into ram
f = open(filename,"r+")
data = f.read()
# 2. count and replace
old_str_count = data.count(old_str)
new_data = data.replace(old_str,new_str)
# 3. clear old filename
f.seek(0)
f.truncate()
# 4. save new data into file
f.write(new_data)
f.close()
print(f'''成功替换字符'{old_str}' to '{new_str}', 共{old_str_count}处...''')
8. 用户账户登录
如果密码错误,锁定账户
# 1. 确定 在文件 里存储的账号信息的结构
# 2. 把账号数据读到内存,为了方便调用 ,可以改list
accounts = {
# "alex":["alex","abc123!","1"],
}
f = open("account.db", "r")
for line in f:
line = line.strip().split(",")
accounts[line[0]] = line
print(accounts)
# 3. 搞个loop , 要求用户输入账号信息, 去判断 就可以了
while True:
user = input("Username:").strip()
if user not in accounts: # 用户未注册
print("该用户未注册...")
continue
elif accounts[user][2] == "1": # 代表此账户已锁定
print("此账户已锁定,请联系管理员..")
continue
count = 0
while count < 3: # 控制密码
passwd = input("Password:").strip()
# 去账号dict里去判断password对不对
if passwd == accounts[user][1]:
print(f"Welcome {user}...登录成功...")
exit("bye...")
else:
print("Wrong password.....")
count += 1
if count == 3:
print(f"输错了{count}密码,需要锁定账号{user}...")
# 1. 先改在内存中dict账号信息的 用户状态
# 2. 把dict里的数据转成原account.db数据格式,并且 存回文件
accounts[user][2] = "1"
f2 = open("account.db", "w")
for user,val in accounts.items():
line = ",".join(val) + "\n" # 把列表再转成字符
f2.write(line)
f2.close()
exit("bye.")