Python的创始人为荷兰人吉多·范罗苏姆 [3] (Guido van Rossum) 。1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,作为ABC 语言的一种继承。之所以选中==Python(大蟒蛇的意思)==作为该编程语言的名字,是取自英国20世纪70年代首播的电视喜剧《蒙提.派森的飞行马戏团》(Monty Python’s Flying Circus)。
ABC是由Guido参加设计的一种教学语言。就Guido本人看来,ABC 这种语言非常优美和强大,是专门为非专业程序员设计的。但是ABC语言并没有成功,究其原因,Guido 认为是其非开放造成的。Guido 决心在Python 中避免这一错误。同时,他还想实现在ABC 中闪现过但未曾实现的东西。
就这样,Python在Guido手中诞生了。可以说,Python是从ABC发展起来,主要受到了Modula-3(另一种相当优美且强大的语言,为小型团体所设计的)的影响。并且结合了Unix shell和C的习惯。
1991年,第一个python解释器诞生,它是用c语言实现的,并能够调用c语言的库文件=。可扩展性非常强,在互联网上开元,世界上其他程序员看到了后觉得这个功能不能满足他的需要,就在开元的源代码上进行改近,提交给吉多,审核合并,这样全世界的人都可以参与到python这个语言的改进。
解释器:
解释器(英语:Interpreter),又译为直译器,是一种电脑程序,能够把高级编程语言一行一行直接转译运行。解释器不会一次把整个程序转译出来,只像一位“中间人”,每次运行程序时都要先转成另一种语言再作运行,因此解释器的程序运行速度比较缓慢。它每转译一行程序叙述就立刻运行,然后再转译下一行,再运行,如此不停地进行下去。
Python、TCL和各种Shell程序一般而言是使用解释器执行的。微软公司的Qbasic语言也是解释方式,它不能生成可执行程序(但Quick Basic和Visual Basic可以)。
编译器:
简单讲,编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器 (Linker) → 可执行程序 (executables)
高级计算机语言便于人编写,阅读交流,维护。机器语言是计算机能直接解读、运行的。编译器将汇编或高级计算机语言源程序(Source program)作为输入,翻译成目标语言(Target language)机器代码的等价程序。源代码一般为高级语言 (High-level language), 如Pascal、C、C++、Java、汉语编程等或汇编语言,而目标则是机器语言的目标代码(Object code),有时也称作(0101011)机器代码(Machine code)。
总结:编译型语言执行速度快;解释行语言跨平台能力强。
python拥有一个强大的标准库
python社区提供了大量的第三方库:不是由python官方开发的,是由python爱好者来开发的(标准库虽然强大但能力有限),当今最热门的都包含在内。
python是一个完全面向对象的语言,面向对象是一种思维方式,也是一们程序设计技术。
面向对象:解决一个问题前,首先考虑是由谁而做,怎么做事情是谁的职责。(对象就是谁)
要解决复杂问题,就可以找多个不同的对象,各司其职,共同实现,最终完成。
我们首先在系统中安装python3.6版本
这时我们就可以在shell解释其中使用python3.我们为了方便安装python专用的第三方软件,使用python:
[kiosk@foundation70 ~]sh pycharm.sh 运行安装脚本
进入安装界面
首先我们设定字体大小:
file–>setting–>editor–>font–>size
固定标题的设定:
file–>setting–>editor–>file and code templates–>python script
两者使用的编码方式不同,python2.x使用ASCII编码方式,python3.x使用utf-8编码方式
在之前我么已经安装好了python的开发软件。现在就让我恶魔年来应用他吧。
and
1 and 2
两个条件同时满足 就返回True
只要有一个条件不满足,就返回False
or
1 or 2
两个条件只要满足一个 就返回True
两个条件都不满足,就返回False
ctrl+alt+s | pycharm设置界面 |
---|---|
alt+insert | 如何快速创建文件 |
ctrl+alt+l | 格式化python代码, 使得风格好看 |
ctrl+z | 如何撤销代码的修改 |
ctrl+shift+z | 如何取消撤销的代码的修改 |
shift+F6 | 快速重命名 |
ctrl+/ | 快速注释代码 |
ctrl+/ | 快速取消注释代码 |
break:跳出整个循环 不会再执行循环后面的内容
continue:跳出本次循环,continue后面的代码不会执行
exit:结束程序的运行
while 条件满足:
语句1…
else:
循环完成后 要执行的语句
给定一个句子(只包含字母和空格), 将句子中的单词位置反转,
单词用空格分割, 单词之间只有一个空格,前>后没有空格。
比如: (1) “hello xiao mi”-> “mi xiao hello”
输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个字符)
对于每个测试示例,要求输出句子中单词反转后形成的句子
示例1:
输入
hello xiao mi
输出
mi xiao hello
1. 设计一个程序,帮助小学生练习10以内的加法
详情:
随机生成加法题目;
学生查看题目并输入答案;
判别学生答题是否正确?
退出时, 统计学生答题总数,正确数量及正确率(保留两位小数点);
2. 小学生算术能力测试系统:
设计一个程序,用来实现帮助小学生进行百以内的算术练习,
它具有以下功能:提供10道加、减、乘或除四种基本算术运算的题目;
练习者根据显示的题目输入自己的答案,
程序自动判断输入的答案是否正确并显示出相应的信息。
题目分析:
第一题:首先我们为了建立10以内的加减法,我们必须生成 10以内的随机数,使用第三方资源包import random,具体操作代码如下。
技术总结:
其实我们不应该规定循环次数,而是使用while,判断用户是否想要退出。
第二题:与上题相比我们需要多随即数除了加减乘除运算符。
import random
k = 0
d = 0
c = 0
for i in range(100):
shu1 = random.randint(0, 9)
shu2 = random.randint(0, 9)
op = ['+','-','*','/'] #将符号作为一个字符列表
v = random.choice(op) #将字符列表中的字符随机取出
print('%d%s%d=' %(shu1,v, shu2),end='')
ans = input()
if v == '+':
if shu1 + shu2 == int(ans):
print('答对了!')
d += 1
else:
print('打错了,再接再厉哦')
c += 1
elif v == '-':
if shu1 - shu2 == int(ans):
print('答对了!')
d += 1
else:
print('打错了,再接再厉哦')
c += 1
elif v == '*':
if shu1 * shu2 == int(ans):
print('答对了!')
d += 1
else:
print('打错了,再接再厉哦')
c += 1
else:
if shu2 != 0 :
if shu1 / shu2 == float(ans):
print('答对了!')
d += 1
else:
print('打错了,再接再厉哦')
c += 1
else:
print('被除数不能为零哦!')
continue
print('要继续答题冒险吗?(y/n)')
a = input('')
k += 1
if a == 'n':
break
l = d / k
print('一共做答了%d道题,其中回答正确%d道,回答错%d道,正确率为%.2f%%' %(k, d, c, l *100) )
运行结果如下:
代码总结:
1)我们需要将所有的运算符号都确认一次,因为无法确定符号的type,所以我们一律用字符串型进行比较。
2)在做除法时我们没有规定小数的位数,
3)我们是否可以使用case进行符号确认,这样我们就可以减少代码的计算,时间复杂度。
所以我们得到解决方法如下:
数组:存储同一种数据类型的集合,scores = (34,56,90,100…)
列表(打了激素的数组):可以存储任意数据类型
假定有下面这样的列表:
names = [‘fentiao’, ‘fendai’, ‘fensi’, ‘apple’]
输出结果为:‘I have fentiao, fendai, fensi and apple.’
技术总结:我们在输出时,如果是变量之间的链接,我们就可以用“,”进行链接,如果输出中有指定的字符串我们就需要将所有的输出用“+”链接。
题目:输入某年某月某日(yyyy-MM-dd),
判断这一天是这一年的第几天?
方法一:
方法二:
第一题:
有一个列表,其中包括 10 个元素,
例如这个列表是[1,2,3,4,5,6,7,8,9,0],
要求将列表中的每个元素一次向前移动一个位置,
第一个元素到列表的最后,然后输出这个列表。
最终样式是[2,3,4,5,6,7,8,9,0,1]
方法一:
方法二:
技术总结:两种方法相比较,第二种方法明显,计算量更少,所用时间更短,大大降低了资源的浪费。
第二题:
问题描述:按照下面的要求实现对列表的操作:
产生一个列表,其中有 40 个元素,每个元素是 50 到 100 的一个随机整数
如果这个列表中的数据代表着某个班级 40 人的分数,请计算成绩低于平均分的学生人数
对上面的列表元素从大到小排序并输出li.sort(reverse=True)
方法一:
方法二:
技术总结:
我们可以得到,第二种方法与第一种方法方法相比较,使用了内值函数,因此设定的变量及函数步骤因此都变少,知识点总结:
sum( )用于计算列表中总值的函数
li.sort( )排序一个列表(从小到大)
li.sort( reserve = True) (从大到小)