码迷,mamicode.com
首页 > 其他好文 > 详细

2015-12-15_11S_02days

时间:2015-12-21 09:19:48      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:

1、python作用域

对于变量的作用域,只要在内存中存在,就可以使用,如name变量在下面的代码中就可以使用。

>>> if 1 == 1:
... name = "QQ"
...
>>> print name
QQ

2、三元运算

>>> name = "QQ" if 1==1 else ‘haha‘
>>> print name
QQ
>>> name = "QQ" if 1!=1 else ‘haha‘
>>> print name
haha

3、python的进制

4、pycharm断点设置

创建project -->配置解释器-->创建文件-->执行:run    debug(断点)

5、python对象

a、对于python,一切事物都是对象,对象基于类创建。

     类有:字符串类、数字类、列表类

     dir(list)查看list的方法

     如何查看python的源码:在pycharm中,ctrl+list 查看

b、type查看对象的类型

c、dir(类型名)查看类中提供所有功能;

    help(类型名)

    help(类型名.方法)

6、数据类型的内置方法

类中的方法:

    __方法__:内置方法,可能有多种执行,至少一种

    方法:只有一种执行方法,类.方法

    n1=1,n2=1,n1+n2

    >>> n1.__add__(n2)

创建数字的两种方法:   i=10,i=int(10)

 

求绝对值得两种方法:

>>> abs(n1)
1

>>> n1.__abs__()
1

 

求商和余数:

>>> a = 99
>>> a.__divmod__(10)
(9, 9)

 

7、编码与解码

编码:

Unicode------>UTF-8

Unicode------>GBK

解码:

UTF-8------->Unicode

GBK  ------->Unicode

 

8、字符串的内置方法

 >>> a.startswith(‘w‘)    #以哪个字符串开头 

True

 

>>> name=‘Char\tles‘
>>> name.expandtabs()  #将tab替换为空格,默认为8个空格
‘Char les‘
>>> name.expandtabs(1)
‘Char les‘
>>> name.expandtabs(0)
‘Charles‘

 

 

>>> name = ‘Charles‘
>>> name.find(‘a‘)   #找到字符串中第一个子字符串的下标

 

字符串格式化的四种方法:

    方法2:      

>>> name = ‘i am {ss} age {dd}‘
>>> name.format(ss=‘Charles‘,dd=18)
‘i am Charles age 18‘

    方法3:

>>> name = ‘i am {0} age {1}‘
>>> Li=[222,333]
>>> name.format(*Li)
‘i am 222 age 333‘

    方法4:

>>> name = ‘i am {0} age {1}‘
>>> Li=[222,333]
>>> name.format(*Li)
‘i am 222 age 333‘

 

>>> a
‘wahaha‘
>>> a.islower()     #都是小写
True

 

>>> a = ‘a am charles‘
>>> a.title()    #字符首字母大写
‘A Am Charles‘

 

>>> a
‘a am charles‘
>>> a.ljust(30,"=")    #邮编填充30个字符
‘a am charles==================‘

 

>>> a.lower()  #全部变小写
‘a am charles‘

 

>>> a.upper()   #全部变大写
‘A AM CHARLES‘

 

>>> a.swapcase()  #大小写转换
‘a aM cHARLES‘

 

>>> name
‘Charles‘
>>> name.partition(‘a‘)   #将字符串以...截断
(‘Ch‘, ‘a‘, ‘rles‘)

 

index和find的区别:

>>>name = ‘Charles‘

>>> name.index(‘a‘)
2
>>> name.find(‘a‘)
2
>>> name.index(‘j‘)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
>>> name.find(‘j‘)
-1

 

>>> name.endswith(‘s‘)   #以...结束
True

 

>>> name.__contains__(‘le‘)   #是否包含子序列,返回布尔值
True

 

9、列表基础

>>> li = [11,22,33,44]
>>> del li[2]       #删除列表的第三个元素

>>> del li           #删除整个列表

 

 

>>> li.count(22)   #计算列表中元素个数
2

 

>>> li.extend(‘wahaha‘)    #扩展,可以是字符串或者列表
>>> li
[11, 22, 22, 33, 44, ‘w‘, ‘a‘, ‘h‘, ‘a‘, ‘h‘, ‘a‘]
>>> a_list = [1,2,3]
>>> li.extend(a_list)
>>> li
[11, 22, 22, 33, 44, ‘w‘, ‘a‘, ‘h‘, ‘a‘, ‘h‘, ‘a‘, 1, 2, 3]

 

>>> li.pop(2)   #删除,下标
22

 

>>> li.remove(‘h‘)  #删除,对象为元素

 

>>> li.reverse() #将列表的元素顺序反转

 

>>> li.sort()  #将列表的元素排序,中文按照unicode比较,排序

 

10、列表与元组常用的方法

11、字典的常用方法

.get方法

>>> dic = {a:123}   
>>> 
>>> 
>>> dic.get(a) #返回value的值
123
>>> dic.get(b,OK) #如果不存在key,返回OK
OK

 

字典的key不可以重复,value可以重复

 

.clear()  #字典内容清空

 >>> dic.clear() >>> dic {} 

 

.has_key()   #判断key是否在字典中

>>> dic.has_key(a)    
True

 

遍历字典的两种方法:

方法1:在数据量小的时候,这样用
>>> for k,v in dic.items():print k,v
... 
a 123

方法2:在大数据量的时候,这样用
>>> for k in dic:print k,dic[k]
... 
a 123

 

删除

>>> dic.pop(a)   #删除元素
123
>>> del dic    #全局性删除
>>> dic
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name dic is not defined

 

update

>>> a = {a:123}
>>> b = {b:456}
>>> 

