Python学习笔记1

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.")
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值