第一模块: 开发基础(1)

python生态圈

  • WEB开发(Django the framework for perfectionist with deadlines,Tornado, flask,bottle)
  • 人工智能(PyTorch)
  • 云计算(openstack)
  • 金融量化分析,自动化交易
  • 爬虫(Scrapy, Request, BeautifuSoap, urllib)
  • 自动化运维,测试
  • 科学运算
  • 游戏开发

谁在使用python

python_user

编程语言的介绍

为什么要编程?

由于计算机只能识别二进制,但是人不能只输入二进制,这样开发的速度太慢.所以最好的方法就是输入简单的指令,计算机能将指令转化成二进制执行.

有哪些编程语言

编程语言总体分为: 机器语言, 汇编语言, 高级语言.

机器语言

由于计算机只能接受二进制代码,因此,用二进制代码0和1描述的指令称为机器语言,全部机器指令的集合构成计算机的机器语言.
机器语言属于低级语言.
机器语言视微处理器理解和使用的,尽管机器语言好像视很复杂的,但是它视有规律的.
存在100000多种机器语言指令.

汇编语言

汇编语言的实质和机器语言是相同的, 都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆.

高级语言

和汇编语言相比,它不但将许多相关的机器指令合成为单条指令,并且去掉了与具体操作相关但与完成工作无关的细节,例如堆栈,寄存器等;
高级语言所编写的程序不能直接被计算机识别,必须经过转换才能被执行.

高级语言又分为编译类和解释型.

编译类

编译是指在应用源程序执行之前,将程序源代码"翻译"成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行(编译后的可执行文件,是cpu可以理解的二进制的机器码组成的),使用比较方便,效率高.但是应用程序一旦需要修改,必须先修改源代码,再重新编译生成目标文件才能执行.
编译后程序运行时不需要在重新翻译,直接使用编译结果就可以了.程序执行效率高,依赖编译器,跨平台性差.如c,c++,delphi等

解释型

执行方式类似于我们生活中"同声翻译", 应用程序源代码一边由相应的解释器"翻译"成目标语言,一边执行,因此效率比较低,而且不能生成课独立执行的可执行文件,应用程序不能脱离其解释器,但是这种方式比较灵活,可以动态地调整,修改应用程序. 如Python,Java,PHP,Ruby等语言.


Python的发展史

创始人: Guido van Rossum,仁慈的独裁者
1989年圣诞节,名字来自于monty python's flying circus.

1989年 诞生
1991年 第一个python编译器诞生,c语言编写
1999年 第一个web框架诞生
1994年 python1.0 lambda map filter reduce
2000年 python2.0 加入内存回收机制
2004年 python2.4 web框架Django诞生
2006年 python2.5
2008年 python2.6
2008年 python3.0
2010年 python2.7
2009年 3.1
2011年 3.3
2012年 3.4
2014年 宣布python2.7支撑到2020年,不会有2.8版本,所有用户需要尽快将项目迁移到python3.4+
2015年 3.5
2016年 3.6


python解释器种类

  • Cpython 官方版解释器
  • Ipython 基于Cpython上的一个交互式解释器
  • Jpython 运行在java平台上的python解释器
  • pypy 它的目标是执行速度,采用了JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著的提高python代码的执行速度.
  • IronPython .Net平台上的python解释器.

精通各种语言的HelloWorld

  • C++
#include <iostream>
int main(void){
std::cout<<"Hello world";
}
  • C
#include <stdio.h>
int main(void){
printf("\nhello world\!");
return 0;
}
  • JAVA
public class HelloWorld{
public static void main(String args[]){
system.out.println("Hello world");
}
}
  • PHP
<?php
  echo "hello world!"
?>
  • RUBY
puts "Hello World."
  • GO
package main
import "fmt"
func main(){
  fmt.Printf("Hello World\n God Bless You!");
}

Python基础语法

变量

计算机主要作用是进行运算,python进行数值运算十分简单,和我们平时用计算器一样.

变量的作用: Variable are used to store information to be reference and manipulated in a computer program. They also provide a way of labeling data with a descriptive name.

声明变量: name = "fbo"

变量的定义规范:

  1. 变量名只能是字母,数字或下划线的任意组合;
  2. 变量名的第一个字符不能是数字;
  3. 系统保留字不能作为变量名and as assert break class continue def del elif else exec finally for from global if import in is lambda not or pass print raise return try while with yield

定义方式:

  • 驼峰式 AgeOfSomeone = 56
  • 下滑线式 age_of_someone = 56(官方推荐)

常量:
常量是指不变的量,python中约定俗成变量名全部大写代表常量AGE_OF_SOMEONE = 56

