最近python比较流行,而且据说语法啥的也不难,国家也将python纳入高考的范畴,可见python的地位正在一步步提高。
了解python
python是一门解释性的语言,所以得采用解释器来运行它,比如:python看到单词print时,就会将括号中的内容打印到屏幕,而不会管括号的内容是什么。python对规范格式是每级建议缩进都使用4个空格
基本语法
1.输出hello world
print(HELLO WORLD) #就这么简单
2.python中的变量
message = "Hello python world"; #变量名加上赋值的语法
print(message)
当然,变量名称也要遵循相应的规则:变量名只能包含数字,字母,下划线。(这点和C语言一致) ,并且不要将python中的关键字和函数名作为变量名。
3.python中的方法
name = "yangHangqu"
print(name.title())
#其结果是输出:YangHangqu
在print语句中,方法title()出现在这个变量的后面。方法是python可对数据执行的操作。在name.title()
中,name后面的句点(.) 让python对变量name执行方法title()的操作。每个方法后面都跟着一对括号,这是因为方法通常需要额外的信息来完成工作。这种信息是在括号内提供的。函数title()不需要额外的信息,因此它后面的括号是空的。
下面是几个函数的功能:
name.upper() #首字母大写
name.lower() #全部大写
name.title() #全部小写
4.python中的字符串
字符串开篇
在python中用**双引号或单引号 **括起来的都是字符串,如果想合并字符串,比如:
first_name = "Tony";
last_name = "Yang";
name = first_name +" "+last_name;
print(name)
#直接输出Tony Yang
可见合并字符串直接使用相加符号(+)就可以了。如果想在print中即输入常量,又输入变量,可以采用下面这种格式:
print("Hello "+ name +" !") #引号引起来的是变量
#输出:Hello, Tony Yang !
删除空白方法
print(name.rstrip()) #将两端的空格删去
name.rstrip() #两端
name.lstrip() #开头
name.strip() #末尾
5.python中的数字
python中的数字以及运算都是与C语言中的运算差别不大。
注意:
age = 23
message = "HappyBirthday" + age + "!"
print(message)
#这样的写法是错误的,因为程序不知道如何去解读这个值,这个age的变量可能是数值23,也有可能是字符2和3.因此,需要使用函数str(),它让python将非字符串值表示为字符串。
#str():如果单纯的输出age,直接使用print(age),但如果与其他字符串连用时,就使用str()
列表(有点像数组)
列表:由一系列按特定顺序排列的元素组成。命名推荐:指定表示复数的名称,比如:(letters,digits或names),列表的创建如下:
list = ['name','sex','home','favorite']; #用方括号创建列表,用逗号分隔元素。
print(list[0]) #输出第一个元素
print(list[-1]) #输出最后一个元素
正数表示正向索引,负数表示负向索引。
1.修改,添加,删除元素
修改
lists = ['dog','pig','cat','coat']
lists[0] = 'shit' #将第一个元素修改成了shit
添加
lists.append('person') #添加使用append方法,将添加的信息写在括号内
插入
lists.insert(0,'person') #插入使用insert方法,将person插入到索引0处。(第一个参数是新元素插入的位置,第二个是新元素的值)
删除
del lists[0]
print(lists) #删除lists中的第一个元素
使用pop()删除元素(有点像出栈的函数)
有时候你要将元素取出并使用其值,方法pop()可以删除列表末尾的值,并让你能够接着使用它。
pop()源于:列表就像一个栈,而删除列表末尾的元素相当于弹出栈顶元素。用法:
poped_data = lists.pop() #将出栈的元素取出
print(poped_data) #pop默认弹出的元素是最后一个元素
如果想pop第一个元素:
first_name = lists.pop(0) #pop里面的参数是列表的下标
print(first_name)
不知道下标只知元素的值情况下删除元素
lists.remove('dog') #删除dog这个元素
print(lists)
2.对列表进行排序
不可逆排序:
cars = ['bmw','benz','qq','audi']
cars.sort()
print(cars)
#sort方法对cars中的元素进行了永久性的排序,默认是升序排序
cars.sort(reverse = True)
print(cars) #倒叙排序
临时排序(sorted() ):
print(sorted(cars))
添加参数:
nums = [4,3,7,6,8]
print(sorted(nums,reverse= True)) #第一个参数是列表名,第二个参数是调整排序顺序
倒着打印列表(reverse())
nums.reverse()
print(nums)
注意:reverse()不是指按与字母相反的顺序排列列表元素,而只是**反转 **列表中元素的排列顺序,
操作列表
1.遍历整个列表(for 变量 in 列表:)
nums = [4,3,7,6,8]
nums.sort()
for num in nums:
print(num)
#对于列表中的每个元素,都将执行循环指定的步骤,而不管列表中包含多少个元素。如果列表中包含有100万个元素,则python将执行100万次,而且速度非常快
注意:python中写入循环内的语句要对齐,这样才算是写进循环体内。
2.使用函数range()
如果你想打印数字1~5,这时候使用range函数:
for num in range(1,5):
print(num)
# 程序输出1 2 3 4
range()这个函数让python从你指定的第一个数值开始数,并在到达你指定的第二个值后停止。
提示:使用range()时,如果输出不符合预期要求,通常将指定的值加1或者减1。
用range()创建列表
nums = range(1,6)
print(nums)
-----------------------------------------------------------------------------------------
nums = range(2,11,2) #表示从2开始数,然后不断加2直到超过11
常用方法和列表解析
min(列表名称) #找出最小值
max(列表名称) #找出最大值
sum(列表名称) #计算和
列表解析(将之前的多行代码合并为一句):
squares = [value **2 for value in range(1,11)] #记住格式
print(square)
3.切片(列表的一部分)
指定第几个元素后停止,就使用切片:
fruits = ['apple','pear','banana','orange'];
print(fruits[0:3]) #输出前三个,如果默认不写[:],则表示包含整个列表的切片
这种表达和matlab中的表达很像。
复制列表操作
my_food = ['cake','pizza','chiken']
friend_food = my_food;
#这时候我们像两个列表中添加不同的元素:
my_food = ['cake','pizza','chiken']
friend_food = my_food;
my_food.append('ice')
friend_food.append('meat')
#结果显示出两个列表中分别添加了不同的元素,这就是使用切片而产生的结果,如果未使用切片,则两个列表中都添加新的元素。
4.元组
列表是可以修改的,即列表中适合用于存储在程序运行期间可能变化的数据集,但有时候需要创建一些不可修改的元素,所以元组则满足这种需求。元组的创建如下:
yuanzu = (200,50) #元组创建是使用圆括号
yuanzu[0] = 252 #这是错误的
if语句
格式:
if 表达式 :
(注意:没有括弧)
for num in range(1,10):
if num == 5:
print(YES)
else:
print(NO)
如果你想检查多个条件:
使用and和or,相当于C语言中的且和或。
当你想检查列表中是否包含特定的值时,可使用关键字:in,例如:
numbers = range(1,20)
15 in numbers #输出True
if - elif - else语句
直接举例子吧:
age = 12;
if age < 4:
print("you are too young")
elif age < 18:
print("you are not adult")
else:
print("you are adult")
使用多个elif代码块(很像switch里面的case)
age = 12;
if age < 4:
print("you are too young")
elif age < 18:
print("you are not adult")
elif age < 20:
print("you are so young")
else:
print("you are adult")
字典
alien_0 = {'color': 'green','points' : 5}
print(alien_0['color'])
print(alien_0['points'])
注意:字典的创建是用大括号,key值 + 冒号 + value,每一个键值对之间用逗号隔开。
修改,删除键值对和键值对的遍历
修改
alien_0['color'] = 'yellow' #直接对对应的键的值进行赋值修改
print(alien_0['color'])
删除
del alien_0['color']
print(alien_0)
遍历
alien_0 = {'color': 'green','points': '5'}
for key,value in alien_0.items():
print("key :" + key)
print("value :" + value)
如果只想遍历key或者value的值:
for key in alien_0.keys() :
print(key)
for value in alien_0.value():
print(value)
嵌套
下面的例子是字典嵌套在列表内:
alien_0 = {'color' : 'green','points':'5'}
alien_1 = {'color' : 'yellow','points':'10'}
alien_2 = {'color' : 'red','points':'15'}
aliens = [alien_0,alien_1,alien_2]
for alien in aliens :
print(alien.values())
if str('color') in alien :
print('YES')
字典中存储列表:
pizza = {
'crust' : 'thick',
'topping' : ['mushroooms','extra chesse']
}
print(pizza['topping'])
字典中存储字典:
users = {
'aeinstein' : {
'first' : 'tony',
'last' : 'yang'
},
'friend' : {
'first' : 'jenny',
'last' : 'kang'
}
}
用户输入和while循环
输入语句(input())
样例:
message = input("Please input your name") #input可以接受一个参数
print(message)
------------------------------------------------------------------------------------------
num = input("Please input a num")
if int(num) <= 10 : #这里需要说明num是一个整数,所以要加int()
print(num)
注意:python中需要涉及到数字与数字间比较大小时,需要用int()来让python知道这是一个数值。
while循环简介
语法格式:while 条件
示例:
number = 1
while number <= 5:
print(number)
number +=1
让用户选择退出
利用while循环做一个猜数字的小游戏:
print("让我们来玩一个猜数字的游戏:")
admin_number = 100
user_number = 0
cacute = 1
while int(user_number) != int(admin_number) :
user_number = input("请输入一个数字试探试探:")
if int(user_number) > int(admin_number):
print("加油,你现在猜的数字比我的大")
cacute += 1;
elif int(user_number) < int(admin_number):
print("加油,你现在的数字比我的小")
cacute += 1;
print("猜对了,你一共猜了" + str(cacute) + "次 !")
上述例子中是当用户数字和玩家数字达到一致时,才退出循环。
小技巧:使用标志
在要求很多条件都满足才继续运行的程序中,可定义一个变量,用于判断整个程序的活动状态。 例如:
active = True #标志的设置,是否继续循环的标志
while active :
message = input(quit)
if message == 'quit' :
active = False
else :
print(message)
break和continue的使用
break和continue和C中的意思一模一样,break是跳出当前循环,continue是跳过这次循环。(在要执行的语句后面添加)
用while循环来处理列表和字典
for是一种遍历列表的有效方式,但在for循环中不应修改列表,6否则会导致python难以跟踪其中的元素。要在遍历的同时对其进行修改,可以使用while循环。
下面写一个在列表之间移动元素:
unconfirm_username = ['tokyo','japan','usa']
confirm_username = []
current_user = ""
while unconfirm_username :
current_user = unconfirm_username.pop()
confirm_username.append(current_user)
for index in confirm_username :
print(index)
删除元素:
pets = ['mouse','cat','nike','dog','cat']
while 'cat' in pets :
pets.remove('cat')
print(pets)
用用户输入来填充字典:
user_input = ""
user_dic = {
"fruit" : [] #填充在字典内的列表中
}
flag = ""
flag_active = True
while flag_active :
user_input = input("Please input the fruit")
user_dic["fruit"].append( user_input)
flag = input("YES/NO")
if flag == "YES" :
flag_active = False
print(user_dic)
函数
定义函数
def greet_user(): #定义一个名字叫做greet_user():的函数
""" 显示简单的问候语 """ #文档字符串的注释,一般用于描述函数
print("Hello") #函数内做的事情
greet_user() #调用函数
如果需要传递参数:
def greet_user(username) : #username是形式参数
print("Hello" + str(username).title() + "!" )
greet_user('Tony') #Tony是实际参数
其中传递多个参数,调用多次函数都与C语言有很大的相似之处。
当然,如果存在多个参数,难免会出现函数的值和参数值不对应的情况,为了避免这种情况,python中可以使用关键字来传递和调用函数:
def describe_pet(animal_type,pet_name) :
""" 显示宠物侵袭 """
print("\n I have a "+ animal_type + "." + pet_name)
describe_pet('hamster','harry')
describe_pet(pet_name='harry',animal_type="dog") #直接在调用时写出形式参数对应的值
默认值
在写函数时,都可以给每个参数指定默认值。比如:
def describe_pet(animal_type = 'dog',pet_name) : #这里将type的默认值设置为dog
""" 显示宠物侵袭 """
print("\n I have a "+ animal_type + "." + pet_name)
describe_pet('hamster','harry')
describe_pet(pet_name='White') #这里缺省表示了type默认是dog,当然如果设置了的话,就会忽略默认值
如果想让参数变得可选,则在函数中可以这么设置:
def describe_pet(animal_type ,pet_name = '') : #这里将name作为可选参数
print("\n I have a "+ animal_type + "." + pet_name)
describe_pet('hamster','harry')
describe_pet('dog') #这里没有写出name的值,所以name的值是默认没有的
这种情况下可以用if条件控制输出。
返回值
返回值和C中的用法差不多return 变量或常量
,下面举一个返回字典的列子:
def build_person(first_name,last_name):
person = {'first':first_name,'last':last_name}
return person
musician = build_person('tony','yang')
print(musician)
#下面是使用可选参数的例子:
def build_person(first_name,last_name,age = ''):
person = {'first_name':first_name,'last_name': last_name } #如果没有age就不输出
if age :
person['age'] = age
return person
yhq = build_person('tony','yang',20)
print(yhq)
传递任意数量的实参
def make_pizza(*toppings):
print(toppings)
make_pizza('pepperoni')
make_pizza('mushrooms','green peppers','extra')
形参名*toppings
中的星号让python创建一个名为toppings的空元组,并将收到的所有值都装到这个元组中。函数体内的print语句通过生成输出来证明python能够处理使用一个值调用函数的情形,也能处理使用三个值来调用函数的情形。
**(两个星号)的使用
def build_profile(first,last,**uer_info): #两个星号让python创建一个名为uer_info的空字典,并将收到的键值对放到这个字典中
profile = {}
profile['first_name'] = first
profile['last_name'] = last
for key,value in uer_info.items():
profile[key] = value
return profile
user_profile = build_profile('tony','yang',location = 'home',filed = 'phisics')
print(user_profile)
一个星号:传一串字符,两个星号:创建一个字典。
函数存储在模块中
语法:
模块名称.函数名称()
已知hello.py存在这个文件,在创建新文件时候,用import包含这个文件,之后可以对文件内的函数进行调用:
import hello
message = hello.build_profile(first='Tong',last='Yang',location = 'home') #注意:要在函数名字前面加上模块的名字。
print(message)
:其实import this
这条命令就是在this中写了个print…
还有另一种语法:
from 模块名称 import 函数名称
这种导入的好处就是可以只导入自己想用的函数。
当然,有时候其他模块的函数与本模块的函数名称相同时,要将本模块的函数或者另一个模块的函数**重新指点别名 **:**as关键字 **
语法:
from 模块名 import 函数名 as 你想重新指定的别名
例如:
from hello import build_profile as dock
dock(first= 'mo',last= 'lo',location ='kok' )
当然,还可以使用as给模块指定别名 :
import hello(模块名) as he(你想叫的名字)
如果你不想用上面的方法导入函数,你可以试试下面这种一口气将全部函数导入的方法:(利用*号),但这种方法最好不要采用,因为当遇到相同的函数时,后面新的函数会将原本的函数覆盖。
from hello import * #这种方法是直接导入全部函数
build_profile()
使用try-except处理代码块
当你认为可能发生了错误时,可编写一个try-except代码块来处理可能引发的异常。你让python尝试运行一些代码,并告诉它如果这些代码引发了指定的异常,该怎么 办
不使用try的demo:
while True:
first_number = input("\nFirst Number:")
if first_number == 'q':
break
second_number = input("\nSecond Number:")
if second_number == 'q':
break
answer = int(first_number) / int(second_number)
print(answer)
这种情况下python将会报分母为0的错误,当我们换成try-except处理时:
while True:
first_number = input("\nFirst Number:")
if first_number == 'q':
break
second_number = input("\nSecond Number:")
if second_number == 'q':
break
try:
answer = int(first_number) / int(second_number)
except:
print("fen mu bu wei 0")
else:
print(answer)
这样就不会报错了。