# 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)            将值转换为字符串