# coding:utf-8
#数字表达式
print 2 + 2
#4
print 53672 + 235253
#288925
print 1 / 2 #整数除,小数点被截除
#0
print 1.0 / 2.0 #如果参与除法的两个数中有一个数为浮点数,则运算结果为浮点数
#0.5
print 1 / 2.0
#0.5
print 1.0 / 2
#0.5
print 1.0 / 2.
#0.5
#from __future__ import division #可以执行它,让除法变成如上效果,由于需要放在脚本开头,所以这里注释,可以自行测试
print 1 / 2
#0.5
print 1 // 2 #双斜杠,让它变成整数除
#0
print 1.0 // 2.0 #就算是浮点数,双斜线也会执行整数除
#0.0
print 1 % 2 #取余数,x % y的结果为x除以y的余数
#1
print 10 / 3
#3
print 10 % 3
#1
print 9 / 3
#3
print 9 % 3
#0
print 2.75 % 0.5
#0.25
print 2 ** 3 #冥运算(乘方)
#8
print -3 ** 2
#-9
print (-3) ** 2
#9
#长整数
#普通整数不能大于2147483647也不能小于-2147483648,如果需要更大的数可以使用长整数,结尾有个L
print 10000000000000000000000000L
#10000000000000000000000000
#十六进制和八进制
print 0xAF #十六进制
#175
print 010 #八进制
#8
#变量
x = 3
print x * 2
#6
#获取用户输入
#x = input("x: ")
#x: 34
#print x
#34
#y = input("y: ")
#y: 42
#print y
#42
#print x * y
#1428
#函数
print 2 ** 3 #乘方
#8
print pow(2,3) #pow函数替代运算符
#8
print 10 + pow(2, 3*5)/3.0
#10932.6666667
print abs(-10) #abs函数可以得到数的绝对值
#10
print 1/2
#0
print round(1.0/2.0) #round函数则会把浮点数四舍五入为最接近的整数值
#1.0
#模块
import math #导入math模块
print math.floor(32.9) #通过math模块的floor函数向下取整数
#32.0
print int(math.floor(32.9)) #通过int函数转换为整数
#32
from math import sqrt #希望不要在每次调用函数的时候写上模块的名字,使用这种导入方式
#注意:应该坚持使用import方式,命名冲突会很隐蔽,某些模块导入导致其他函数不可用。
print sqrt(9) #平方根
#3.0
foo = math.sqrt(4) #变量引用函数方式
print foo
#2.0
#cmath和复数
import cmath #这里并没有使用from...import...语句,因为一旦使用了这个语句,就没法使用普通sqrt函数。应该坚持使用import方式。
print cmath.sqrt(-1) #负数平方根,结果是虚数,虚数以j结尾
#1j
print (1+3j) * (9+4j) #python本身支持复数
#(-3+31j)
#字符串
#单引号字符串和转义引号
print "Hello, world!"
#Hello, world!
print 'Hello, world!' #单引号和双引号没有区别
#Hello, world!
print "Let's go!" #这种场景适合用双引号
#Let's go!
print '"Hello ,world!" she said' #这种场景适合单引号
#"Hello ,world!" she said
print 'Let\'s go!' #转义单引号
#Let's go!
print "\"Hello, world!\" she said" #转义双引号
#"Hello, world!" she said
print 'Let\\\'s say "Hello, world!"' #转义转义符
#Let\'s say "Hello, world!"
#拼接字符串
print "Let's say " '"Hello, world!"' #用一个接着另一个的方式写了两个字符串,python会自动拼接它们(它们合为一个字符串),这是写字符串的一种特殊方法,并不是拼接字符串的一般方法。
#Let's say "Hello, world!"
print "Hello, " + "world!" #拼接字符串一般方法
#Hello, world!
x = "Hello, "
y = "world!"
print x + y
#Hello, world!
#字符串表示,str和repr
print repr("Hello, world!") #repr会创建一个字符串,以合法的python表达式的形式来表示值
#'Hello, world!'
print repr(10000L)
#10000L
print str(10000L) #str是把值转换成合理形式的字符串,以便用户可以理解。
#10000
temp=42
print "The temperature is " + `temp` #repr(x)也可以写作`x`(反引号不是单引号),通过repr转换为字符串"42"
#The temperature is 42
#input和raw_input的比较
#name=input("what is your name? ")
#print "Hello, " + name + "!"
#what is your name? tom #这样会报错,input假设用户输入是合法的python表达式
#what is your name? "tom" #如果以字符串作为输入名字是可以的"tom",但这样太麻烦。
#name=raw_input("what is your name? ") #raw_input函数会把所有的输入当作原始数据,就没问题,尽可能使用raw_input
#print "Hello, " + name + "!"
#what is your name? tom
#Hello, tom!
#长字符串,原始字符串和Unicode
#长字符串
#如果需要写一个非常非常长的字符串,它需要跨多行,那么可以使用三个引号代替普通引号:
print '''This is a very long string.
It continues here.
And is's not over yet.
"Hello, world!"
Still here.''' #也可以用三个双引号,如"""Like This"""。注意这种方式你可以在字符串中使用单引号和双引号,而不需要使用反斜杠转义。
#This is a very long string.
#It continues here.
#And is's not over yet.
#"Hello, world!"
#Still here.
print "Hello, \
world!" #跨行写法
#Hello, world!
print \
'Hello, world!' #跨行写法
#Hello, world!
#原始字符串
print 'Hello,\nworld!' #换行符可以写成\n
#Hello,
#world!
path= 'C:\nowhere' #看起来不错,但显示不是你的要结果
print path
#C:
#owhere
print 'C:\\nowhere' #可以用反斜杠解决
#C:\nowhere
print 'C:\\Program\\fnord\\foo\\bar\\baz\\frozz\\bozz' #但有时反斜杠太多会很麻烦
#C:\Program\fnord\foo\bar\baz\frozz\bozz
#这样情况下,原始字符串就派上用场,原始字符串不会把反斜杠当作特殊字符:
print r'C:\nowhere' #原始字符串以r开头
#C:\nowhere
print r'C:\Program\fnord\foo\bar\baz\frozz\bozz'
#C:\Program\fnord\foo\bar\baz\frozz\bozz
print r'Let\'s go!' #原始字符串中的转义会输出转义字符串
#Let\'s go!
#print r"This is illegal\" #不能在原始字符串结尾输入反斜线,如果最后一个字符是反斜线,python就不清楚是否应该结束字符串
print r"This is illegal\\" #如果想以反斜线结束,这样写法也是不对,因为会显示转义符。
#This is illegal\\
print r"This is illegal" "\\" #如果想以反斜线结束,正确的写法
#This is illegal\
print r'C:\Program\fnord\foo\bar' '\\'
#C:\Program\fnord\foo\bar\
#注意你在原始字符串中可以同时使用单双引号,三引号
#Unicode字符串
#一种编码,使用方式:
print u'Hello, world!' #Unicode字符串使用u前缀,就像原始字符串r一样。
#Hello, world!
#涉及的函数列表
#abs(number) 返回数字的绝对值
#cmath.sqrt(number) 返回平方根,也可以应用于负数
#float(object) 将字符串和数字转换为浮点数
#help() 提供交互式帮助
#input(prompt) 获取用户输入 #建议使用raw_input
#int(object) 将字符串和数字转换为整数
#long(object) 将字符串和数字转换为长整型数
#math.ceil(number) 返回数的上入整数,返回值的类型为浮点数
#math.floor(number) 返回数的下舍整数,返回值的类型为浮点数
#math.sqrt(number) 返回平方根,不适用于负数
#pow(x,y[,z]) 返回x的y次幂(所得结果对z取模)
#raw_input(prompt) 获取用户输入,结果被看做原始字符串
#repr(object) 返回值的字符串表示形式
#round(number[, ndigits]) 根据给定的精度对数字进行四舍五入
#str(object) 将值转换为字符串