2015-12-15_11S_02days

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]) 
时间: 2024-10-29 10:46:18

2015-12-15_11S_02days的相关文章

2015.12.29~2015.12.30真题回顾!-- HTML5学堂

2015.12.29~2015.12.30真题回顾!-- HTML5学堂 吃饭,能够解决饥饿,提供身体运作机能.练习就像吃饭,强壮自己,提升编程技能,寻求编程技巧的最佳捷径!吃饭不能停,练习同样不能停哦! HTML5真题[2015.12.29]题目 学习JavaScript或应用JavaScript进行脚本开发,“变量”这是必须要学会使用的.什么是变量呢?又什么作用呢?ok,大家稍安勿躁哦,试体验体验这题目<HTML5真题[2015.12.29]题目>与 <HTML5真题[2015.12

#VSTS日志# 2015/12/10 – 终于可以删除工作项了

最近的更新不少,废话少说,直接上干货 定制工作项字段 本周的更新后,所有的用户都可以在vsts上直接给工作项添加字段了,具体内容包括– 添加新字段(日期,字符串,整形,数字)– 字段显示位置配置– 过程模版继承– 过程模版安全性配置 很多人都知道,在vsts在线版上一直缺少工作项定制能力,这次的更新一定让很多人兴奋,但是我们的工作还没有完,后续我们会逐步完成字段下拉菜单,工作流配置,html字段,添加全新的工作项类型等功能.关于本功能的具体内容,请参考以下博客 http://devopshub.

【我的书】Unity Shader的书 — 文件夹(2015.12.21更新)

写在前面 感谢全部点进来看的朋友.没错.我眼下打算写一本关于Unity Shader的书. 出书的目的有以下几个: 总结我接触Unity Shader以来的历程,给其它人一个借鉴.我非常明确学Shader的艰难,在群里也见了非常多人提出的问题. 我认为学习Shader还是一件有规律可循的事情,但问题是中文资料难觅,而大家又不愿意去看英文...这对我有什么优点呢?强迫我对知识进行梳理,对细节问题把握更清楚. 第二个原因你懂的. 关于本书的定位问题: 面向Unity Shader刚開始学习的人,但要

分布式技术一周技术动态 2015.12.27

分布式系统实践 1. Kafka深度解析 http://www.jasongj.com/2015/01/02/Kafka%E6%B7%B1%E5%BA%A6%E8%A7%A3%E6%9E%90/ 要点: 这篇文章深入的讲解了kafka的架构设计, 数据复制算法以及kafka的性能等多个方面, 是理解和学习kafka非常难得的一篇好文章, 推荐给大家. 2. 解密阿里巴巴高可用架构技术——“异地多活” http://mp.weixin.qq.com/s?__biz=MzAwNjQwNzU2NQ==

360实习工作日志2015.10 ~ 2015.12

RE: 焦诚 ~ 日报 - 由 焦 诚 在 5 个月 之前添加 2015-10-131.利用计算平台统计2015-09-28 => 2015-10-11 共14天的spe_num=502306的云查杀日志,1天的结果在10万条-20万+条不等,两周的结果在200万条左右.由于结果数据量较大,暂时无法从计算平台直接下载数据,下载会报内存溢出的错误.2.开始学习mongodb   RE: 焦诚 ~ 日报 - 由 焦 诚 在 5 个月 之前添加 2015-10-141.计算云查杀日志2015-09-2

2015 12

新浪微博:@晓东日语 欢迎关注,超多日语学习资料在微博@晓东日语 2015 年 12 月 N1 级真题 日语 N1 词汇真题(2015 年 12 月) 問題 1_の言葉の読み方として最もよいものを.1?2?3?4から一つ選びなさい. 1決勝の素晴らしい試合に観客は興奮した. 1こうふん 2きょうふん 3 きょうぶん 4こうぶん 2この説は.鈴木氏が 30 年前に初めて唱えた. 1たたえた 2となえた 3かなえた 4うったえた 3この地域における主要な産業の変遷について調べた 1へんさん 2へんさ

2015/12/29 eclipse 设置要点 空间 项目 类 eclipse汉化

开始使用eclipse,双击eclipse.exe文件,启动eclipse.程序会显示一个工作空间的对话框,工作空间用来存放你的项目文件,你可以使用程序默认的,点击确定即可,你也可以重新选择一个文件夹来存放你的文件,那点击浏览,重新指定你的项目文件存放的目录: 10 进入eclipse.打开文件|新建|新建java项目,然后在项目名称一栏填写你的项目名称: 11 创建一个java类:文件菜单下打开“新建”,打开“新建类”,有两个地方需要填写,一是选择源文件夹,就是刚才你创建的hello worl

JavaSciptj高级程序设计 2015/12/28

第三章 基本概念 一.区分大小写 ECMAScript中的一切(变量.函数名和操作符)都区分大小写 二.标识符(变量.函数.属性的名字.函数的参数) (1)第一个字符必须是一个字母.下划线(-)或一个美元符号($) (2)其他字符可以是字母.下划线.美元符号或者数字 (3)采用驼峰大小写格式:第一个字母小写,剩下的每个单词的首字母大写 例如:firstSecond 三.注释 单行注释: // 多行注释: /* * * */ 四.严格模式 为javacript定义了一种不同的解析与执行模型.在严格

2015/12/26 十六、 八 、二 进制转十进制

十六进制41BD 转换十进制4*16^3+1*16^2+11*16^1+13*16^0=16384+256+176+13=16829 十六进制A10C.8 转换十进制10*16^3+1*16^2+0*16^1+12*16^0+8*16^-1=40960+0+16+12+0.5=41228.5 八进制146.1 转换成十进制1*8^2+4*8^1+6*8^0+1*8^-1=64+32+6+0.125=102.125 八进制5312.2 转换成十进制5*8^3+3*8^2+1*8^1+2*8^0+2

[比赛]2015/12/25BNU新生赛

网络同步做了半个小时,然后就拉肚子了……嗯…… A:不解释……5min 1A 1 #include <algorithm> 2 #include <iostream> 3 #include <iomanip> 4 #include <cstring> 5 #include <climits> 6 #include <complex> 7 #include <fstream> 8 #include <cassert&g