用户交互和注释

读取用户输入:

name = input("What is your name?")
print(name)

代码注释用#

python的基本数据类型

  • 数字
    • 整数 int (python3全都是int类型)
    • 长整型 long
    • 浮点型 float
    • 复数型
  • 字符串
    • 文本 str
    • 字节 bytes
  • 布尔
    • True/False

格式化输出

  • %s 字符串
  • %d 数字
  • %f 浮点数
name = input("Name:")
age = input("Age:")
job = input("Job:")
hometown = input("HomeTown:")

info = """
------------- info of %s ----------
Name:      %s
Age:          %s
Job:          %s
Hometown: %s
-------------- end -------------------
"""  % ( name, name, age, job, hometown)

运算符

  • 算数运算
  • 比较运算
  • 逻辑运算
  • 赋值运算
  • 成员运算
  • 身份运算
  • 位运算

流程控制

if...else....

猜年龄小程序guess_age.py :

age = 26

user_guess = int(input("your guess:"))

if user_guess == age:
  print("congratulation")
elif user_guess > age:
  print("Too High!")
else:
  print("Too lower!")

作业:

  • 需求:
  • 匹配成绩的小程序,成绩有ABCDE5个等级,与分数的对应关系 A --> 90-100 B --> 80-90 C --> 60-79 D --> 40-59 E--> 0-39
score = int(input("Please input your score:").strip())

if score >= 90 and score <= 100:
    print("A")
elif score >= 80 and score < 90:
    print("B")
elif score >= 60 and score < 80:
    print("C")
elif score >= 40 and score < 60:
    print("D")
elif score >=0 and score < 40:
    print("E")
else:
    print("输入不正确")

while
写个程序从0到100, 每次循环+1:

count = 0
while count <= 100:
  print("loop", count)
count += 1

练习1:
打印1到100的偶数?

num = 1
while num <= 100:
  if not num % 2:
    print(num)
  num += 1

练习2:
循环打印1-100, 第50次不打印,第60-80次, 打印对应值的平方?

num = 1
while num <= 100:
    if num < 50 or 50< num < 60 or num > 80:
        print(num)
    elif 60 <= num <= 80:
        print(num * num)
    num += 1

死锁:
只要条件成立就一直执行

count = 0
while True:
  print("forever 21", count)
  count += 1

continue和break

  • break 用于完全结束一个循环, 跳出循环体执行循环后面的语句
  • continue 只终结本次循环,接着执行后面的循环.

练习1:
猜年龄,允许用户最多尝试3次,3次都没猜对的话,就直接出局了,如果猜对了,打印恭喜信息并退出.

# 设定年龄
age = 22
# 计数
count = 0

while count < 3:
    guess = int(input("我猜我猜我猜猜猜>>>").strip())
    if guess == age:
        print("恭喜您,回答正确!")
    elif guess > age:
        print("哎呀,整大了...")
    else:
        print("往大里整撒...")
    count += 1

练习2:
练习1升级,尝试3次没有对的话,如果想要继续玩的话,回答y或者Y就继续让玩三次,输入n或N的话退出.

# 设定年龄
age = 22
# 计数
count = 0

while count < 3:
    guess = int(input("我猜我猜我猜猜猜>>>").strip())
    if guess == age:
        print("恭喜您,回答正确!")
    elif guess > age:
        print("哎呀,整大了...")
    else:
        print("往大里整撒...")
    count += 1
    if count == 3:
        choice = input("是否继续?(y/n or Y/N)").strip()
        if choice == "y" or choice == "Y":
            count = 0
            continue
        elif choice == "N" or "n":
            break

while...else...
与其他语言不同,python中还有一个while...else语句;
如果while正常执行完成,没有被break, 就会执行else语句.

count = 0
while count <=5:
    print("loop", count)
    #if count == 3:
    #    break
    count += 1
else:
    print("loop run over")

练习题:

  1. 简述编译型与解释型语言的区别,且分别列出你知道的哪些语言属于编译型,哪些属于解释型?

编译型语言,需要先进行编译,生成二进制(机器可识别的)可执行文件才可以执行,特点是开发周期长,代码修改后须重新编译,由于可执行文件机器可以直接识别,所以运行速度快,但是无法跨平台;代表语言是c和c++等
解析型语言不需要编译就可以直接执行,解析型语言的运行依赖系统上的解释器,边解释变运行,所以解释型语言开发周期短,修改灵活,但是运行速度要低于编译型语言;代表语言为java, python, php, ruby等

  1. 执行 Python 脚本的两种方式是什么?
python3 name.py
chmod u+x nam.py && ./name.py
  1. Pyhton 单行注释和多行注释分别用什么?

