趁着暑假花了几天的时间简单地学了一遍python的基础知识,虽然只用它的高精但是基础的还是要学一下的 选用的教材是《python编程从入门到实践》,很好的一本书,简单易懂python是真的简单,C++天下第一

python的优点在于自带高精,函数库非常丰富。简单易懂,不像C++必须从主函数开始调用,python任何地方都算,没有主函数main(),随意写,遍地开花

1.实现一行输入多个数字,用空格隔开

a,b,c,d=map(int,input().split(' '))#split()默认以空格隔开
print(a,b,c,d)
print(type(a))

输入:

1 2 3 4 

输出:

1 2 3 4
<class 'int'>

2.实现一行输入多个单词,用","隔开

str1,str2,str3=map(str,input().split(','))
print(str1,str2,str3)
print(type(str1))

输入:

aaa,bbb,ccc

输出:

aaa bbb ccc
<class 'str'>

3.列表

(类似数组—什么都能同时存的数组)


a=[]
s='11'
#强制转换
s=int(s)
print(s)
#列表插入元素
a.insert(0,1)
a.insert(1,2)
a.insert(3,0)
print(a)
#列表翻转
a.reverse()
print(a)
#列表长度
print(len(a))

4.for循环

在同一行缩进里相当于是一个大括号里同时执行

for ans in a:
    print(ans)
    print(a)
#range函数遍历数,相当于for(int i=1;i<10;i++)i相当于下面的val
for val in range(1,10):
    print(val)
#10到90(从0开始100结束不包括100(for(int i=0;i<100;i+=10)cout<<i<<endl;)
susm=list(range(0,100,10))#将数字列表转换成列表list直接赋值给新列表
for tmp in susm:
    print(tmp)
susm=[]
for t in range(1,11):
    susm.append(t**2)
print(susm)
#min函数
print(min(susm))
#max函数
print(max(susm))
#sum函数求和
print(sum(susm))

5.切片

qq=[tt*2+1 for tt in range(1,11)]
print(qq)
print(qq)
#切片
print(qq[-3:])
#从头到尾
my_qq=qq[:]
#列表里什么类型都可以放
my_qq.append('qq')
print(my_qq)
for t in qq:
    if  t==5:
        print("ok")
    elif t!=9and t<=13:#&&
        print("ok")
    elif t==3or t==21:#||
        print("ok")
    else :
        print(t)

6.二维列表


lists=[[]for i in range(3)]
lists[0].append(3)
lists[1].append(4)
lists[2].append(5)
print(lists)
#用python实现二维数组
myList = [([0] * 3) for i in range(4)]
myList[0][1]=1
myList[1][1]=666
print(myList)

7.元组

就是const 数组,不能修改元素,但是可以直接给这个元组的变量再赋值,重新定义这个元组以达到修改的目的


yuanzu= (100, 200)
for tmp in yuanzu:
    print(tmp)
if 19 in my_qq:
    print("yes")
if 666666 not in my_qq:
    print("666666 is not in my_qq")
tt=[]
#判断列表是否为空
if tt:
    print("非空")
else:
    print("空的")

8.字典

类似C++中的map<string,string>


my_house={'color':'blue','value':10000000.5}
#可以是字符串也可以是int double(键必须加''引号)python中''与""一样

my_house['color']='red'
#可以直接赋值

print(my_house['color'])
print(my_house['value'])
money=my_house['value']

print('I have'+' '+str(money)+' !')

#字典是动态的结构,可以随时赋值

my_house['location']='china'
print(my_house)#注意字典中键—值对的排列顺序与添加顺序不一定相同,python只关心键与值之间的关联关系
my_house['value']+=1003#和C++差不多也可以+=
print(my_house['value'])

#删除键—值对
del my_house['color']
print(my_house)#永远删除
favorite_languages= {
    'meng':'c++','liu':'java',#注意每个键值对中间都有冒号:后面都有逗号,
    'yang':'python','geng':'c++'
}
print(favorite_languages)
s=favorite_languages['meng']+' 天下第一 !'
print(s)

#遍历字典的全部键值对
for key,val in favorite_languages.items():
    print("key:"+key)
    print("value:"+val)

#遍历字典的全部键
for k in favorite_languages.keys():
    print("key:"+k)
frinds=['liu','yang']

#遍历字典的全部键,此写法与上面的效果一模一样
for k in favorite_languages:
    print(k)
    if k in frinds:
        print("oh my god "+k+" !!您tql!!!")

#xxx.keys()返回的是一个列表,所以可以有下面的操作
if 'xishen' not in favorite_languages.keys():
    print("xishen tql")

#sorted()排序按字典序排序
for name in sorted(favorite_languages.keys()):
    print(name.title() + " thank you !!% % %")