>>> a.update(b)    #将b整合到a中
>>> a
{a: 123, b: 456}

 

.values()    

>>> a.values()    #value放置到列表中
[123, 456]

  

深浅拷贝:

>>> a
{a: 123, b: 456}
>>> b = a
>>> a[c]=789
>>> a
{a: 123, c: 789, b: 456}    #字典为了节省内存,将b和a的引用都指向相同的地址,使得a变化,b也变化
>>> b
{a: 123, c: 789, b: 456}

>>> c = a.copy()

 

>>> c
{‘a‘: 123, ‘c‘: 789, ‘b‘: 456}
>>> a[‘d‘]=111
>>> a
{‘a‘: 123, ‘c‘: 789, ‘b‘: 456, ‘d‘: 111}    
>>> c                    #使用浅拷贝,可以使得a和c相互分离,但是这样还有问题,看下面
{‘a‘: 123, ‘c‘: 789, ‘b‘: 456}

 

>>> a[‘e‘]={‘name‘:[‘QQ‘]}
>>> a
{‘a‘: 123, ‘c‘: 789, ‘b‘: 456, ‘e‘: {‘name‘: [‘QQ‘]}, ‘d‘: 111}
>>> d = a.copy()
>>> d
{‘a‘: 123, ‘c‘: 789, ‘b‘: 456, ‘e‘: {‘name‘: [‘QQ‘]}, ‘d‘: 111}
>>>
>>> a[‘e‘][‘name‘].append(‘Charles‘)                      #如果字典/列表不只有一层,那么依旧没有分离,会原样拷贝,如何彻底分离呢,看下面
>>> a
{‘a‘: 123, ‘c‘: 789, ‘b‘: 456, ‘e‘: {‘name‘: [‘QQ‘, ‘Charles‘]}, ‘d‘: 111}
>>> d
{‘a‘: 123, ‘c‘: 789, ‘b‘: 456, ‘e‘: {‘name‘: [‘QQ‘, ‘Charles‘]}, ‘d‘: 111}

 

>>> import copy
>>> e = copy.deepcopy(a)    #使用深拷贝,使得a和e完全分离
>>> e
{‘a‘: 123, ‘c‘: 789, ‘b‘: 456, ‘e‘: {‘name‘: [‘QQ‘, ‘Charles‘]}, ‘d‘: 111}
>>> a
{‘a‘: 123, ‘c‘: 789, ‘b‘: 456, ‘e‘: {‘name‘: [‘QQ‘, ‘Charles‘]}, ‘d‘: 111}
>>> a[‘e‘][‘name‘].append(‘Calen‘)                            
>>> a
{‘a‘: 123, ‘c‘: 789, ‘b‘: 456, ‘e‘: {‘name‘: [‘QQ‘, ‘Charles‘, ‘Calen‘]}, ‘d‘: 111}
>>> e
{‘a‘: 123, ‘c‘: 789, ‘b‘: 456, ‘e‘: {‘name‘: [‘QQ‘, ‘Charles‘]}, ‘d‘: 111}

 

  

购物车程序: 

#!/usr/bin/env python
# _*_ coding:utf-8 _*_

import sys

sales_dict = {                     #商品的名目
1:[Iphone6S,6088],
2:[MAC,8888],
3:[bike,500],
4:[car,30000]
}

buy_sales_list = {Iphone6S:0,     #购买商品和数量
                  MAC:0,
                  bike:0,
                  car:0
                 }

while True:
    total_money = int(raw_input(\033[1;31m请输入你总共有多少钱:\033[0m))
    for k,v in sales_dict.items():      #打印商品列表
        print "%s %s %s" %(k,v[0],v[1])
        
    while True:
        print "\033[1;32m按q键退出\033[0m\n"
        identifier_of_sales = raw_input(\033[1;34m请输入你想要购买的商品的编号:\033[0m).strip()
        if identifier_of_sales == q:                     #如果输入q键,就打印购买商品列表,并退出
            print "\033[1;33m你购买的商品和数量为\033[0m\n" 
            for k,v in buy_sales_list.items():
                print k,v 
            sys.exit()
        elif not sales_dict.has_key(int(identifier_of_sales)):  #如果输入的商品的编号不存在,重新输入
            print "\033[1;31m你输入的商品编号不存在,请重新输入\033[0m\n"
            continue
        cost_money = int(sales_dict[int(identifier_of_sales)][1])
        cost_name = sales_dict[int(identifier_of_sales)][0]
        left_money = total_money - cost_money
        total_money = left_money
        if left_money > 0:
            print "\033[1;34m你已经购买了%s,剩余%s元\033[0m" %(cost_name,left_money)
            buy_sales_list[cost_name] +=1            #购买商品的数量
        else:
            print "\033[1;35m你不能购买%s\033[0m" %(cost_name)
        
        sales_list = []    #商品的价格列表
        for k,v in sales_dict.items():
            sales_list.append(v[1])
             
        if left_money < min(sales_list):   # 如果剩余的钱比商品的最低价格还少
            print "\033[1;31m你剩余的钱已经不足以购买任何商品了\033[0m"
            print "\033[1;36m你购买的商品和数量为:\033[0m"
            for k,v in buy_sales_list.items():
                print k,v
            sys.exit()
        else:
            print "\033[1;33m如果想继续购买,请输入商品编号,您可以购买的商品如下\033[0m\n"
            for k,v in sales_dict.items():
                if left_money >= v[1]:
                    print "\033[1;37m%s %s %s\033[0m" %(k,v[0],v[1]) 

 

2015-12-15_11S_02days

标签:

原文地址:http://www.cnblogs.com/cqq-20151202/p/5047514.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!