单引号标识单行注释, 三个引号标识多行注释.

  1. 布尔值分别有什么?
    FalseTrue
  2. 声明变量注意事项有那些?

变量中只能包含字母,数字以及下滑线, 必须以字母或者下滑线为手写字母,驼峰式或者下划线式命名,避免用中文定义变量,常量约定俗成用全部大写字母.

  1. 如何查看变量在内存中的地址?
    id(var)
  2. 写代码
  • 实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败!
  • 实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次
  • 实现用户输入用户名和密码,当用户名为 seven 或 alex 且 密码为 123 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次
count = 0
while count < 3:
    user_name = input("Name: ").strip
    user_password = input("Password: ").strip()
    if user_name == "seven" or user_name == "alex" and user_password == "123":
        print("欢迎归来", user_name)
    else:
        print("登录失败,请重试")
    count += 1
  1. 写代码
    a. 使用while循环实现输出2-3+4-5+6...+100 的和
    b. 使用 while 循环实现输出 1,2,3,4,5, 7,8,9, 11,12
    c. 使用while 循环输出100-50,从大到小,如100,99,98...,到50时再从0循环输出到50,然后结束
    d. 使用 while 循环实现输出 1-100 内的所有奇数
    e. 使用 while 循环实现输出 1-100 内的所有偶数
# a
sum = 0
count = 2
while count <= 100:
    if count % 2:
        sum -= count
    else:
        sum += count
    count += 1

print(sum)

# b
count = 1
while True:
    if count == 13:
        break
    else:
        print(count)
    count += 1

# c
count = 100
while count >= -1:
    if count >=50:
        print(count)
    else:
        print(49 - count)
    count -= 1

# d e
count = 0
while count < 100:
    if count % 2:
        print("奇数", count)
    else:
        print("偶数", count)
    count += 1
  1. 现有如下两个变量,请简述 n1 和 n2 是什么关系?

n1 = 123456
n2 = n1

n2和n1的值相同,指向同一变量

  1. 制作趣味模板程序(编程题)
    需求:等待用户输入名字、地点、爱好,根据用户的名字和爱好进行任意显示
    如:敬爱可爱的xxx,最喜欢在xxx地方干xxx
info = "敬爱可爱的%s,最喜欢在%s地方干%s"

user_name = input("Name:>>>").strip()
place = input("Place:>>>").strip()
like = input("Like:>>>").strip()

print(info % (user_name, place, like))
  1. 输入一年份,判断该年份是否是闰年并输出结果。(编程题)
    注:凡符合下面两个条件之一的年份是闰年。 (1) 能被4整除但不能被100整除。 (2) 能被400整除。
year = int(input("请输入年份:>>>").strip())

if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
    print("年份", year, "是闰年")
else:
    print("年份", year, "不是闰年")
  1. 假设一年期定期利率为3.25%,计算一下需要过多少年,一万元的一年定期存款连本带息能翻番?(编程题)
count = 0
bill = 1
fee = 0.0325
while True:
    count += 1
    bill *= (1 + fee)
    print(bill)
    if bill >= 2:
        print(count,"年后能连本带利息翻翻")
        break

作业

编写登陆接口

基础需求:

  • 让用户输入用户名密码
  • 认证成功后显示欢迎信息
  • 输错三次后退出程序

升级需求:

  • 可以支持多个用户登录 (提示,通过列表存多个账户信息)
  • 用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里)
import os

user_list = [
    ["xiaoli", "123"],
    ["zhangsan", "123"]
    ]
count = 0

flag = 0

print("开始".center(80,"-"))
while count < 3:
    # 用户输入账号密码
    name = input("请输入您的账号:>>>").strip()
    password = input("请输入您的密码:>>>").strip()

    # 判断锁定文件是否存在
    if os.path.isfile(name):
        print(name, "您已经被锁定,请离开!")

        
    
    if [name, password] in user_list:
        print("欢迎欢迎,热烈欢迎", name)
        break
    else:
        buff = name
        print("输入错误!")
        # 判断是否三次输入的都是同一用户
        # 如果是,则锁定用户
        if count == 0:
            buff = name
        elif count == 1:
            if buff == name:
                flag = 1
        else:
            if flag == 1 and name == buff:
                print("您已经被锁定,请离开!")
                with open(name, "w") as f:
                    f.write("lock")
    count += 1

print("结束".center(80,'-'))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,233评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,013评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,030评论 0 241
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,827评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,221评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,542评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,814评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,513评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,225评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,497评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,998评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,342评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,986评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,812评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,560评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,461评论 2 266

推荐阅读更多精彩内容