zoukankan      html  css  js  c++  java
  • Python全栈开发之2、运算符与基本数据结构

    运算符

    一、算数元算:

       

      读者可以跟着我按照下面的代码重新写一遍,其中需要注意的是,使用除的话,在python3中可以直接使用,结果是4没有任何问题,但是在python2中使用的话,则不行,比如 9/2 在pytnon2中 得出的结果则是4,如果要修正这一结果,读者需要在代码上加上一句 from __future__ import division 即可。

    a=20
    b=10
    print('a+b=%s' %(a+b))
    print('a-b=%s' %(a-b))
    print('a*b=%s' %(a*b))
    print('a/b=%s' %(a/b))
    print('a%b={}'.format(a%b))
    print('b**a=%s' %(b**a))
    print('9//2=%s' %(9//2))

    二、比较运算

      

      比较运算的结果返回的值是bool值,为True和False,一般用来控制程序执行的流程,比如说下面的代码:

    if a<=b:
        # 执行xxx
    else:
        # 执行×××

    三、赋值运算符

      

      赋值运算比较简单,基本跟算数元算一样,读者感觉有什么疑惑的话可以自行跟着上面的例子敲一遍代码。

    四、逻辑运算

      

      逻辑运算返回的值也是bool值,True或False,一般也是根据返回值来控制程序流程

     五、成员运算

      

      成语运算主要用来判断某一元素是否在某种元素集合中,可以看下下面的例子加深体会

    a="abcdefg"
    b="d"
    if b in a :
        print("d元素在a字符串中")
    else:
        print("d元素不在a字符串")
    
    c=[1,2,3,4]
    d=5
    if 5 in c :
        print("1在c列表")
    else:
        print("1不在c列表")

    数据类型

    一、数字(int)

      Python可以处理任意大小的正负整数,但是实际中跟我们计算机的内存有关,在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1。对于int类型,需要掌握的方法不多,看下面的几个例子:

    a=4
    print(a.bit_length()) # 4在二进制中可以用最少3位 100 来表示4,所以输出3
    print(int('4'))       #将字符串4转换成整数4
    
    # int还可下面的将二进制的字符串转换成整数, base=2 代表前面的字符串是二进制。
    print(int('1010',base=2)) # 输出10

    二、字符串(str)

      字符串的常用功能太多了,这里我例举几种常见的功能,具体请看下面的代码

    s="abcdef ghg k"
    print(s.title())              #将字符串转换成标题,输出 Abcdef Ghg K
    
    print(s.capitalize())         #将字符串首字母大写,输出 Abcdef ghg k
    
    print(s.count('d',0,len(s)))  #计算出子串 'd'在母串中出现的次数,默认是在整个母串中查找,
                      #可以在后面跟两个参数指定起始位置查找,这里我指定了在(0,len(s))中查找,
                      #其中len(s)代表获取字符串长度
    
    print(s.startswith('a'))      #判断字符串是否以什么开头,这里输出True,
    
    print(s.find('g',0,len(s)))   #查找子串第一次在母串中出现的位置,这里输出7,同样可以自己指定位置范围来搜查
    
    print(s.upper())              #将字符串转换成大写,这里输出ABCDEF GHG K
    
    print(s.join(['a','b','c']))  #用字符串 s 来连接列表['a','b','c'] 输出 aabcdef ghg kbabcdef ghg kc
    
    print(s.strip())         #移除两侧空格
    
    print(s.split())         #分割字符串,返回一个列表 这里输出['abcdef', 'ghg', 'k']
    
    print(s.replace('g','G',1))   #替换,默认全部替换,可以设置为1,只替换一次,这里只替换一次输出abcdef Ghg k
    
    print(s[0:4])                 #切片,[0:4]代表将字符串s的前面4位取出来,这里输出 abcd

     三、列表(list)

      列表是Python内置的一种数据类型是列表,是一种有序的集合,可以随时添加和删除其中的元素。

    l=['a','b','cc',4]     #定义一个列表
    
    l.append(5)         #添加一个元素,l=['a', 'b', 'cc', 4, 5]
    
    l.pop()           #从尾部删除一个元素,l=['a', 'b', 'cc', 4]
    
    l.remove('a')         #从列表中移除 'a',l=['b', 'cc', 4]
    
    l.extend(['gg','kk'])    #添加一个列表['gg','kk'], l=['b', 'cc', 4, 'gg', 'kk']
    
    l.reverse()          #反转一个列表,l=['kk', 'gg', 4, 'cc', 'b']
    
    print(l.count('kk'))     #某元素出现的次数 输出 1
    
    print(l.index('gg'))     #元素出现的位置,输出 1
    
    for i in l:          #循环输出列表元素
        print(i)
    
    print(l[0:4:2])       #列表切片,以步长2递增,输出['kk', 4]

     四、元组(tuple)

      tuple和list非常类似,但是tuple一旦初始化就不能修改,tuple也是有序的,tuple使用的是小括号标识。

    t=('a','b','b','c')   #定义一个元组
    
    print(t.index('b'))   #索引出元素第一次出现的位置,还可以指定在某一范围里查找,这里默认在整个元组里查找输出1
    
    print(t.count('b'))   #计算元素出现的次数,这里输出2
    
    print(len(t))      #输出远组的长度,这里输出4
    
    for i in t:
        print(i)       #循环打印出元组数据
    
    print(t[1:3])       #切片 输出('b','b')

    五、字典(dict)

      字典是无序的,使用键-值(key-value)存储,具有极快的查找速度。

    d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
    
    d.get('Bob')                     #根据key获取values,如果不存在返回None,这里输出75
    
    d.pop('Bob')                     #根据键删除某一元素 d={'Michael': 95, 'Tracy': 85}
    
    d['Jason']=99                       #新增元素 d={'Michael': 95, 'Tracy': 85, 'Jason': 99}
    
    print(len(d))                       #输出字典长度,这里输出3
    
    print('Jason' in d)                 #python3 中移除了 has_key,要判断键是否存在用in
    
    for i in d:
        print(i)                     #循环默认按键输出
    
    for i in d.values():                #循环按值输出
        print(i)
    
    for k,v in d.items():                #循环按键值输出
        print(k,v)

     补充

    一 、enumrate

      为一个可迭代的对象添加序号,可迭代的对象你可以理解成能用for循环的就是可迭代的。默认是编号是从0开始,可以设置从1开始

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

    二、range和xrange

      在python2中有xrange和range,其中range会一次在内存中开辟出了所需的所有资源,而xrange则是在for循环中循环一次则开辟一次所需的内存,而在Python3中没有xrange,只有range ,但是python3的range代表的就是xrange。range用来指定范围,生成指定的数字。

    for i in range(10):     #循环输出所生成的 0-9
        print(i) 
    
    for i in range(1,10,2): #输出所生成的 1 3 5 7 9
        print(i)

    课后习题

    一、元素分类

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

    l= [11,22,33,44,55,66,77,88,99]
    bignum=[]
    smallnum=[]
    dir={}
    for num in l:
        if num>66:
            bignum.append(num)
        if num<66:
            smallnum.append(num)
        else:
            pass
    dir['k1']=bignum
    dir['k2']=smallnum
    print(dir)

    二、查找

      查找元素,移动空格,并查找以 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"}
    
    for i in li:
        if i.strip().capitalize().startswith('A') and i.strip().endswith('c'):
            print(i)
    for i in tu:
        if i.strip().capitalize().startswith('A') and i.strip().endswith('c'):
            print(i)
    for i in dic.values():
        if i.strip().capitalize().startswith('A') and i.strip().endswith('c'):
            print (i)

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

       商品 li = ["手机", "电脑", '鼠标垫', '游艇']
    #方法一
    l1=[1,2,3,4]
    l2=["手机", "电脑", '鼠标垫', '游艇']
    d=dict(zip(l1,l2))
    print(d)
    num=input("请输入商品编号:")
    print("你选择的商品为 %s" %d[int(num)])
    
    #方法二
    li = ["手机", "电脑", '鼠标垫', '游艇']
    for k, i in enumerate(li):
        print(k,i)
    k=input("请输入商品编号:")
    print("你选择的商品为 %s" % li[int(k)])

    四、购物车

    功能要求:

    • 要求用户输入总资产,例如:2000
    • 显示商品列表,让用户根据序号选择商品,加入购物车
    • 购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
    • 附加:可充值、某商品移除购物车
    goods = [
        {"name": "电脑", "price": 1999},
        {"name": "鼠标", "price": 10},
        {"name": "游艇", "price": 20},
        {"name": "美女", "price": 998},
    ]
    gouwuche={"电脑":0,"鼠标":0,"游艇":0,"美女":0} #购物车中商品数量
    jiage={"电脑":1999,"鼠标":10,"游艇":20,"美女":998} #商品价格表
    sum=0 #购物车中商品总价
    flag=True
    total=int(input("请输入您的资产: "))
    for k, i in enumerate(goods):
        print(k,i)
    while flag:
        n=input("购买商品请输入1,购买完成请输入2,离开请输入3: ")
        if 1==int(n):
            k=input("请输入你要购买的商品编号: ")
            num = input('请输入你要购买商品的数量:')
            if int (k)>3:
                print("你输入的商品编号有误,请重新操作!")
                continue
            else:
                print("你选择的商品%s已添加到购物车" % goods[int(k)]['name'])
                gouwuche[goods[int(k)]['name']]+=int(num)
                for k,v in gouwuche.items():
                    sum+=jiage[k]*v
        elif 2==int(n):
            while 1:
                if total < sum:
                    print("你的余额不足,请充值,或者移除某些商品!")
                    n = input("充值请输入1,移除商品请输入2: ")
                    if 1 == int(n):
                        k = input("请输入充值面额: ")
                        total += int(k)
                    elif 2 == int(n):
                        k = input("请输入要移除商品的编号:")
                        num = input("请输入要移除商品的数量:")
                        if gouwuche[goods[int(k)]['name']] < int(num):
                            print("你输入的数量大于购物车中商品的数量,请重新操作!")
                            continue
                        else:
                            sum-=jiage[goods[int(k)]['name']]*int(num)
                    else:
                        print("你输入的数字有误,请重新操作!")
                        break
                else:
                    print("操作成功,你的余额还剩%s" % (total - sum))
                    flag=False
                    break
        elif 3==int(n):
            break
        else:
            print("你输入的数字有误请重新操作!")
            continue

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

    dic = {
        "河北": {
            "石家庄": ["鹿泉", "藁城", "元氏"],
            "邯郸": ["永年", "涉县", "磁县"],
        },
        "湖南": {
            "长沙":['a','b','c'],
            "株洲":['d','e','f']
        },
        "湖北": {
            "武汉":['g','h','i'],
            "黄石":['j','k','l']
        }
    }
    for k in dic.keys():
        print(k)
    flag=True
    while flag:
        n=input("请输入你所在省:")
        for k in dic.keys():
            if n in dic.keys():
                if k == n:
                    for i in dic[n].keys():
                        print(i)
                    w = input("请输入你所在的城市:")
                    for i in dic[n].keys():
                        if w in dic[n].keys():
                            if i == w:
                                for k in dic[n][w]:
                                    print(k)
                                s=input("请输入你所在的县:")
                                for j in dic[n][w]:
                                    if s in dic[n][w]:
                                        if j==s:
                                            print("你所在的位置是:%s省%s市%s县" % (n,w,s))
                                            flag = False
                                            break
                                    else:
                                        print('不存在,请重新输入')
                                        break
                        else:
                            print('不存在,请重新输入')
                            break
            else:
                print('不存在,请重新输入')
                break
    

      

      

  • 相关阅读:
    linux常用操作命令
    golang的goroutine调度机制,GC机制
    数据库原理
    linux各文件夹的作用
    c++面试题
    EF 新增数据时提示it has a DefiningQuery and no <InsertFunction> element exists in the <ModificationFunctionMapping> element
    EF 批量插入,sqlhelper 批量插入
    C# 自己用到的几个参数转换方法
    asp.net MVC EF Where 过滤条件怎么写
    EF Code First 数据迁移命令
  • 原文地址:https://www.cnblogs.com/Wxtrkbc/p/5448870.html
Copyright © 2011-2022 走看看