#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time : 2017/10/27 22:46
# @Author : lijunjiang
# @File : Exercise.py
"""实现1-100的所有的和"""
num = 0
for i in xrange(1, 101):
num += i
print(num)
"""实现1-500所有奇数的和"""
num = 0
for i in xrange(1, 501):
if 0 != (i % 2):
num += i
print(num)
#####################################################
num = 0
for i in xrange(1, 501):
if 0 == (i % 2):
continue
else:
num += i
print(num)
"""求1 + 2! + 3! + 4! + ...+20!"""
num = 0
n = 1
for i in xrange(1, 21):
n *= i
num += n
print(num)
"""对指定一个list进行排序"""
a = [2, 32, 43, 453, 54, 6, 576, 5, 7, 6, 8, 78, 7, 89]
a.sort()
print(a)
"""复习字典字符串list uple常用方法"""
"""通用方法"""
str1 = 'abcdefg'
list1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
tuple1 = ('a', 'b', 'c', 'd', 'e', 'f', 'g')
dict1 = {"name":"li", "age":20, "addr":"beijing"}
#type() 返回变量数据类型
print(type(str1))
print(type(list1))
print(type(tuple1))
#dir() 查看对象都有哪些属性和方法
print(dir(str1))
print(dir(list))
print(dir(tuple1))
#help() 查看函数对象模块用途的详细说明
print(help(str1))
print(help(list1))
print(help(tuple1))
"""适用于字符串 list tuple的方法"""
#len() 求序列的长度
print(len(str1))
print(len(list1))
print(len(tuple1))
# + 连接2个序列
print(str1 + '123')
print(list1 + [123, 234])
print(tuple1 + (123, 234))
# * 重复序列元素
print(str1 * 4)
print(list1 * 4)
print(tuple1 * 4)
# in 判断元素是否在序列中
print('a' in str1)
print('b' in list1)
print('g' in tuple1)
# max() 返回最大值
print(max(str1))
print(max(list1))
print(max(tuple1))
# min() 返回最小值
print(min(str1))
print(min(list1))
print(min(tuple1))
str1 = 'abcabc'
tuple1 = ('a', 'b', 'c', 'a', 'b', 'c')
list1 = ['a', 'b', 'c', 'a', 'b', 'c']
# count() 返回值出现的次数
print(str1.count('b'))
print(tuple1.count('b'))
print(list1.count('b'))
# insdex() 返回值的下标
print(str1.index('a'))
print(tuple1.index('a'))
print(list1.index('a'))
"""字符串方法"""
str1 = 'abcabc'
# find() 字符串中查找字符串,返回查找字符串中第一个字符的下标,未找到返回-1
print(str1.find('ca'))
# replace(str1,str2) 替换 将str1替换为str2
print(str1.replace('ca', 'TT'))
# split(srt) 分割 以str 为分割符,返回一个列表 类似shell中awk -F
print(str1.split('b'))
# join(str) 以str连接字符串
print('||'.join(str1.split('b')))
# strip() 去除字符串两边的空格
# lstrip() 只去除左边空格 rstrip() 只去除右边空格
str1 = ' ab ca b '
print(str1)
print(str1.strip())
print(str1.rstrip())
print(str1.lstrip())
# format()
# print('str0 {0} str1{1}'.format(str0, str1)) 执行效率最高
print("hello {0}".format(str1))
"""list 方法"""
list1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
# list.append() 追加一个元素到列表最后
list1.append('append')
print(list1)
# list.extend() 追加一个可迭代的对象到列表中
list1.extend(xrange(10, 15))
print(list1)
# list.insert() 在某个下标前插入元素
list1.insert(1, 'insert')
print(list1)
#list.remvoe() 删除某个元素
list1.remove("insert")
print(list1)
# list.sort() 给列表排序
list1.sort()
print(list1)
# list.reverse() 倒序
list1.reverse()
print(list1)
# list.pop()
# 删除并返回某个下标的元素(不指定下标默认为最后一个)
list1.pop()
print(list1)
list1.pop(0)
print(list1)
"""字典的方法"""
dict1 = {"name":"li", "age":20, "addr":"beijing"}
# get() 根据键获取值
print(dict1.get('name'))
# setdefault() 设置默认值,当KEY有值时,保持原值,当key没有值则设置该key的值
print(dict1.setdefault('name'))
print(dict1.setdefault('name'), 'jiang')
print(dict1.setdefault('ip', 'localhost'))
print(dict1)
# keys() 获的字典的Key (一次性取出所有)
print(dict1.keys())
# iterkeys() 获得key的值 (对象 且逐个取出 效率高)
print(dict1.iterkeys())
print(type(dict1.iterkeys()))
# for keys in dict1.iterkyes():
# print(keys)
# values() 获取所有key的值(一次性取出所有)
print(dict1.values())
# iteritems() 获得一个对象(逐个取出) 效率高
print(dict1.iteritems())
print(type(dict1.iteritems()))
# pop() 删除并返回某个键的值,必须输入一个存在的key,否则会报错
print(dict1.pop('ip'))
print(dict1)
# fromkeys()
list1 = ["a", "b", "c", "d"]
k = {}
n = k.fromkeys(list1, 123)
print(n)
# zip()
### 1
list1 = ["a", "b", "c", "d"]
list2 = [12, 234, 32, 23]
n = zip(list1, list2)
print(n)
### 2 列表转换成字典
list1 = ["a", "b", "c", "d"]
list2 = [12, 234, 32, 23]
n = dict(zip(list1, list2))
print(n)
#dict.updata()
dict1.update(n)
print(dict1)
# sorted() 指定项目排序
print sorted(dict1.iteritems(), key = lambda d: d[1], reverse=True) #按valuse值排序
print sorted(dict1.iteritems(), key = lambda a: a[0], reverse=True) #按key值排序