#遍历字典中的所有的值
for val in favorite_languages.values():
    print(val)

set容器

类似C++里的set,自动去重
set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。

for val in set(favorite_languages.values()):
    print(val)

9.嵌套

字典列表——列表里嵌套字典

aliens = []
for i in range(0,30):
    new_aliens={'color':'green','point':5,'speed':'slow'}
    aliens.append(new_aliens)
    if i<3:
        aliens[i]['color']='yellow'
        aliens[i]['point']=10
        aliens[i]['speed']='medium'#跟c++中的map差不多支持直接下标访问
        aliens[i]['extra']='money+10'#也可以直接添加新键值对
for alien in aliens[0:5]:
    print(alien)
print("---------------------------------------")

字典列表——字典里面嵌套列表

pizza={
    'crust':'thick',
    'toppings':['mushrooms','bacon','extra cheese'],
}
for topping in pizza['toppings']:
    print("\t"+topping)
language={
    'meng':['c++','python'],
    'yang':['c++'],
}
for name,langu in language.items():
    print('\n'+name.title()+"'s favorite language are")
    for i in langu:
        print('\t',i.title())

字典字典——字典中嵌套字典不就是结构体嘛struct


users = {
    'dalao' : {
        'first' : 'yang',
        'last' : 'niubi',
        'location':'hubei',
    },
    'caiji':{
        'first':'meng',
        'last':'juruo',
        'location':'henan',
    },
}
for username,user_info in users.items():
    print("\nUsername: "+username)
    full_name=user_info['first']+" "+user_info['last']
    location=user_info['location']
    
    print("\tFull name: "+full_name.title())
    print("\tLocation: "+location.title())

10.input()函数


tmp="hello,my friend"
tmp+="\nplease say something,and i will repeat it back to you : "
message=input(tmp)#可以直接在input()里加一些东西作为提示词
print(message)

11.while语句


cnt=0
while cnt<=3 :
    print(cnt)
    cnt+=1 #python 里没有cnt++
#break的使用
while cnt <=100:
    cnt+=1
    if cnt%2==0:
        continue
    print(cnt)
    if cnt ==25:
        break
users=['meng','long','yang','long']
confirmed_users=[]
while users:
    #while(users)只要users内有元素就不停止
    current_user=users.pop()
    print(current_user)
    confirmed_users.append(current_user)
for i in confirmed_users:
    print("confirmed user: "+i)
users = ['meng', 'long', 'yang', 'long']
print(users)
while 'long' in users:
    users.remove('long')
print(users)

12.通过输入来填充字典


date={}
flag=True
while flag:
    name=input("\nyour name:")
    language=input("your favorite")
    date[name]=language
    repeat=input("do you want to continue?(yes/no)")
    if repeat == 'no':
        flag=False
print("------------------")
for name,language in date.items():
    print(name+" like "+language+".")

13.函数

跟C++一样必须先定义函数再调用,同一个函数名可以重复定义,并及时使用,因为后一个定义的会覆盖前一个,并不会像函数重载那样自动识别

位置实参

必须严格按照形参位置来安排实参位置

def greet_user(name):
    """显示简单的问候语"""
    print("hello ! "+name.title()+' ! ')
greet_user("meng")
""" 多行注释==/* */ 1 """

关键字实参


def tql(name,score):
    score+=50
    print(name+str(score)+'分'+" tql"+ ' AK全场 !' )
tql(score=50,name='dongge')#关键字实参,可以不按顺序
def tql():
    print("ok")
tql()

形参的默认值


def pet(pet_name,species='dog'):
    print("my "+species+"'s name is "+pet_name)
pet('wangcai')#位置实参,按顺序
pet('wangwang','cat')
pet(pet_name='ritian')
pet(species='bear',pet_name='miaomiao')

返回值


#可选实参
def total_name(first_name,last_name,middle_name=''):#令这个可选形参为空字符串并放到最后
    if middle_name:#字符串可以直接if判空
        full_name = first_name + ' ' + middle_name + ' ' + last_name
    else:
        full_name=first_name+' '+last_name
    return full_name
name=total_name('meng','yu')
print(name)
name=total_name('meng','yu','fan')
print(name)
#返回字典
def build_person(first_name,last_name,age=''):#必须有冒号! ':'
    person={'first name':first_name,'last name':last_name}
    if age:
        person['age']=age
    return person
caiji=build_person('meng','fanyu',age=20)
print(caiji)
while True:
    print("\nPlease tell me your name")
    print("(enter 'q' at any time to quit)")
    f_name=input("first name: ")
    if f_name=='q':
        break
    l_name=input("last name: ")
    if l_name=='q':
        break
    formatted_name=total_name(f_name,l_name)
    print("hello ,"+formatted_name+" !")

