菜鸟学python(一)

最近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)

这样就不会报错了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值