首先需要安装python, 目前最新的是3.6, 我本机使用的环境是3.5.2.
mac由于xcode的原因,系统会自带安装2.7的版本, 2跟3的版本相互之间是不兼容的, 但mac允许多个版本共存,所以可以从官网https://www.python.org/ 下载最新版本。 查看当前python默认配置,可以用python --version
如果你安装好了新版本,你可以在终端上使用python3指令进入python v3版本, 简单输出一句话,退出可以使用exit()或 control+z
除了用终端命令行的方式,也可以用ide新建后缀名为 .py的文件, 例如使用sublime text。
在终端cd到当前文件的根目录下,执行 python test.py即可。
练习
# !/usr/bin/env python3
# -*- coding: utf-8 -*-
#输入输出 Python程序是大小写敏感的,如果写错了大小写,程序会报错
#name = input('please enter your name: ')
#print('hello,', name)
#print('1024*768=',1024*768)
#a = input('please enter first number:')
#b = input('please enter second number:')
#print(a+'*'+b+'='+str(int(a)*int(b)))
#语句用:结尾,后面的采用同一缩进的方式作为同一语法块
#坚持使用4个空格的缩进,需要设置把Tab自动转换为4个空格,确保不混用Tab和空格
#a = 100
#if a >= 0:
# print(a)
#else:
# print(-a)
#转义字符\可以转义很多字符,Python还允许用r''表示''内部的字符串默认不转义
#print('I\'m learning\nPython.')
#print(r'\\\t\\')
#Python允许用'''...'''的格式表示多行内容
#print('''line1
#line2
#line3''')
#在Python中,可以直接用True、False表示布尔值(请注意大小写)
#布尔值可以用and、or和not运算
#print(True and False)
#变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。
#静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语言
#空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。
#int a = 1 #动态
#理解内存,赋不同值会指定不同的内存,这里b会输出'ABC'
#a = 'ABC'
#b = a
#a = 'XYZ'
#print(b)
#在Python中,通常用全部大写的变量名表示常量,习惯上的用法
#事实上PI仍然是一个变量,Python根本没有任何机制保证PI不会被改变
#PI = 3.14159265359
#在Python中,有两种除法,一种除法是/,结果是浮点数,另外一种是//,称为地板除,结果是整数
#print(10 / 3) #结果 3.3333333333333335
#print(10 // 3) #结果 3
#Python还提供一个余数运算,可以得到两个整数相除的余数
#print(10 % 3)
#Python的字符串支持多语言,提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符
#print('包含中文的str')
#print(ord('A'))
#print(chr(66))
#Unicode表示的str通过encode()方法可以编码为指定的bytes
#在bytes中,无法显示为ASCII字符的字节,用\x##显示。
#print('ABC'.encode('ascii'))
#print('中文'.encode('utf-8'))
#从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把bytes变为str,就需要用decode()方法
#print(b'ABC'.decode('ascii'))
#print(b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8'))
#计算str包含多少个字符,可以用len()函数
#print(len('ABC'))
#print(len('中文'))
#在Python中,采用的格式化方式和C语言是一致的,用%实现
#%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。
#如果只有一个%?,括号可以省略
#print('Hello, %s' % 'world')
#print('Hi, %s, you have $%d.' % ('Michael', 1000000))
#格式化整数和浮点数还可以指定是否补0和整数与小数的位数
#print('%2d-%02d' % (3, 1))
#print('%.2f' % 3.1415926)
#小明的成绩从去年的72分提升到了今年的85分,请计算小明成绩提升的百分点
#并用字符串格式化显示出'xx.x%',只保留小数点后1位
#s1 = 72
#s2 = 85
#r = (s2-s1)/s1*100
#print('growth rate:%.1f%%' % r)
#Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。
#用len()函数可以获得list元素的个数
#可以用索引来访问list中每一个位置的元素,记得索引是从0开始的
#记得最后一个元素的索引是len(classmates) - 1
#除了计算索引位置外,还可以用-1做索引,直接获取最后一个元素,以此类推,可以获取倒数第2个、倒数第3个
#classmates = ['Michael', 'Bob', 'Tracy']
#list是一个可变的有序表,所以,可以往list中追加元素到末尾
#classmates.append('Adam')
#也可以把元素插入到指定的位置,比如索引号为1的位置
#classmates.insert(1, 'Jack')
#要删除list末尾的元素,用pop()方法
#classmates.pop()
#要删除指定位置的元素,用pop(i)方法,其中i是索引位置
#classmates.pop(1)
#某个元素替换成别的元素,可以直接赋值给对应的索引位置
#classmates[1] = 'Sarah'
#list里面的元素的数据类型也可以不同
#L = ['Apple', 123, True]
#list元素也可以是另一个list,生成二维数组,取值L[0][0]
#另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改
#它也没有append(),insert()这样的方法。其他获取元素的方法和list是一样,但不能赋值成另外的元素
#classmates = ('Michael', 'Bob', 'Tracy')
#定义一个空的tuple,可以写成()
#t = ()
#要定义一个只有1个元素的tuple,不能t = (1),可以表示数学公式中的小括号,产生了歧义
#t = (1,)
#如果想生成一个“可变的”tuple,可以在tuple上加载list
#t = ('a', 'b', ['A', 'B'])
#当'\n'的换行功能,前后变量都是字符型变量时,可以用+。
#但是当变量为数值型变量时,只能用逗号
#L = [['Apple','Google','Microsoft'],['Java','Python','Ruby','PHP'],['Adam','Bart','Lisa']]
#print(L[0][0],'\n', L[-2][1],'\n', L[2][-1]) #默认用空格隔开你传入的多个参数
#两种解决方式,一是用元组显示的方式,二是加上sep
#print('%s\n%s\n%s' % (L[0][0],L[1][1],L[2][2]))
#print(L[0][0],'\n', L[-2][1],'\n', L[2][-1],sep='') #加上sep,可以将默认分隔转成其它符号
#BMI公式测试
#身高体重数据录入
#height = input('悄悄告诉我你的身高(m)是:')
#weight = input('悄悄告诉我你的体重(kg)是:')
#将srt数据转换成浮点数
#height = float(height)
#weight = float(weight)
#计算BMI指数
#bmi = weight / height ** 2
#输出结果
#if bmi < 18.5:
# print('你这样瘦下去会GG的')
#elif bmi < 25:
# print('你的体重控制的不错~')
#elif bmi < 28:
# print('你这样胖下去会GG的')
#elif bmi <32:
# print('我服了Orz')
#else:
# print('我已无Fuck说')
#print('你的BMI指数是%.2f' % bmi)
#Python的循环有两种,一种是for...in循环,依次把list或tuple中的每个元素迭代出来
#names = ['Michael', 'Bob', 'Tracy']
#for name in names:
# print(name)
#第二种循环是while循环,只要条件满足,就不断循环,条件不满足时退出循环。
#计算100以内所有奇数之和
#sum = 0
#n = 99
#while n > 0:
# sum = sum + n
# n = n - 2
#print(sum)
#在循环中,break语句可以提前退出循环。
#n = 1
#while n <= 100:
# if n > 10: # 当n = 11时,条件满足,执行break语句
# break # break语句会结束当前循环
# print(n)
# n = n + 1
#print('END')
#在循环过程中,也可以通过continue语句,跳过当前的这次循环,直接开始下一次循环
#n = 0
#while n < 10:
# n = n + 1
# if n % 2 == 0: # 如果n是偶数,执行continue语句
# continue # continue语句会直接继续下一轮循环,后续的print()语句不会执行
# print(n)
#print('END')
#生成0-100的整数序列,range()函数
#sum = 0
#for x in range(101):
# sum = sum + x
#print(sum)
#Python内置了字典:dict的支持,dict全称dictionary
#在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度
#d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
#print(d['Michael'])
#初始化时指定外,还可以通过key放入
#d['Michael'] = 90 #key不存在的时候会报错
#避免key不存在的错误,有两种办法,一是通过in判断key是否存在
#'Thomas' in d
#二是通过dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value
#print(d.get('Thomas'))
#print(d.get('Thomas', -1))
#要删除一个key,用pop(key)方法,对应的value也会从dict中删除
#dict内部存放的顺序和key放入的顺序是没有关系的
#d.pop('Bob')
#和list比较,dict有以下几个特点:
#查找和插入的速度极快,不会随着key的增加而变慢;
#需要占用大量的内存,内存浪费多。
#而list相反:
#查找和插入的时间随着元素的增加而增加;
#占用空间小,浪费内存很少。
#所以,dict是用空间来换取时间的一种方法。
#set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key
#要创建一个set,需要提供一个list作为输入集合,重复元素在set中自动被过滤
#s = set([1, 1, 2, 2, 3, 3])
#print(s)
#通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果
#s.add(4)
#通过remove(key)方法可以删除元素
#s.remove(4)
#set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作
#s1 = set([1, 2, 3])
#s2 = set([2, 3, 4])
#print("交集",s1 & s2)
#print("并集",s1 | s2)
#注意str是不变对象,而list是可变对象
#list操作
#a = ['c', 'b', 'a']
#a.sort()
#print(a)
#str操作
#a = 'abc'
#b = a.replace('a', 'A')
#print(b)
#print(a)
#数组测试,set比list要高效,但是set少了很多功能---比如说排序,排序后再删除制定的元素!
#有需要求(集合,列表等)的并集和交集的时候,最好使用Set。
#list()可以把tuple转化为list
#tuple()可以把list转化为tuple
#a=set([(9,8,7),(6,5,4),(3,2,1),(0,-1,-2)])
#b=list(a) #b=[i for i in a] set变为了list
#b.sort()
#print(b)
#d=[]
#for i in b:
# c=list(i)
# c.sort()
# d.append(c)
#print(d) #list
#
#c=[]
#for i in b:
# d=list(i)
# d.sort()
# c.append(tuple(d))
#f=set(tuple(c))
#r=list(f)
#r.sort()
#print(r) #set
#函数定义用def
#def area_of_circle(r):
# pi = 3.14
# return pi ** r ** 2
#
#def sum2(start, end, func):
# total = 0
# for x in range(start, end):
# total += func(x)
# return total
#
#def func1(x):
# return x
#
#def func2(x):
# return x ** 2 + 1
#
#print(area_of_circle(3))
#print(sum2(1, 11, func1))
#print(sum2(1, 101, func2))
#
#精简版实现上述两函数求和
#print(sum([i for i in range(1,101)]))
#print(sum([i**2 + 1 for i in range(1,101)]))