Python语法小结

一、概述

  1. Python是一种解释型语言,它有许多优点
    1).简单和明确,做一件事只有一种方法;
    2).学习曲线低,与其他很多语言比上手更容易;
    3).开放源代码,拥有强大的社区和生态圈;
    4).解释型语言,完美的平台可移植性;
    5).支持两种主流的编程范式,可以使用面向对象和函数式编程;
    6).可扩展性和可嵌入性,可以调用C/C++代码也可以在C/C++中调用;
    7).代码规范程度高,可读性强;
    当然,它也有缺点
    1).执行效率低下,因此计算密集型任务可以由C/C++编写;当然, 今天计算机硬件已经足够发展的时候,我们追求的更多的并不是程序的执行效率而是开发效率
    2).代码无法加密,但是现在的公司很多都不是卖软件而是卖服务,这个问题慢慢会淡化;
    3).在开发时可以选择的框架太多,有选择的地方就有错误;
  2. 安装Python:
    可以从Python的官方网站下载Python的安装程序及查看相关文档;
    说明:如果要在Linnux环境下更新到Python 3.x版本需要通过源代码构建安装。
    • 我们可以使用Python分包管理工具pip来安装第三方模块;
pip install ipython jupter
python -m pip install ipython jupter
3. 第一个Python程序 - hello, world
"""
Version: 0.5
Author: xl
Date: 2018-03-02
Modifier: 王二麻子
Date: 2018-03-03
第一个Python程序
"""
# 使用了Python内置的print函数打印字符串
print('hello,world!')
4. 如果想用交互式环境进行Python开发那么可以使用ipthon或者jupyter的notebook项目;
jupter notebook
5. 如果要做团队开发以及需要使用多文件多模块协作的大型项目,推荐使用Pycharm的集成开发工具,我们可以从JetBrains公司的[官方网站](https//www.jetbrains.com)下载到PyCharm.
6. turtle的运用:
   运用turtle画图。(PS:第一次接触这种画图,还感觉蛮新鲜有趣的,我自己画了一朵花,一朵奇形怪状的画,见下图)
   ![一朵奇形怪状的花](https://img-blog.csdn.net/20180303100137359?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2VpeGluXzQxNzc1MDQy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
7. 关于Python,还有一段文章:
    The Zen of Python, by Tim Peters
    Beautiful is better than ugly.
    Explicit is better than implicit.
    Simple is better than complex.
    Complex is better than complicated.
    Flat is better than nested.
    Sparse is better than dense.
    Readability counts.
    Special cases aren't special enough to break the rules.
    Although practicality beats purity.
    Errors should never pass silently.
    Unless explicitly silenced.
    In the face of ambiguity, refuse the temptation to guess.
    There should be one-- and preferably only one --obvious way to do it.
    Although that way may not be obvious at first unless you're Dutch.
    Now is better than never.
    Although never is often better than *right* now.
    If the implementation is hard to explain, it's a bad idea.
    If the implementation is easy to explain, it may be a good idea.
    Namespaces are one honking great idea -- let's do more of those!
    译文:
    优美胜于丑陋,明了胜于晦涩,简洁胜于复杂,复杂胜于凌乱,间隔胜于紧凑,可读性很重要,即便假借特例的实用性之名,也不可违背这些规则,不要包容所有错误,除非你确定需要这样做,当存在多种可能,不要尝试去猜测 ,而是尽量找一种,最好是唯一一种明显的解决方案,虽然这并不容易,因为你不是 Python 之父。做也许好过不做,但不假思索就动手还不如不做,如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然,命名空间是一种绝妙的理念,我们应当多加利用

二、变量

在程序设计中,变量是一种存储数据的载体。计算机中的变量是实际存在的数据,变量的值可以被读取和修改,这是所有计算的基础。
  1. 变量是数据的载体
  2. 变量的作用
  3. 变量的命名
    字母,数字,下划线组成,数字不能开头,不能使用特殊字符;大、小写变量相互独立(大小写敏感);Python官方标准语法规范:PEP8,变量的命名应该用小写字母,多个单词用下划线连接,一行代码的长度最好不要超过79个字符;作为一个专业的程序员,给变量(所有的标识符)命名做到见名知意也是非常重要的。
  4. 变量的类型
    1). 整型:Python中可以处理任意大小的整数;
    2). 浮点型:浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的;
    3).字符串型:字符串是以单引号或双引号括起来的任意文本;
    4).布尔型:布尔值只有True、False两种值;
    5).复数型:形如3+5j,跟数学上的复数表示一样,唯一不同的是虚部的i换成了j;
在对变量类型进行转换时可以使用Python的内置函数(准确的说下面列出的并不是真正意义上的函数,而是后面我们要讲到的创建对象的构造方法)。

• int():将一个数值或字符串转换成整数,可以指定进制。
• float():将一个字符串转换成浮点数。
• str():将指定的对象转换成字符串形式,可以指定编码。
• chr():将整数转换成该编码对应的字符串(一个字符)。
• ord():将字符串(一个字符)转换成对应的编码(整数)。

三、运算符

  1. 赋值运算符:=、 +=、 -=、 *=、 /= 等
  2. 算数运算符:+、 -、 /、 *、%等
  3. 关系运算符:>、 <、 >=、 <=、 ==、 !=
  4. 逻辑运算符:and、 or、 not
  5. 身份运算符 : is等
    例:判段是否为闰年