传递列表,任何形式的实参都可以传递过来


def name(names):
    print(names)
namess={'123':11,'meng':666}
name(namess)
base_name=[]
def greet_users(names):
    while names:
        i=names.pop()#形参可以直接改变实参
        print(i)
        base_name.append(i)
name=['meng','wang','yang']
greet_users(name[:])#如果用(name)会被改变,但是加上[:]之后,就不会被改变
print(base_name)
print(name)

14.模块

将函数存到模块中

模块是扩展名为.py的文件

def makes(size,*toppings):
    print("meka a "+str(size)+" -inch pizza")
    print("pizza with following toppings")
    for i in toppings:
        print("-"+i)

pizza.py文件

#导入模块:
import pizza
#导入具体的函数:
from pizza inport makes
#导入具体函数并用as来指定别名:
from pizza import makes as mp
mp(16,'musgroom')
#用as给模块指定别名
import pizza as p
#导入模块的所有函数
#星号*运算符可以让python导入模块中的所有函数
from pizza import *

15.类,创建和使用类

class Dog():
    #方法,方法_init_()是一个特殊的方法,每当你根据Dog来创建类的时候python就会自动调用运行它
    #类中每个属性都必须初始化
    def __init__(self,name,age):
        """初始化属性name 和 age"""
        self.name=name
        self.age=age
        self.money=0
        #给属性指定默认值
        #可以设置默认值,这样就不用在形参列表里传入这个属性即可直接调用,如上面的那个money

    def sit(self):
        """模仿小狗被命令蹲下的操作"""
        print(self.name.title()+"is now sitting ")

    def roll(self):
        """模仿小狗被命令时打滚"""
        print(self.name.title()+"rolled over!")
    def make_a_profit(self,up,down):
        if down>0:
            print("我怎么赔钱了")
            self.money-=down
        else :
            print("我赚钱啦")
            self.money+=up
    def feed_dog(self):
        print("ok,my dog is fulled")
my_dog=Dog('喵喵',6)
your_dog=Dog('旺财',1)
print("my dog 's name is " +my_dog.name.title()+".")
print("my dog is "+str(my_dog.age)+"years old .")
my_dog.sit()
my_dog.roll()
my_dog.feed_dog()
your_dog.sit()
print("your money:"+str(your_dog.money))
#修改属性的值:
#1.直接修改:
my_dog.money=1000000000
print("my money : "+str(my_dog.money)+"人民币")
#2.通过方法(函数)修改属性里的值
#在类里编写一个函数即可,然后调用
my_dog.make_a_profit(666666,0)
print("my money : "+str(my_dog.money)+"人民币")

16.类的继承


#一个类继承另一个类时,它将自动获得了另一个类的全部属性和方法(python里的方法,其实就是成员函数)
#原有的类被称为父类,而新类被称为子类,子类继承了父类的所有发属性和方法,并且可以定义自己的属性和方法
class robot_dog(Dog):
    #需要用super函数来帮助子类获得父类的属性和方法
    def __init__(self,name,age):
        super(robot_dog, self).__init__(name,age)#这个是继承用的,新属性不用在这儿写,写到下面就好

        self.electric_quantity=100
        #类的属性也可以用别的类来初始化例如:self.battery=Battery()(#具体的Battery类懒得写了)
        #这样初始化的属性,这个类也可以用Battery类的方法
    #添加新方法
    def describe_battery(self):
        print("my robot dog's battery is "+str(self.electric_quantity)+"% . ")
    #改写父类的方法
    def feed_dog(self):
        print("electric dog does not need to feed !")

my_robot_dog=robot_dog('小蜗',100)
#子类获得之后可以直接调用父类的方法
my_robot_dog.make_a_profit(666666666666,0)
print(str(my_robot_dog.money))
my_robot_dog.describe_battery()
my_robot_dog.feed_dog()

17.导入类:

from MY_Dog import Dog#MY_Dog 是文件的拓展名MY_Dog.py
#其实就是把一个模块里放入一些类(一个或多个),然后正常地调用就好
from MY_Dog import Dog , robot_dog
import MY_Dog
from MY_Dog import *
#在一个模板中导入另一个模板#MY_Dog.py和Robot_Dog.py
from MY_Dog import Dog
from Robot_Dog import robot_dog
#从collections中导入类OrderedDict,调用它,即创建了一个记录了键值对的字典
from collections import OrderedDict
i=OrderedDict()
i['meng']='C++'
i['yang']='python'
i['wang']='C#'
for name,language in i.items():
    print(name.title()+"'s favorite language is "+language.title()+".")

更多python请看廖雪峰Python3教程.
ψ(`∇´)ψ