用python编辑倒计时_从前总以为Python是最好上手的语言,看了这篇文章才发现确实如此...

有很多想要学习Python却找不到途径的朋友,我这里整理了一些关于Python的学习资料,从基础到入门到实战都要。有需要的朋友可以关注并私信“01”免费获取...

Python是一门多范式高级动态解释型编程语言

Python是在1989年由Guido van Rossum(以下简称老爷子或Guido叔)创建。是一门纯粹的开源自由软件,其C语言实现CPython遵从GPL(GNU General Public License)开源协议。目前由Python Software Foundation(PSF)负责维护和发展Python,并促进国际性Python社区的成长。Python这个名字来自于一个BBC的电视节目名字:Monty Python's Flying Circus。关于老爷子还有一个有趣的传说:老爷子在面试谷歌的时候,简历上只写了一句话:I wrote Python,然后被面试官嘲笑了9轮,直到第10轮才被人认出他是Python的发明者(假的哦,谷歌面试官没这么瞎)。

  • 多范式:支持各类编程范式(面向对象,函数式,过程式)
  • 高级:相比于其他语言而言更贴近人类语言
  • 动态:动态性,需慢慢体会
  • 解释型:Python解释器会一边解释语言,一边执行语言。有别于C/C++或Java,需要事先编译成可执行文件,再运行。

Python的优势在于简洁、清晰、优雅。Python的核心在于对任何一件事,它都提供了且只提供了一种最好的实现方式,你不用去选择,只要相信Python语言或标准库的实现是最好的即可。它大大提升了开发效率,降低了门槛。此外,Python具有跨平台,可扩展,应用广泛等诸多优点,同时,它可以轻易得同C语言进行混合编程,来解决一些饱受标签化诟病的性能问题。

7a303b5012119713e37a46eb224745a0.png

为什么国内几乎看不到利用Python做大型项目的?甚至大多数人对Python的认识还停留在写一个脚本,做个小玩意,最多最多加上TensorFlow做个神经网络?

实际上,直到2017年,Python才真正进入了大多数国内开发人员的视线中,这一方面自然归结到机器学习的爆发式增长,另一方面,也归结于人们改变了对于一些问题的认识。在国内,Java依旧垄断了大型项目的开发(Java有其独特的优势,并且Java依旧是全世界最流行的编程语言),然而,国外的公司更青睐于使用Python。

Python从很久以前就因一个天然不足而被人误解。直到今天,提到Python,人们也会直接想起:速度太慢。这其实是一个标签化的观点。诚然,相比于C/C++,或是Java,Python的运行效率确实不高,然而:

  1. 在现今这个物理硬件性能和软件复杂性齐头飙升的时代,运行效率变得不再重要,取而代之的是开发效率的瓶颈束缚着软件的发展;
  2. 在互联网时代,运行效率相比IO密集型业务带来的IO等待时间是小巫见大巫;
  3. 即使确实遇到了性能瓶颈,也可以在定位问题后通过C语言重写瓶颈代码来优化。

当然,Python还有一些其他方面的不足,后续会深入讲解。

e9c18997ea6804f6e062af4f575d4836.png

Python版本历史

(不感兴趣可以直接跳到结论位置)

Python语言目前处于3.6版本。在曾经的发展中,Python经历了一次极富争议的变化。在到达Python 2.5版本左右时,Guido叔决心对Python语言进行重整,保持它简洁的核心风格,但是对于多余的模块、功能进行了削减,保证There should be one—and preferably only one—obvious way to do it。此外,对于某些问题或设计上的瑕疵(例如之前提到的unicode编码问题→传送门),以及愈发臃肿的核心,老爷子果断放弃了后向兼容性,先于08年10月推出了Python 2.6版本,为3.0版本做了铺垫。紧接着,在同年12月release了Python 3.0版本。至此,Python语言走向了新的发展道路。这一次彻底放弃兼容性带了巨大的争议(因为当时已经有大量成熟的库是由Python 2实现的)。此后,在2009年,Python 3.1版本推出。2010年推出了Python 2的最后一个版本——Python 2.7,同时,Python社区分裂成了两部分,2vs3。从那以后,Python以平均1.5年的速度推进着新的版本,Python 3.6于2016年12月推出,Python 3.7目前处于beta测试阶段,预计6月15日释出final release。而Python 2则静止在了2.7这里。