'''
year = int(input'请输入年份:')
is_leap = (year % 4 == 0 and year % 100 != 0 or
           year % 400 == 0)
print(is_leap)
'''

四、分支机构

if 、elif 、 else
例:投掷色子决定做什么事:

from random import randint
face = randint(1, 6)
if face == 1:
    result = '唱首歌'
elif face == 2:
    result = '跳个舞'
elif face == 3:
    result = '学狗叫'
elif face == 4:
    result = '做俯卧撑'
elif face == 5:
    result = '念绕口令'
else:
    result = '讲冷笑话'
print(result)

五、循环结构

for 循环 、 while循环
  1. 如果明确的知道循环执行的次数或者是要对一个容器进行迭代,那么我们推荐使用for-in循环;
  2. 如果要构造不知道具体循环次数的循环结构,我们推荐使用while循环。
'''
例1:用for循环实现1~100之间的偶数求和
'''
sum = 0
for x in range(2, 101, 2):
    sum += x
print(sum)
'''
例2:猜数字游戏
计算机出一个1~100之间的随机数由人来猜
计算机根据人猜的数字分别给出提示大一点/小一点/猜对了
'''
from random import randint
answer = randint(1,100)
n = 0
while True:
    n += 1
    num = int(input('请猜一个数:'))
    if answer < num:
        print('小一点!')
    elif answer > num:
        print('大一点!')
    else:
        print('恭喜你,猜对了!')
        break
'''
注:空格与什么都没有的区别
'''
print(len('')) # len()算字符串长度
print(len(' '))

下面是一些值得仔细思考回味的例子,也是一些我认为重要的经典例子:

例一: 5人分鱼

A:5份,多一条,扔掉,拿走属于自己的一份  
B:剩下的再分成5份,多一条,扔掉,拿走属于自己的一份 
C:剩下的再分成5份,多一条,扔掉,拿走属于自己的一份 
D:剩下的再分成5份,多一条,扔掉,拿走属于自己的一份
E:剩下的再分成5份,多一条,扔掉,拿走属于自己的一份 
fish = 1
while True:
    total = fish
    is_enough = True
    for _ in range(5):
        if (total - 1) % 5 == 0:
            total = (total-1) // 5 * 4
        else:
            is_enough = False
    if is_enough:
        print(fish)
        break
    fish += 1

例二: 水仙花数100~999之间

153 = 1^3 + 5^3 +3^3
for num in range(100,1000):
    a = num % 10
    b = num // 10 % 10
    c = num // 100
    if num == a ** 3 + b ** 3 + c ** 3:
        print(num)

例三: 找出10000以内的完美数

6 = 1 + 2 +3
28 = 1 + 2 + 4 + 7 + 14
from time import time
from math import sqrt
start = time()
for n in range(2,10000):
    my_sum = 1
    for factor in range(2,int(sqrt(n))+1):
        if n % factor == 0:
            my_sum += factor
            if factor != n // factor:
                my_sum += n // factor
    if my_sum == n:
        print(n)
end = time()
print((end - start),'秒')

例四:Craps 赌博游戏

规则:玩家掷两个骰子,每个骰子点数为1-6,如果第一次点数和为7或11,则玩家胜;如果点数和为2、3或12,
则玩家输庄家胜。若和为其他点数,则记录第一次的点数和,玩家继续掷骰子,直至点数和等于第一次掷出的点
数和则玩家胜;若掷出的点数和为7则庄家胜。
from random import randint
a = 1000
b = 1000
print('玩家初始本金为%d元'%a)
print('庄家初始本金为%d元'%b)
n=0
while True:
    c = int(input('下注多少:'))
    if c <= 0:
        print('赌资不可以是零或负的!')
    elif c <= a and c <= b:
        face1 = randint(1,6)
        face2 = randint(1,6)
        first_point = face1 +face2
        n += 1
        print('第%d局!赌额:%d元' % (n,c))
        print('玩家摇出了%d点'% first_point)
        go_on = False
        if first_point == 7 or first_point == 11:
            a += c
            b -= c
            print('玩家赢!')
            print('玩家目前本金为%d元' % a)
            print('庄家目前本金为%d元' % b)
        elif first_point == 2 or first_point == 3 or first_point ==12:
            a -= c
            b += c
            print('庄家胜!')
            print('玩家目前本金为%d元' % a)
            print('庄家目前本金为%d元' % b)
        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:
                a -= c
                b += c
                print('庄家胜!')
                print('玩家目前本金为%d元' % a)
                print('庄家目前本金为%d元' % b)
                break
            elif current_point == first_point:
                a += c
                b -= c
                print('玩家赢!')
                print('玩家目前本金为%d元' % a)
                print('庄家目前本金为%d元' % b)
                break
    else:
        print('赌资不够哦,亲!请重新下注。')
    if a <= 0:
        print('玩家本金输完了,游戏结束')
        break
    if b <= 0:
        print('庄家本金输完了,游戏结束')
        break

例五:100元买了100只鸡,公鸡:5元/只,母鸡:3元/只,小鸡:1元/3只

问:公鸡,母鸡,小鸡各多少只?

'''
公鸡x只,母鸡y只,小鸡z只
x + y + z = 100
5 * x + 3 * y + z // 3 = 100
z % 3 = 0
'''
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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值