Python全栈开发2——运算符与基本数据结构

运算符

一、结果为值

1)算数运算

a = 10
b = 20
print("a + b = %d" % (a + b))
print("a - b = %d" % (a - b))
print("a * b = %d" % (a * b))
print("a / b = %d" % (a / b))
print("a %% b = %d" % (a % b))
print("a ** b = %d" % (a ** b))
print("a // b = %d" % (a // b)) 

需要注意的是,在print百分号时,需要输入“%%”。

2)赋值运算

赋值运算与算数运算一一对应。

 

二、结果为布尔值

1)比较运算

 

2)逻辑运算

 

逻辑运算的顺序为:1、先执行()内的操作;2、之后从前往后进行逻辑运算。

3)成员运算

 

判断某一元素是否在元素集合中,一般与if、for、while用

数据类型

一、数字(int)

在Python3中只有整型(int),而在Python2中有整型(int)、长整型(long)等。

1、int():将字符串转换为数字

print(type(int("123")))

2、bit_length:当前数字以至少几位二进制表示

data = 9
print(data.bit_length())

二、字符串 str " "

1、capitalize():将首字母转换为大写,其余转换为小写,呈现为title的格式

2、casefold()、lower():将所有字母变小写,casefold()功能更强,可以将许多未知的元素变小写

3、center()、ljust()、rjust、zfill:设置字符串参数

4、count():统计子序列出现的次数

5、startwith()、endwith():判断是否以...结尾,返回True或False

s = "hello World  "
print(s.capitalize())         #>>>Hello world
print(s.casefold())           #>>>hello world 
print(s.lower())              #>>>hello world 
print(s.center(20))           #>>>   hello World     
print(s.zfill(8))             #>>>hello World  
print(s.count("o"))           #>>>2
print(s.startswith("h"))      #>>>True
print(s.endswith("h"))        #>>>False

6、find():从前往后找,找到第一个后返回索引值,未找到返回-1

7、format():格式化,将字符串中的占位符替换为指定目标

8、format_map():格式化,字典

9、index():同find(),未找到时报错

10、isalnum():判断字符串是否只包含数字和字母

s = "hello World123"
print(s.find("o"))                                                #>>>4
print("i am {}".format("Grace"))                                #>>>i am Grace
print("i am {name}".format_map({"name":"Grace"}))              #>>>i am Grace
print(s.index("o"))                                               #>>>4
print(s.isalnum())                                                #>>>False

11、expandtabs():断句

12、isalpha():是否只包含字母和汉字

13、isdecimal()、isdigit()、isnumeric():是否只包含数字

14、isprintable():是否存在不可显示的字符(e.g.\n、\t)

15、isspace():判断是否全为空格

s = "email\taddress\tworkpalce"
print(s.expandtabs(20))                                                #>>>email               address             workpalce
print(s.isalpha())                                                     #>>>False
print(s.isdecimal())                                                   #>>>False
print(s.isprintable())                                                 #>>>False
print(s.isspace())                                                     #>>>False

expandtabs()与\t连用时可用于制表

16、istitle():判断是否符合title格式

17、join():将字符串中的每一个元素按照指定分隔符进行拼接

18、islower()、isupper():判断是都全部为小写/大写

19:strip()、lstrip()、rstrip():去除空格

20、maketrans()、translate():对应关系转换

s = "Helloworld  "
print(s.istitle())                                               #>>>True
print(" ".join(s))                                               #>>>H e l l o w o r l d
print(s.islower())                                               #>>>False
print(s.strip())                                                 #>>>Helloworld
v = str.maketrans("o","1")
print(s.translate(v))                                            #>>>Hell1w1rld  

21、partition():按照分隔元素分割成3份

22、split()、rsplit():切割

23、splitlines():根据布尔值判断是否保留换行符

24:swapcase():大小写转换

25、isidentifier():判断字符串是否符合数字、字母、下划线的标准

26、replcce():替换

s = "Helloworld  \n"
print(s.partition("o"))                                               #>>>('Hell', 'o', 'world  \n')
print(s.split("l"))                                                   #>>>['He', '', 'owor', 'd  \n']
print(s.splitlines())                                                 #>>>['Helloworld  ']
print(s.swapcase())                                                   #>>>hELLOWORLD
print(s.isidentifier())                                               #>>>False
print(s.replace("l","L"))                                            #>>>HeLLoworLd  

三、列表 list [ ]

列表可以被修改,列表的元素可以为任意类型。

1、append():在原先列表的最后追加

2、clear():清除

3、copy():浅拷贝

4、count():计数

5、extend():扩展,通过内部循环把元素加到列表中

s = [1,4,6,3,2]
s.append("abc")
print(s)                                         #>>>[1, 4, 6, 3, 2, 'abc']
s.clear()
print(s)                                         #>>>[]
s = [1,4,6,3,2]
print(s.copy())                                  #>>>[1, 4, 6, 3, 2]
s.extend("abc")
print(s)                                         #>>>[1, 4, 6, 3, 2, 'a', 'b', 'c']