有人比喻,Python 2.7像一匹飞奔的骏马,在Python 3.0(它像一辆刚发明出来的汽车)到来之后依旧飞速向前奔跑着。然而,历史的潮流终于还是将Python 2.7淹没了。今年3月,Guido叔正式宣布Python 2.7将于2020年1月1日寿终正寝(之前有过一次宣布,但是后来推迟了时间,感兴趣可以到https://pythonclock.org/上看一眼Python 2.7的倒计时)。

结论:不论你是一名初学者,还是已经熟知了Python,不论你用它在编写脚本,还是用于TensorFlow神经网络,我都建议你使用3.6版本,并紧跟着社区的步伐。新的特性和更稳定的内核可以让你的开发更加游刃有余。

本公众号的所有内容,无特殊说明,均以Python 3.6版本为基础(当然,3.6版本的新特性会指出来)。如果你在其他地方看到了具有类似功能不同写法的一些函数,基本可以肯定那是属于Python 2的写法,可以只做了解,不建议深入学习。

57279e23962173231e8941805f0d3505.png

基础语法

Python语法简洁清晰。定义一个变量(如果你看过前几篇文章,你应该清楚这是用一个标识符a引用了数字1的内存地址):

a = 1

Python利用严格缩进来实现代码块,通常缩进为4个空格。为了保证程序缩进正确和美观,你应当为编辑器设定一个tab等于4个空格,并利用tab来缩进代码:

a = 1if a == 1: print(True) # True#1234个空格print(False) # False#这条语句已经跳出了if语句块

Python利用#进行行注释,前面已经看得够够得了。

字符串由单引号或双引号包裹,两者没有任何区别

a = 'hi'b = "hello"c = "Lucy's hat"

甚至可以用三个单引号来定义长字符串:

l = '''Thisisaverylongstring'''

打印命令是print(见得比注释都多

print('hello world') # hello world

获取用户输入采用input:

>>> inp = input('Please input your name: ')>>> Please input your name: houlu>>> print(inp) # houlu

获取的输入是字符串类型,即使你输入一个整数。

加减乘除:

+-*/

运算赋值操作:

a = 1a += 1print(a) # 2

可以看到a += 1操作等价于a = a + 1。这对其他的操作符均有效。

这里要提到一点,/是普通除法,不论除数与被除数是多少,结果都是浮点数类型:

print(10 / 5) # 2.0

要想做整除,请用双斜线//。

print(10 // 5) # 2print(3 // 4) # 0

取余操作采用%:

print(10 % 4) # 2

幂运算**:

print(10 ** 3) # 1000

比较运算

a = 2print(a <= 3) # Trueprint(a > 4) # False

逻辑运算,与and,或or,非not:

print(a <= 3 and a < 2) # Falseprint(not a > 4 or a <= 3) # True

Python提供了链式比较的方式来简化条件判断:

print(1 < a <= 3 < 4 < 5 < 6) # True

是不是很简洁?

条件语句:if...elif...else

a = -1if (a > 1): print('if')elif a < 0: # 最好加括号 print('elif')else: print('else')# elif

循环语句

Python循环语句有两种,for...in...和while...。while循环同其他语言一样:

a = 3while True: a -= 1 print(a) if a == 0: break# 2# 1# 0

for循环允许你遍历一个可迭代对象的每一个元素:

a = ['a', 2, 3]for i in a: print(i)# 'a'# 2# 3

从其他语言转来Python的朋友通常会对for...in...感到迷惑,并写出这样的代码:

a = ['a', 2, 3]for i in range(len(a)): print(a[i])# 'a'# 2# 3

摒弃这样复杂低效的写法,时刻谨记for...in...可以直接遍历每个元素

到这里,本篇文章为大家带来了Python的一点历史,优势和最基础的语法,希望大家能够对Python有一个初步的理性的认识。

310fd037e5c14ef97ffd7ad647311eb1.png

猜数字游戏

最后一点内容,来试着实现一个简单的猜数字游戏:

从1到10,令玩家猜一个整数,按每次猜测的结果缩小范围,最后打印猜到数字用了多少次

import random # 需要随机一个数start = 1end = 10num = random.randint(start, end)times = 0 # 猜的次数guess = int(input( '猜一下{}~{}: ' .format(start, end)))# input获取的是字符串# 需要用int转成整型# 格式化字符串format# 在其他文章中会详细讲# 这里需要防止玩家随意输入# 做一下错误处理# 为了简单省略了while True: times += 1 hint = '猜错了,再猜:' if start <= guess < num: scope = '{}~{}: '.format( guess, end ) elif num < guess <= end: scope = '{}~{}: '.format( start, guess ) else: print( '猜对了!共猜了{}次' .format(times) ) break hint += scope guess = int(input(hint))

来试玩一下:

猜一下1~10: 9猜错了,再猜:1~9: 8猜错了,再猜:1~8: 10猜错了,再猜:1~10: 7猜错了,再猜:1~7: 6猜对了!共猜了5次
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值