[转载] python基础入门二

参考链接: Python集合Set

写代码,有如下变量,请按照要求实现每个功能 (共6分,每小题各0.5分)  name = ” aleX”  1)移除 name 变量对应的值两边的空格,并输出处理结果  2) 判断 name 变量对应的值是否以 “al” 开头,并输出结果
  3) 判断 name 变量对应的值是否以 “X” 结尾,并输出结果
  4) 将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果  5) 将 name 变量对应的值根据 “l” 分割,并输出结果。  6) 将 name 变量对应的值变大写,并输出结果
  7) 将 name 变量对应的值变小写,并输出结果
  8) 请输出 name 变量对应的值的第 2 个字符?  9) 请输出 name 变量对应的值的前 3 个字符?  10) 请输出 name 变量对应的值的后 2 个字符?
  11) 请输出 name 变量对应的值中 “e” 所在索引位置?
  12) 获取子序列,去掉最后一个字符。如: oldboy 则获取 oldbo。 

name = " aleX"

 

 

print(name.strip())

 

print(name.startswith('al'))

 

print(name.endswith('X'))

 

print(name.replace('l','p'))

print(name.split('l'))

print(name.upper())

print(name.capitalize())

print(name[1])

print(name[:3])

print(name[3:])

print(name.index('e'))

print(name[:-1]) 

有列表data=[‘alex’,49,[1900,3,18]],分别取出列表中的名字,年龄,出生的年,月,日赋值给不同的变量 

data=['alex',49,[1900,3,18]]

name = data[0]

age = data[1]

birth = data[2]

print("名字是{0}年龄是{1}出生年月是{2}".format(name,age,birth)) 

用列表模拟队列(队列是先进先出,类似于自动扶梯) 

dui = [1,2,3,4,5,6]

dui.insert(len(dui),'ll')

print(dui)

dui.pop(0)

print(dui) 

用列表模拟堆栈(堆栈先进后出,类似于喝酒喝吐了) 

zhan = [1,2,3,4,5,6]

zhan.insert(len(zhan),'ll')

print(zhan)

zhan.pop()

print(zhan)

 

有如下列表,请按照年龄排序(涉及到匿名函数) 

l=[

    {'name':'alex','age':84},

    {'name':'oldboy','age':73},

    {'name':'egon','age':18},

]

 

l.sort(key=lambda item:item['age'])

print(l)

 

1 有如下值集合 [11,22,33,44,55,66,77,88,99,90…],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中  即: {‘k1’: 大于66的所有值, ‘k2’: 小于66的所有值} 

l = [11,22,33,44,55,66,77,88,99,90,50,40,100]

 

dic = {'k1':[],'k2':[]}

for num in l:

    if num > 66:

        dic['k1'].append(num)

    else:

        dic['k2'].append(num)

 

print(dic) 

2 统计s=’hello alex alex say hello sb sb’中每个单词的个数  结果如:{‘hello’: 2, ‘alex’: 2, ‘say’: 1, ‘sb’: 2}  s=’hello alex alex say hello sb sb’  ll = s.split() # 以空格区分  集合去重实现#  res = set(ll) # 去重  dic = dic.fromkeys(res) #初始化字典  for k in res:  dic[k] = ll.count(k) #填入数据  print(dic)  字典的setdefault方法实现#  dic = {}  for k in ll:  dic.setdefault(k,ll.count(k))  print(dic) 

1. 有列表l=[‘a’,’b’,1,’a’,’a’],列表元素均为可hash类型,去重,得到新列表,且新列表无需保持列表原来的顺序 

l=['a','b',1,'a','a']

new = set(l)

print(new) 

2.在上题的基础上,保存列表原来的顺序 

l=['a','b',1,'a','a']

new = set()

res = []

for d in l:

    if d not in new:

        new.add(d)

        res.append(d)

print(res) 

3.去除文件中重复的行,肯定要保持文件内容的顺序不变 

 

file = open('C:\Users\liuliangliang\Desktop\UserLoginServiceImplTest.java','r')

file = file.readlines()

s = set()

res = []

for line in file:

    if line in file:

        print(line)

        if line  not in s:

            s.add(line)

            res.append(line)

 

write = open('C:\Users\liuliangliang\Desktop\UserLoginServiceImplTest','w')

write.writelines(res) 

4.有如下列表,列表元素为不可hash类型,去重,得到新列表,且新列表一定要保持列表原来的顺序 

l=[

    {'name':'egon','age':18,'sex':'male'},

    {'name':'alex','age':73,'sex':'male'},

    {'name':'egon','age':20,'sex':'female'},

    {'name':'egon','age':18,'sex':'male'},

    {'name':'egon','age':18,'sex':'male'},

]

 

s = set()

res = []

 

for i in l:

    val = (i['name'],i['age'],i['sex'])

    if val not in s:

        print(val)

        s.add(val)

        res.append(i)

print(res)

print(s) 

文件a.txt内容:每一行内容分别为商品名字,价钱,个数,求出本次购物花费的总钱数 

apple 10 3 