append和extend的区别在于:append将()内作为一个整体添加,而extend将()中每个元素用for循环添加

6、index():查找

7、insert():指定索引位插入

8、pop():默认删除最后一个元素,并返回删除值,可通过指定索引删除

9、remove():删除指定值,左边优先

10、reverse():将当前列表反转

11:、sort():从小到大排序

 

s = [1,4,6,3,2,6]
s.insert(0,"abc")
print(s)                                         #>>>['abc', 1, 4, 6, 3, 2, 6]
print(s.pop(0))                                  #>>>abc
print(s)                                         #>>>[1, 4, 6, 3, 2, 6]
s.remove(6)
print(s)                                         #>>>[1, 4, 3, 2, 6]
s.sort(reverse=True)
print(s)                                         #>>>[6, 4, 3, 2, 1]

三、元组 tuple ( )

元组为不可修改的列表,具体方法与列表相似。

一般写元组时,在最后多加一个",",便于区分。

四、字典 dict { }

{key1:value1,key2:value2...}

字典是无序的,value可以为任意类型的元素。

取值:根据key值找value,相当于索引

删除:del

for循环:keys()、values()、items()

1、clear():

2、copy():

3、fromkeys():根据序列创造字典,并指定统一值

4、get():根据key取value值

5、keys()、values()、items():取出所有的key/value/键值对

6、pop():根据key删除,并返回value值

7、setdefault():设置值,非重点,忽略

8、update():更新。若已存在,则覆盖,若不存在,则更新 

dic = dict.fromkeys(["k1","k2","k3"],123)
print(dic)                                         #>>>{'k1': 123, 'k2': 123, 'k3': 123}
print(dic.items())                                 #>>>dict_items([('k1', 123), ('k2', 123), ('k3', 123)])
print(dic.get("k1"))                               #>>>123
print(dic.pop("k1"))                               #>>>123
print(dic)                                         #>>>{'k2': 123, 'k3': 123}
dic.update({"k4":4})
print(dic)                                         #>>>{'k2': 123, 'k3': 123, 'k4': 4}

补充

enumerate:为一个可迭代的对象添加序号。默认编号从0开始,可以设置从1开始。

 

li = ["手机", "电脑", '鼠标垫', '游艇']
for k, i in enumerate(li,1):
    print(k,i)
1 手机
2 电脑
3 鼠标垫
4 游艇

课后习题

一、元素分类

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

li = [11,22,33,44,55,66,77,88,99,90,100]
li1 = []
li2 = []
dic = {}
for i in li:
    if i <= 66:
       li1.append(i)
    else:
       li2.append(i)
dic.update({'k1':li1,'k2':li2})
print(dic)

二、查找

  查找元素,移动空格,并查找以 a或A开头 并且以 c 结尾的所有元素。

      li = ["alec", " aric", "Alex", "Tony", "rain"]

      tu = ("alec", " aric", "Alex", "Tony", "rain") 

      dic = {'k1': "alex", 'k2': ' aric',  "k3": "Alex", "k4": "Tony"}

li = ["alec", " aric", "Alex", "Tony", "rain"]
tu = ("alec", " aric", "Alex", "Tony", "rain")
dic = {'k1': "alex", 'k2': ' aric',  "k3": "Alex", "k4": "Tony"}
li1=[]
tu1=[]
dic1=[]
for i in li:
    if i.strip().capitalize().startswith('A') and i.strip().endswith('c'):
        li1.append(i)
print(li1)
for i in tu:
    if i.strip().capitalize().startswith('A') and i.strip().endswith('c'):
        tu1.append(i)
print(tu1)
for i in dic:
    if dic[i].strip().capitalize().startswith('A') and dic[i].strip().endswith('c'):
        dic1.append(dic[i])
print(dic1)

三、输出商品列表,用户输入序号,显示用户选中的商品 

商品 li = ["手机", "电脑", '鼠标垫', '游艇']

 

li = ["手机", "电脑", '鼠标垫', '游艇']
for i,v in enumerate(li,1):
    print (i,v)
num = input("请输入商品序号:")
if num.isdigit():
    if int(num) - 1 < len(li):
        print("您选择的商品为%s" % li[int(num)-1])
    else:
        print("不存在该商品序号")
else:
    print("请输入数字!")

 

四、购物车

功能要求:

    • 要求用户输入总资产,例如:2000

    • 显示商品列表,让用户根据序号选择商品,加入购物车

    • 购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。

    • 附加:可充值、某商品移除购物车

 具体分析如下:

资产输入
显示商品列表
购买商品过程:
1、选择商品(加入购物车)
1)继续添加
2)返回上一级
2、购买
1)余额充足,购买成功
2)余额不足
a)充值
b)移除商品
c)返回上一级
3、取消,返回上一级
goods_name = ["手机", "电脑", '鼠标垫', '游艇']
goods = [
    {'手机': 1000},
    {'电脑': 1500},
    {'鼠标垫': 50},
    {'游艇': 5000}
]
shopping_cart = [
    {'手机': 0},
    {'电脑': 0},
    {'鼠标垫': 0},
    {'游艇': 0}
]
cost = 0
total = int(input("请输入您的总资产:"))
while True:
    opration = int(input("请选择您的操作:\n1、选择商品加入购物车\n2、购买\n3、离开\n>>>"))
    if opration == 1:         # 商品加入购物车
        for i, v in enumerate(goods_name, 1):
            print(i, v)
        No = input("请输入您选择的商品序号:")
        num = int(input("请输入您选择的商品数量:"))
        if No.isdigit():
            if int(No) - 1 < len(goods_name):
                shopping_cart[int(No) - 1][goods_name[int(No) - 1]] += num
                for i in range(len(goods_name)):
                    cost += goods[i][goods_name[i]] * shopping_cart[i][goods_name[i]]
                print("您已成功将%s添加进购物车" % goods_name[int(No) - 1])
            else:
                print("不存在该商品序号")
        else:
            print("请输入数字!")
            continue
    elif opration == 2:
        if cost <= total:
            total = total - cost
            cost = 0
            for i in range(len(goods_name)):
                shopping_cart[i][goods_name[i]] = 0
            print("购买成功,您的余额为%s" % total)
        else:
            print("余额不足,请充值或移除某商品!")
            choice = int(input("1、充值\n2、移除商品\n3、离开\n>>>"))
            if choice == 1:                                     # 充值
                while True:
                    recharge = input("您充值的金额为:")
                    if recharge.isdigit():
                        total += int(recharge)
                        print("您充值后的余额为%s" % total)
                        break
                    else:
                        print("请输入数字!")
            elif choice ==2:                                     # 移除商品
                while True:
                    No_remove = input("请输入您要删除的商品序号:")
                    num_remove = int(input("请输入要删除的商品数量:"))
                    if No.isdigit():
                        if num_remove <=  shopping_cart[int(No_remove)-1][goods_name[int(No_remove)-1]]:
                            shopping_cart[int(No_remove)-1][goods_name[int(No_remove)-1]] -= num_remove
                            print("您已成功将%s移除" % goods_name[int(No) - 1])
                            cost = 0
                            for i in range(len(goods_name)):
                                cost += goods[i][goods_name[i]] * shopping_cart[i][goods_name[i]]
                            break
                        else:
                            print("您的购物车中没有这么多的商品数量,请重新输入!")
                    else:
                        print("请输入数字!")
                        continue
            elif choice == 3:
                continue
            else:
                print("输入错误,请重新输入!")
    elif opration == 3:
        break
    else:
        print("输入错误,请重新输入!")

五、用户交互,显示省市县三级联动的选择

具体分析如下:

省(一级):
1)市(二级)
a)县(三级)
b)返回上一级
2)返回上一级
dic = {
    "浙江": {
        "杭州": ["建德", "桐庐", "淳安"],
        "绍兴": ["越城", "柯桥", "嵊州"],
    },
    "湖南": {
        "长沙":["a","b","c"],
        "株洲":["d","e","f"]
    },
    "湖北": {
        "武汉":["g","h","i"],
        "黄石":["j","k","l"]
    }
}
Flag = 1
Flag1 = 1
while Flag == 1:
    for i in dic.keys():
        print(i)
    province = input("您选择的省份为:")
    if province in dic.keys():            #获得省的信息
        print("您选择的省份为:%s" % province)
        choice1 = int(input("\n1、查看市级信息\n2、返回\n>>>"))
        while Flag1 == 1:
            if choice1 == 1:
                    for i in dic[province].keys():
                        print(i)
                    city = input("您选择的市为:")
                    if city in dic[province].keys():
                        print("您选择的市为:%s" % city)
                        choice2 = int(input("\n1、查看县级信息\n2、返回\n>>>"))
                        while True:
                            if choice2 == 1:
                                for i in dic[province][city]:
                                    print(i)
                                county = input("您选择的县为:")
                                if county in dic[province][city]:
                                    print("您最终的位置为:%s省%s市%s县" % (province,city,county))
                                    Flag = -1
                                    Flag1 = -1
                                    break
                                else:
                                    print("您的输入内容不符,请重新输入!")
                                    continue
                            elif choice2 == 2:
                                break
                            else:
                                print("您的输入内容不符,请重新输入!")
                                continue
            elif choice1 == 2:
                break
            else:
                print("您的输入内容不符,请重新输入!")
                continue
    else:
        print("你所输入的省份不存在,请重新输入!")
        continue
 

猜你喜欢

转载自www.cnblogs.com/qiuchen2018/p/9169185.html
今日推荐