# encoding: utf-8
"""
author: Leo
date: 2017-6-15
"""
import random
from math import sqrt
import os
import fileinput
ls_line = ['hello', 'I am jinjiao', 'Welcome you', '']
for word in ls_line:
print word
print(range(0, -9, -1))
print(range(0, -9, -2))
output = []
for i in range(1, 100):
if i % 3 == 0:
output.append(i)
print(output)
# 所有的序列类型对象都能够用for循环,
name_str = 'jinjiao'
for i in name_str:
print i,
name_list = list(name_str)
for i in name_list:
print i,
name_set = set(name_str)
for i in name_set:
print i,
name_tunple = tuple(name_str)
for i in name_tunple:
print i,
name_dict = {'name': 'jinjiao', 'lang': 'python', 'website': 'jinjiao.com'}
for i in name_dict:
print i, '-->', name_dict[i]
# 这是一种获取字典键/值对的方法,得到一个关于字典的列表,列表中的元素是由字典的建和值组成的元祖
for k, v in name_dict.items():
print k, v
# zip方法的使用
a = 'jinjiao'
b = 'yinjiao'
print(zip(a, b))
# 如果序列长度不相同则以最短的为准
c = [2, 4, 6, 8]
b = [11, 13, 15, 17]
print(zip(c, b))
# 如果对应的序列类型为字典类型时,只返回键的值
s = {'name': 'jinjiao'}
t = {'lang': 'python'}
print(zip(s, t))
result = [(2, 11), (4, 13), (6, 15), (8, 17)]
print(zip(*result))
# zip用来转换字典将原来的键值调换{'python': 'lang', 'jinjiao': 'name', 'jinjiao.github.io': 'site'}
yinfor = {'name': 'jinjiao', 'site': 'jinjiao.github.io', 'lang': 'python'}
print(dict(zip(yinfor.values(), yinfor.keys())))
# 枚举类型enumerate(),可以同时得到元素索引和元素
week = ['jin', 'jiao', 'da', 'wang', 'shi', 'cao', 'ren']
for i in range(len(week)):
print week[i] + 'is' + str(i) # 这里的i是int类型,不能和前面的字符串相连接,如果要连接必须要转换为字符串类型
# enumerate()可以实现同样的功能,首先是返回索引地址,然后再返回对应的值
for (i, day) in enumerate(week):
print day + 'is' + str(i)
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
print(list(enumerate(seasons)))
raw = 'Do you love Beijing, Beijing is a beautiful city'
# 不能对字符串直接使用enumerate(),因为它会变成这样
# print(list(enumerate(raw)))
# 我们需要先将我们的字符串变成列表的形式
raw_list = raw.split(' ')
print(raw_list)
for (i, string) in enumerate(raw_list):
if 'Beijing' in string:
raw_list[i] = 'ShangHai'
print raw_list
# 列表解析
squares = [x ** 2 for x in range(1, 10)]
print(squares)
mybag = [' glass ', ' apple', ' green leaf']
print([one.strip() for one in mybag])
# while循环
# xnum = random.randint(0, 9)
# i = 0
# while i < 4:
# print('***********************************')
# num = input('请您输入0到9任一个数:')
#
#
# x = 3 - i
# if num == xnum:
# print('运气真好,您猜对了!')
# break
# elif num > xnum:
# print('你猜大了!\n哈哈,正确答案是:%s\n您还有%s次机会!'%(xnum, x))
# elif num < xnum:
# print('你猜小了!\n哈哈,正确答案是:%s\n您还有%s次机会!'%(xnum, x))
#
# i += 1
# for ... else示例
for n in range(99, 1, -1):
root = sqrt(n)
print(n)
if root == int(root):
print(n)
break
else:
print('Nothing')
# 文件的操作
f = open('test.txt') # 打开已有的文件
# for循环是一行一行的读取文件的内容,每次扫描一行,遇到行结束符号\n表示结束本行,然后是下一行。
for line in f:
# print(line) # 表示每次打印完Line的对象后就换行,也就是打印Line对象之后会增加一个\n.
print(line), # 后面加上一个逗号,就去掉了原来默认增加的\n了。
# 这样是获取不到任何额内容的,因为读取文件已经到了文件的末尾了。
for line2 in f:
print(line2),
# 创建文件
# nf = open('test1.txt', 'w')
# nf.write('This is a file')
fp = open('test1.txt', 'w')
fp.write('My name is Leo.\n My sex is man')
fp.close()
# 为了防止我们忘记使用fp.close()这句话,我们可以这样设置。
# with open('test.txt', 'a') as f:
# f.write('\nThis is about ')
with open('test.txt', 'r') as f:
print f.read() # 读取文件
# 文件的状态
file_stat = os.stat('test.txt')
print(file_stat)
# read()形式读取一个字符串,返回一个字符串
# f = open('you.txt')
# content = f.readline()
# print(content),
# f.close()
# readline()形式读取一个字符串,每次读取一行,最后以行返回字符串.
# f = open('you.txt')
# while True:
# line = f.readline()
# if not line:
# break
# print line,
#
# f.close()
# readlines()形式读取一个字符串,每次读取一行,最后以行返回的是一个列表
f = open('you.txt')
# while True:
# line = f.readlines()
# if not line:
# break
# print line,
#
# f.close()
# 这样可以使用for循环来实现我们的迭代功能,之所以能够迭代是因为file是一个可迭代的数据类型。
# #
# 当我们读取很大文件的时候我们可以使用fileinput模块
# for line in fileinput.input('you.txt'):
# print line,
# f.close()
# seek功能是让指针移动
f = open('you.txt')
f.readline()
f.readline()
print(f.readline())
# 让我们的文件指针回到开头
f.seek(0)
print(f.readline())
# 指针的位置可以用tell()来显示
print(f.tell())
a = ['2', '3', '4', '5']
print(a[: -1])
# 迭代
lst = ['q', 'i', 'w', 's', 'i', 's']
lst_iter = iter(lst) # iter()是一个内建函数,表示为迭代类型
print(lst_iter.next()) # 获取下一个元素
print(lst_iter.next())
print(lst_iter.next())