tesla 100000 1 

mac 3000 2 

lenovo 30000 3 

chicken 10 3 

import os

 

### 获取当前文件路径

pwd = os.getcwd()

### 得到存储用户信息的文件路径

filedir = pwd + '\qingdan'

### 判断信息文件是否存在,存在即取出并转换成字典类型数据,否则提示文件不存在退出

if os.path.exists(filedir):

    wp = open(filedir, 'r',encoding='utf-8')

    sett = wp.readlines()

    print(sett)

    wp.close()

else:

    print("文件不存在!")

    exit()

last = 0

for i in sett:

    res = i.split()

    count = int(res[1])*int(res[2])

    last = last + count

print(last)

 

需求: 

用户名和密码存放于文件中,格式为:egon|egon123  启动程序后,先登录,登录成功则让用户输入工资,然后打印商品列表,失败则重新登录,超过三次则退出程序  允许用户根据商品编号购买商品  用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒  可随时退出,退出时,打印已购买商品和余额 

 

 

import json

import os

 

# 获取当前文件路径

pwd = os.getcwd()

# 得到存储用户信息的文件路径

filedir = pwd + '\dic'

listdir =pwd + '\list'

# 判断信息文件是否存在,存在即取出并转换成字典类型数据,否则提示文件不存在退出

if os.path.exists(filedir) and os.path.exists(listdir):

    wp = open(filedir, 'r')

    sett = wp.read()

    dic_user = json.loads(sett)

    wp.close()

    sp = open(listdir,'r')

    shop = sp.read()

    dic_product = json.loads(shop)

    sp.close()

else:

    print("文件不存在!")

    exit()

 

Tag = True

while Tag:

 

    name = input("请输入用户名:")

    # 判断用户名是否存在于文件中

    if name not in dic_user.keys():

        print("用户不存在!")

        continue

    passwd = input("请输入用户密码:")

    # 判断用户名密码是否正确

    if name in dic_user.keys() and passwd == dic_user.get(name).get('passwd'):

        list_info = [{"username": name}]

        cmd = input("输入你的工资")

        last = int(cmd)

        while Tag:

 

            print(dic_product)

            # cap,num = input("___输入您想要购买的物品编号和个数以空格分开:如'001 2'").split()

            cap = input("输入您所购买的物品编码:").strip()

 

            if cap  not in dic_product :

                print("请输入正确的物品编码")

                continue

 

            num = input("输入您所购买物品的数量:").strip()

 

            if cap  not in dic_product or not num.isdigit():

                print("请输入正确的物品编码或购买数!")

                continue

 

            account = int(dic_product[cap][1]) * int(num)

            if  account <= last:

                last = last - account

 

                list_info.append({"product":dic_product[cap],"num":num})

                quit = input("购买成功,退出输入q,继续输入y")

                if quit == 'q':

                    Tag = False

                    continue

                else:

                    continue

            else:

 

                addin = input("余额不足!充值输入y,退出输入q")

                if addin == 'y':

                    add = input("输入充值金额:").strip()

                    last = int(last) + int(add)

                    print("余额为%d" %last)

                if addin == 'q':

                    Tag =False

                    continue

 

        list_info.append({"last_money": last})

        for i in list_info:

            print(i)

        continue

    else:

        if name in dic_user.keys():

            print("用户名存在,密码错误")

 

            dic_user[name]['count'] += 1

            if dic_user[name]['count'] == 3:

                print("输入错误三次,退出程序")

                Tag = False

 

input(" ") 

要求: 

打印省、市、县三级菜单  可返回上一级  可随时退出程序 

import json

import os

 

# 获取当前文件路径

pwd = os.getcwd()

# 得到存储用户信息的文件路径

filedir = pwd + '\www'

# 判断信息文件是否存在,存在即取出并转换成字典类型数据,否则提示文件不存在退出

if os.path.exists(filedir):

    wp = open(filedir, 'r',encoding='utf-8')

    sett = wp.read()

    data = json.loads(sett)

    wp.close()

else:

    print("文件不存在!")

    exit()

# 定义一个字典类型,存放修改后的字典

diction = data

# 定义一个列表类型,存放修改后的字典

listion = [data]

 

while True:

# 当字典为空时,提示没有下级,显示上一层内容

    if diction == {}:

        print("没有下级了!")

        diction = listion[-1]

        listion.pop()

 

    for key in diction:

        print(key,end=' |')

    agent = input("\n输入上述名称查询,输入r返回上一层,输入q退出:")

# 如果输入信息存在当前字典中,将当前的字典追加进入列表,将当前字典转换成下级字典

    if agent in diction:

        listion.append(diction)

        diction = diction[agent]

# 如果输入信息是r, 判断列表为空时提示没有上一级,不为空返回上一级,当前字典转换成上一级字典

    elif agent == 'r':

        if len(listion) == 0:

            print("没有上一级了!")

        else:

            diction = listion[-1]

            listion.pop()

# 如果输入信息是q,退出程序

    elif agent == 'q':

        break

    else:

        print("输入有误,重新输入")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值