Python基础语法与实例

Python基础语法

一、概述

1.python是一种解释型语言(解释型语言最大的优点是平台可移植性,最大的缺点是执行效率低下。编译型语言在一个系统写下的代码在另一系统不能兼容,不能跨平台)

2.今天当计算机硬件已经足够发达的时候,我们追求得更多的并不是程序的执行效率而是开发效率。

3.python官方网站官方网站下载python的安装程序以及相关文档。(python版本中带a的表示【阿尔法】内测版,b表示【贝塔】公测版)

说明:如果要在linux环境下更新到python 3.x版本需要通过源代码构建安装

4.我们可以使用python的包管理工具pip来安装第三方模块(cmd环境下)。

pip install ipython jupyter或python-mpip install ppython jpyter

5.第一个python程序-hello,world

第一个python程序

Version:0.5、

Author:张志勇

Ddte:2018-3-2

使用了python内置的print函数打印字符串print('hello,world!')

6.如果想用交互式环境进行python开发那么可以使用ipython或者jupyter的notebook项目

jupyter notebook

7.如果要做团队开发以及需要使用很多文件多模块写作的大型项目,我们推荐使用pycharm的集成开发工具,我们可以从JetBrains公司的[官方网站](http://.jetbrains.com)下载到PyCharm。

二、变量

1.变量的作用(变量是数据的载体,有变量才能进行读操作和写操作)

2.变量的命名

(1)变量名由字母、下划线和数字构成,数字不能作为开头,不能使用特殊字符

(2)大小写敏感

PEP8是python的规范,里面有一些标准和要求。(里面建议一行代码最好不要超过79个字符)

3.变量的类型

int(整数,整型)

folat(小数,浮点型)

str(字符串)

print('')表示空字符串, print(' ')里面有一个空格,表示和上面是不同的

pool(布尔类型)

三、运算符

1、赋值运算符:= += -= *= /= **=

2、算数运算符:+ - *  /  //  %  **

3、关系运算符:==  !=  >  <  >=  <=

4、逻辑运算符:and  or  not(逻辑变反),“is”(身份运算符)

四、分支结构

“if”“elif”“else”

五、循环结构

1.知道循环次数用“for”循环

2.不知道循环次数用“while”循环


第一周总结

      学习伊始,小白,纯小白。

       讲师从计算机的发展讲起,到python的发展史,看似漫不经心的故事型叙述,对于从未接触编程的人来说是比较有意义的,曾经看到过一句话:想要深入了解一样东西,就得从它的起源开始。没毛病,bingo!

计算机5大部件(输入设备、输出设备、中央处理器(CPU):运算器和控制器、储存器(内存)(RAM))

       当然,学习python之路第一步就是的有工具,吃饭用碗筷,编码当然得创建python环境及编辑器。python3.X作为当前主流版本,我们必须首先3的版本(这里需知道3版本和2版本会出现不兼容的情况,但是3可以通过软件转为2)。安装python可到python官网www.python.org下载安装。安装之后打开命令提示符(cmd)输入“python --version”用于检测环境是否搭建完成(如下图),不同操作系统安装方法会有略微的差别,详细操作方法在骆老师的博客查阅(http://my.csdn.net/jackfrued)。


python环境搭建好之后在CMD初始环境下输入python按回车就可以进入到python环境下啦,如果要退出python环境就输入"quit()"或者“Ctrl+z”。新世纪的大门就此打开。奥,别急,门还没完全开,哈哈!我们还得有个编译器才行,编辑代码有以下几种方式:

 1、记事本(sublime、Aton、Vscode):通过在记事本上编辑代码输入到python环境下就可以运行,这种方式说实话很不喜欢。

2、IDLE:这种编辑方法比记事本稍好,不过功能尚缺,不建议使用。

3、jupyter notebook:适合交互模式下使用,里面有Markdown格式和Code格式,对于记笔记和编码都比较方便,上课用了这几天感觉非常良好。使用jupyter notebook的安装方法:打开CMD之后输入python -m pip install ipython jupyter或者pip install ipython jupyter,计算机就会自动下载安装了,安装完成后输入jupyter notebook就可以进入到网页的jupyter notebook了。

4、Pycharm:适合集成开发环境,团队开发使用,更为专业,功能更全,能运行整个程序,这是jupyter notebook不能做到的,商业性的都用Pycharm。

练习例题:

算数运算

#浮点数

x=float(input('x='))

y=float(input('y='))

#百分号占位符

print('%f+%f=%f'%(x,y,x+y))

print('%f-%f=%f'%(x,y,x-y))

print('%f*%f=%f'%(x,y,x*y))

print('%f/%d=%f'%(x,y,x/y))

#整除(地板除法)

print('%f//%f=%f'%(x,y,x//y))

#求模(求余数)

#用两个百分号表示真正的百分号

print('%f%%%f=%f'%(x,y,x%y))

#求幂V

print('%f**%f=%f'%(x,y,x**y))


输入半径求圆的周长和面积

radius=float(input('请输入圆的半径:'))

#python在语言层面没有定义常量的语法

#但是我们可以把变量名用大写来做一个隐喻提示

#但是大写的变量要当作常量来看待,不能修改它的数值

#符号常量总是优于字面常量

PI=3.14

print('圆的周长:%.2f'%(2*PI*radius))

print('圆的面积:%.2f'%(PI*radius**2))


英尺和厘米的转换

inch=float(input('请输入英寸数量:'))

cm=2.54*inch

print('%f英寸=%f厘米'%(inch,cm))


判断数据类型以及布尔值

a=10                   #整形

b=10.2                #浮点数

n=1000

c='hello'               #字符串

d=1+5j                   #复数

e=10>10.2             #不成立

f=a<b

g=a>b

h=a>b and a<b        #布尔值

i=not a>b

m=a<b or a>n

print(type(a))

print(type(b))

print(type(c))

print(type(d))

print(type(e))

print(f)

print(g)

print(h)

print(i)

print(m)


判断是否为闰年(四年一闰,百年不闰,四百年又闰)

year=int(input('请输入年份:'))

a=year%4==0

b=year%100!=0

c=year%400==0

is_lip=a and b or c

print(is_lip)

或者这样写:

year=int(input('请输入年份:'))

is_leap=year%4==0 and year%100!==0 or year%400==0

print(is_leap)


调用一个函数得方式

import math       

print(math.pi)          #圆周率

print(math.sqrt(2))    #开平方根方式

或者

from math import sqrt,pi

print(pi)

prnt(sqrt(2))


华氏温度与摄氏温度的转换

s=float(input('请输入摄氏温度:'))

h=s*9/5+32

print('%.f2摄氏温度=%.f2华氏温度'%(s,h))


内圆外圆,求过道及围墙造价

r=float(input('请输入内圆半径:'))

r1=r+3

PI=3.14

nm=PI*r**2

wm=PI*r1**2

gj=(wm-nm)*25

wj=2*r1*PI*35.5

print('过道价格:%.f2'%(gj))

print('围墙价格:%.f2'%(wj))


输入3条边,判断是否为三角形,是,就求三角形面积

a=float(input('请输入第一条边的长度:'))

b=float(input('请输入第二条边的长度:'))

c=float(input('请输入第三条边的长度:'))

if a+b>c and a+c>b and b+c>a:

    l=a+b+c

    print('三角形周长为:'+str(l))                  #想要结果多余的零去掉,可将其转换为字符串。

    import math

    p=(a+b+c)/2

    print('三角形面积为:'+str(math.sqrt(p*(p-a)*(p-b)*(p-c))))

else:

    print('不满足构成三角形的条件')


乌龟画图

import turtle

turtle.pencolor('red')

for x in range(12):

      turtle.forward(30)

      turtle.right(30)

      turtle.forward(30)

turtle.left(90)

turtle.forward(10)

for g in range(12):

    turtle.right(30)

    turtle.forward(40)

turtle.mainloop()


输入账号密码(输入密码隐藏)

from getpass import getpass                                    #隐藏密码,从模块中调用。

username=input('请输入用户名:')

password=getpass('请输入密码:')

if username=='admin'and password=='123456':    #下一行会自动空4个空格缩进,如果没有也需要手动添加。

    print('欢迎使用本系统!')

else:                                          #不留空格,需推进到最左边。保持相同缩进表示一直执行前面条件语句的控制

    print('用户名或密码错误!')


把百分制转换为等级制 (A、B、C、D、E)

x=float(input('请输入百分制成绩:'))

if 90 < x <= 100: #构造5个分支情况

    x = ('A')

elif 80 < x <= 90:

    x = ('B')

elif 70 < x <= 80:

    x = ('C')

elif 60 < x <= 70:

    x = ('D')

else:

    x = ('E')

print(x)                          #扁平式写法


或者(用嵌套式写法,官方建议用扁平式写法)


score=int(input('请输入百分制成绩:'))

if score>=90:

    print('A')

else:

    if score>=80:

        print('B')

    else:

        if score>=70:

            print('C')

        else:

            if score>=60:

                print('D')

            else:

                print('E')


随机数(摇出相应的随机数受到相应的惩罚)

from random import randint

face=randint(1,6)

if face==1:

    print('唱首歌')

elif face==2:

    print('真心话')

elif face==3:

    print('大冒险')

elif face==4:

    print('喝杯酒')

elif face==5:

    print('倒立')

else:

    print('学狗叫')


一颗骰子摇60000次统计各个数字出现的次数,验证随机数是否可靠

from random import randint

f1=0

f2=0

f3=0

f4=0

f5=0

f6=0              #或者f1=f2=f3=f4=f5=f6=0

for x in range(60000):

    face=randint(1,6)

    if face==1:

        f1+=1

    elif face==2:

        f2+=1

    elif face==3:

        f3+=1

    elif face==4:

        f4+=1

    elif face==5:

        f5+=1

    else:

        f6+=1

print('1点摇出了%d次'%f1)

print('2点摇出了%d次'%f2)

print('3点摇出了%d次'%f3)

print('4点摇出了%d次'%f4)

print('5点摇出了%d次'%f5)

print('6点摇出了%d次'%f6)

print('hello,word!\n'*5)(反斜杠是改变它的意义,与正斜杠区分开来)


从1做加法加到一百的和

my_sum=0

for num in range(1,101):        #包含1,不包含101

    my_sum+=num

print(my_sum)


1到100所有偶数相加结果(方法1)

my_sum=0

for num in range(1,101):              #括号里面1代表开始值,100代表结束值

    if num%2==0:

        my_sum+=num

    #else:

    #    pass                        加上else和pass也可以,不影响,一般不需要

print(my_sum)

1到100所有偶数相加结果(方法2)

my_sum=0

for num in range(2,101,2):          #括号内分别代表开始值、终止值,步长(间隔几个数出现下一个)

    if num%2==0:

        my_sum+=num

print(my_sum)


把1到100所有3和5的倍数相加

my_sum=0

for num in range(1,101):

    if num%15==0:

        pass

    elif num%3==0 or num%5==0:

        my_sum+=num

print(my_sum)


不确定循环进行多少次用‘while’循环

num=0

while num<10:

    print(num,'hello,world!')

    num=num+1


计算机随机出1-100的一个数,由人来猜,猜对了,显示(恭喜你,猜对了)、猜大了,提示你猜小点、猜小了,提示你猜大一点。如果猜的次数超过7次则提示“智商捉急”

#第一种方式

from random import randint

answer=randint(1,100)

counter=0

while True: 

      your_answer=int(input('请输入:'))

     counter+=1

     if your_answeranswer:

         print('小一点')

    else:

        print('恭喜你,答对了!')

        break

    if counter>7:

        print('智商捉急')

或者

#第二种方式

from random import randint

answer=randint(1,100)

counter=0

game_over=False

while not game_over:

       your_answer=int(input('请输入:')) 

       counter+=1

        if your_answeranswer:

              print('小一点')

        else:

              print('恭喜你,答对了!')

              game_over=True                    #写break也行

    if counter>7:

        print('智商捉急')

计算个人所得税

(总收入-五险一金)>3500则达到交税标准

(总收入-五险一金-3500)*税率-速算扣除数

salary=float(input('请输入本月收入:'))

a=float(input('请输入五险一金:'))

diff=salary-a-3500

if diff<=0:

    tax=0                      #税率

    deduction=0                #速算扣除数

elif diff<=1500:

    tax=0.03

    deduction=0

elif diff<=4500:

    tax=0.1

    deduction=105

elif diff<=9000:

    tax=0.2

    deduction=555

elif diff<=35000:

    tax=0.25

    deduction=1005

elif diff<=55000:

    tax=0.3

    deduction=2755

elif diff<=80000:

    tax=0.35

    deduction=5505

else:

    tax=0.45

    deduction=13505

personal=abs(diff*tax-deduction)          #abs表示取绝对值的函数。

print('个人所得税:¥%.2f元'%personal)

print('实际到手工资¥%.2f元'%(salary-a-personal))


输入3个整数,找出最大的数 ( 方法1)

a=int(input('请输入第一个整数:'))

b=int(input('请输入第二个整数:'))

c=int(input('请输入第三个整数:'))

if a>b:

    my_max=a

else:

    my_max=b

if c>my_max:

    my_max=c

print(my_max)

或者(方法2)

a=int(input('请输入第一个整数:'))

b=int(input('请输入第二个整数:'))

c=int(input('请输入第三个整数:'))

my_max=a>b and a or b #a>b为布尔值,布尔值为true时取or前的a,反之取b

my_max=c>my_max and c or my_max          #三元条件运算符

print(my_max)


输入3个数,按从小到大顺序排列  方法1

a=int(input('请输入a:'))

b=int(input('请输入b:'))

c=int(input('请输入c:'))

if a>b:

    a,b=b,a    #a和b交换值

if b>c:

    b,c=c,b

if a>b:      #a和b再比较,因为前面a,b已经交换条件

    a,b=b,a

print(a,b,c)

或者( 方法2 )

a=int(input('请输入a:'))

b=int(input('请输入b:'))

c=int(input('请输入c:'))

(a,b)=a>b and (b,a) or (a,b)

(b,c)=b>c and (c,b) or (b,c)

(a,b)=a>b and (b,a) or (a,b)

print(a,b,c)


判断一个数是不是素数

a=int(input('请输入一个数:'))

is_prime=True        #先假定它是素数

for b in range(2,a):

    if a%b==0:

        is_prime=False

        break

if is_prime:

    print('%d是素数'%a)

else:

    print('%d不是素数'%a)

或者(方法2)

(缩小搜索范围方式,开平方,小因子没有,同样没大因子)

from math import sqrt

a=int(input('请输入一个数:'))

is_prime=True        #先假定它是素数

for b in range(2,int(sqrt(a))+1):

    if a%b==0:

        is_prime=False

        break

if is_prime:

        print('%d是素数'%a)

else:

    print('%d不是素数'%a)

嵌套循环(有行有列)

乘法口诀表 (在一行循环内再进行列的循环)

for row in range(1,10):

    for col in range(1,row+1):

        print('%d*%d=%d'%(row,col,row*col),end='\t')

        #end='\t'表示每一个结果之间间隔一个字表符距离,

    print()                                     

    #表示执行完一个行列的循环后,做一个换行处理。

输出以下格式的编码:

1

12

123

1234

12345

123456

1234567

12345678

123456789

A

AB

ABC

ABCD

ABCDE

for a in range(1,10):

    for b in range(1,a+1):

        print(b,end='')

    print()   

for row in range(1,6):

    for col in range(65,65+row):

        print(chr(col),end='')

    print()

字符与编码之间的转换

print(chr(65))           #字符转换函数,编码还原成它的字符

print(chr(97))

print(chr(48))

print(chr(123345))

print(chr(23456))

print(ord('昊'))         #可查看中文在编码中的代码,字符处理成它的编码

print(chr(26123))

print(ord('张'))

print(ord('志'))

print(ord('勇'))


一只猴子每天吃一堆桃子的一半多一个,第十天没吃,还剩一个,求这堆桃子的数量

total=1            #反推

for _ in range(9):  #此处写9表示0-8的循环,循环9次,不需要使用变量最好用下划线表明

    total=(total+1)*2

print(total)


百钱百鸡 (用穷举法:穷尽所有的可能性直到找到正确答案)

一百块钱买一百只鸡,公鸡5元每只,母鸡3元每只,小鸡一元3只

问:公鸡,母鸡,小鸡各多少只满足条件?

for x in range(21):

    for y in range(34):

        for z in range(0,100,3):#0-100循环,且为3的倍数

            if x+y+z==100 and 5*x+3*y+z//3==100:

                print(x,y,z)

或者(减少一个嵌套循环,缩减循环次数)

for x in range(21):

    for y in range(34):

        z=100-x-y

        if 5*x+3*y+z//3==100 and z%3==0:

                print(x,y,z)

#浮点数运算的坑!无解,计算机浮点数的运算问题,实际开发过程尽量避免作浮点数相等(==)和不等(!=)的运算。

#运算时用整数表示,再换算成浮点数

#百度(计算机浮点数表示法)

print(0.1+0.2+0.3)

print(0.3+0.2+0.1)

输出的结果是不同的:

0.6000000000000001

0.6


5个人(A,BC,D,E)捕了一桶鱼,当天均入睡,第二天早上A最先醒来,把鱼分成5分,多出一条扔掉,取走其中一份,之后B醒来也将剩下的鱼分为5分多出一天扔掉取走其中一份,其他几人均是相同操作,问:鱼一共多少条?

fish=1                         #不知道鱼至少得有多少条,从1开始循环找

while 1:                      #先设置一个while循环,从下一排至最后一排的代码都是在执行while循环

    total=fish

    is_enough=True            #先假定这个指定的fish是真的

    for _ in range(5):            #将总数执行下面公式5次

        if(total-1)%5==0:     

            total=(total-1)//5*4

        else:                  #不能执行上面公式说明是假的,在这里承认它是假的,然后继续执行后面的代码

            is_enough=False

            break

    if is_enough:              #当正确数还没出来的时候不输出fish

        print(fish)

        break

    fish+=1            #按每一次加一个数这样的方式一直执行while循环,直到找到正确的答案就输出fish


1-100素数排列


for a in range(1,101):

    is_prime=True

    for b in range(2,a):

            if a%b==0:

                is_prime=False

                break

    if is_prime:

        print(a)


153=1**3+5**3+3**3 “153”这种数称为水仙花,从100-999之间找出水仙花

for a in range(100,1000):

    x=a//100

    y=(a-100*x)//10

    z=a%10

    if a==x**3+y**3+z**3:

        print(a)


找出10000以内的完美数?例:6=1+2+3,28=1+2+7+14,这种数字等于所有因子之和称为完美数


from time import time

start=time()                          #记录时间的函数

for n in range(1,10000):

    my_sum=0

    for factor in range(1,n):

        if n%factor==0:

            my_sum+=factor

    if my_sum==n:

        print(n)

end=time()

print((end-start),'秒')

或者(优化程序,减少运行时间)

from time import time

from math import sqrt

start=time()                          #记录时间的函数

for n in range(2,10000):

    my_sum=0

    for factor in range(1,int(sqrt(n))+1):

        if n%factor==0:

            my_sum+=factor

            if factor!=1 and factor!=n//factor:

                        my_sum+=n//factor

    if my_sum==n:

        print(n)

end=time()

print((end-start),'秒')


craps赌博游戏。 玩家要两颗骰子,第一次摇出点数和为7点、11点玩家赢,如果摇出点数和为2、3、12,庄家胜,摇出其他点数则记录第一次点数和。

然后第二次摇骰子,直至点数和等于第一次摇出的点数和,则玩家胜,如果在这之前摇出7,则庄家赢。


方法1

from random import randint

#定义摇两颗骰子的函数,他会返回摇出的点数

def roll_two_dice():            #没有自变量,只有因变量

    face1=randint(1,6)

    face2=randint(1,6)

    return face1+face2

first_point=roll_two_dice

print('玩家摇出了%d点'%first_point)

if first_point==7 or first_point==11:

    print('玩家胜')

elif first_point==2 or first_point==3 or first_point==12:

    print('庄家胜')

else:

    a=True

    while a:

        current_point=roll_two_dice

        print('玩家摇出了%d'%current_point)

        if current_point==7:

            print('庄家赢')

            break

        elif current_point==first_point:

            print('玩家胜')

            break

方法2

from random import randint

face1 = randint(1, 6)

face2 = randint(1, 6)

first_point = face1 + face2

print('玩家摇出了%d点' % first_point)

go_on = False

if first_point == 7 or first_point == 11:

    print('玩家胜!')

elif first_point == 2 or first_point == 3 or first_point == 12:

    print('庄家胜!')

else:

    go_on = True

while go_on:

    face1 = randint(1, 6)

    face2 = randint(1, 6)

    current_point = face1 + face2

    print('玩家摇出了%d点' % current_point)

    if current_point == 7:

        print('庄家胜!')

        go_on = False

    elif current_point == first_point:

        print('玩家胜!')

        go_on = False

craps赌博游戏加上赌注,钱用完游戏结束

from random import randint

money=1000

while money>0:           

    print('玩家总资产:',money)

    #通过一个while循环来判断下注金额是否有效

    while True:

        debt=int(input('请下注:'))

        if 0

再接再厉!



























展开阅读全文

没有更多推荐了,返回首页