共计 4027 个字符,预计需要花费 11 分钟才能阅读完成。
1. 赋值 就是将一个数字、字符串等赋值给一个变量
- 简单赋值
x = 1
- 多重赋值
# 将 1 赋给 x,2 赋给 y
x,y = 1,2
#以下表达式同上
x,y = (1,2)
x,y = [1,2]
#-- 分割线 --
#将 h 赋给 x,w 赋给 y
x,y = 'h','w'
#将 b 赋给 x,j 赋给 y
x,y = 'bj'
#将 bj 赋值给 x 和 y
x = y = 'bj'
- +=
x = 1
#x = 2
x +=1
2. 输入
2.1 raw_input 原始输入, 不进行转换
x = raw_input(" 请输入你的名字 ")
#请输入你的名字 liuser
print('hello %s' % (x))
#hello liuser
x = raw_input("100*100 = ?")
# 100*100 = ?100*100
x
#输出 x 的时候原样输出,不做计算.
'100*100'
>>>
2.2 input 输入的内容会做运算
x = input("100*100 = ?")
100*100 = ?100*100
>>> x
#已经做了计算 100*100
10000
input(" 输入你的名字 ")
#输入你的名字 liuser
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1, in <module>
NameError: name 'liuser' is not defined
#liuser 这个变量不存在,input 的输入跟在 python 中的表达、语句是一样的。
3 输出
先说一下 python3 和 2 的区别,3 的话 python 是一个函数,如果使用 print "hello",会报错。python2 中 print 是一个语句, 重点是看下 python2
3.1 普通输出
# 普通输出
print "hello"
3.2 格式化符号
# 格式化符号输出,下面输出结果为:"hello world" %s 表示这个位置是一个字符串 后面的括号为实际的值
print "hello %s" % ("world")
#格式化输出, 下面语句将输出:"hello liuser , welcome use python "
print "hello {0} , welcome use {1} " . format('liuser','python')
#也可以使用下面语句
print "hello {a} , welcome use {b} " . format(a = 'liuser',b = 'python')
4 条件语句
4.1 if else 语句
if 语法
# 如果表达式 xxx 为 true,则执行 statements1
if xxx:
statements1
#如果表达式 yyy 为 true,并且 xxx 为 false,则执行 statements2
elif yyy:
statements2
#如果上述表达式都不满足,则执行下面表达式
else
statements3
#一个栗子, 输出结果为 "x=10"
x = 10
if x > 10 :
print "x > 10"
elif x < 10:
print "x < 10"
else :
print "x = 10"
5 逻辑表达式, 顺序上 not > and > or
5.1 not 取反
x = True
#输出 x
x
#x=True
True
#取反
not x
#x=False
False
>>>
5.2 and 从左到右计算表达式,若所有值均为真,则返回最后一个值,若存在假,返回第一个假值。
x,y,z = [1,0,4]
#返回 0,第一个假值
x and y
#返回 4,两个都为真,返回右边的值(最后的值)x and z
5.3 or 从左到有计算表达式,返回第一个为真的值。
x,y,z = [1,0,4]
# 返回 x,因为 x 为真
x or y
#返回 z,z 为真
y or z
5.4 三元表达式,if 的缩写形式
x,y = [3,5]
#这句话表示,如果 x > y, 则 a = x,否则,x = y
a = x if x > y else y
6 循环语句
6.1 while/else
基本语法
# 如果 xxx 为真,则一直执行 while 循环
while xxx:
statements
#如果要跳出循环,if yyy:
#直接跳出整个循环
break
#跳出当前循环
continue
举个例子 1
x = 10
while x > 0 :
print('x > 0, 当前 x 为 % s' % (x))
x = x-1
else:
print(" 循环结束,当前 x 为 % s" % (x))
x > 0, 当前 x 为 10
x > 0, 当前 x 为 9
x > 0, 当前 x 为 8
x > 0, 当前 x 为 7
x > 0, 当前 x 为 6
x > 0, 当前 x 为 5
x > 0, 当前 x 为 4
x > 0, 当前 x 为 3
x > 0, 当前 x 为 2
x > 0, 当前 x 为 1
循环结束,当前 x 为 0
举个例子 2
x = 10
#死循环
while True:
print('x > 0, 当前 x 为 % s' % (x))
x = x-1
#通过此处的条件中断循环
if(x<=0):
break
else:
#此处不会执行,因为是手动停,并不是 while 循环的条件为 False
print(" 循环结束,当前 x 为 % s" % (x))
举个例子 3,判断 10 以内的偶数
x = 10
while x > 0:
if(x % 2 == 0):
print('打印偶数 %d' % (x))
x = x-1
举个例子 4,判断一个数是不是质数(素数)#coding:utf-8
number = input(" 请输入一个数字 ")
#差不多是一个数的一半
half = number // 2
flag = False
while(half>1):
if(number % half ==0):
flag = True
print " 不是质数,可以被 % s 除 " % (half)
half = half -1
else :
if(flag == False):
print("%s 是质数 " % (number))
6.2 for/else 循环
用法
#o 表示字符串 元组 列表 字典等
for x in o:
#do something1
if(False):
#跳出和上面是一样的
break
else:
#do something2
举个小栗子:
for x in [1,2,3,4,5,6]:
print "x = %s" % (x)
#输入 x=1 x=2..... x=6
再举一个小栗子,循环字典,并保存到文件
import sys
reload(sys)
sys.setdefaultencoding('utf8')
import codecs
file = codecs.open('for.txt','w','utf-8')
dict = {'name':u'得青','age':'20','sex':'1','address':'北京'}
for key in dict:
print >> file ,key,"=>",dict[key]
file.close()
7 列表解析和异常
7.1 列表解析
例:去除列表中重复的元素
L1 = ['a','b','c','d','b','a']
L2 = []
#这句的执行顺序是 for i in L1 , 然后判断 if not i in L2 , 也就是 i 是否在 L2 中,如果不在则 L2.append(i)
[L2.append(i) for i in L1 if not i in L2]
print L2
>>> ['a', 'b', 'c', 'd']
等同于:
>>> for i in L1:
... if(i not in L2):
... L2.append(i)
...
>>> L2
['a', 'b', 'c', 'd']
>>>
例 2:生成器, 算出 10 以内偶数的平方
# 会产生一个生成器 <generator object <genexpr> at 0x1058deaa0>
iter = (i ** 2 for i in range(10) if i%2 ==0)
#然后迭代遍历一下
for i in iter:
print i
7.2 异常
7.1 常见异常
#i 未定义
print i
#会产生一个 NameError
>>> NameError: name 'n' is not defined
#i 为整型,访问下标会产生 TypeError
i = 1
i[1]
#list 只有一个元素,下表为 0,访问 1 越界,会产生 IndexError
list = [1]
list[2]
7.2 抛出异常 raise
# 上面可知,访问一个未定义的变量会产生 NameError,详细信息是 " name 's' is not defined", 我们也抛出这个异常,并修改异常信息
raise NameError(" 抛出异常 ")
#结果为
NameError: 抛出异常
7.3 异常拦截
异常会终端操作,导致一些未知的清空,我们可以使用 except 捕捉到异常,并处理
try:
#访问一个不存在的 x,产生 NameError 异常
print x
#拦截 NameError 异常,使用 Exception 拦截所有异常
except NameError,e:
#此处也可以 print e,e 保存着错误信息
print " 发生异常 "
7.4 完整的异常 demo
try:
raise NameError(" 抛出一个异常 ")
#拦截异常
except NameError,e:
#打印错误信息
print e
#不管是否有异常都会执行 finally
finally:
print " 结束 "
8 习题
8.1 猜数字
除了猜数字,还有两个问题,
第一个是,input 如果接受到一个未定义字符串,会发生异常。
第二个是,如果在 input 中直接输入 rand_number 会直接判对。
#coding:utf-8
import random
#产生随机数字
rand_number = random.randint(0,100)
count = 6
while count > 0:
try:
input_number = raw_input(" 请输出你要猜的数字 ")
input_number = int(input_number)
except ValueError ,e:
print " 请输入有效的数字 "
break
if(input_number == rand_number):
#如果猜对了,则跳出循环
print " 恭喜你猜对了,数字就是 % s" % (rand_number)
break
elif(input_number < rand_number):
print " 数太小了 "
elif(input_number > rand_number):
print " 数太大了 "
count = count - 1
else:
print " 很抱歉,超时!"
print " 正确答案是 % s" % (rand_number)
其他作业都不太难,就全略过了。
正文完