############python
1、python的起源
python的创始人为吉多.范罗苏姆,他在1989年的圣诞节期间决心开发一个新的解释程序,面向对象是非程序员,并且还是开源的,在互联网上开原,全世界的人都可以参与到python这个语言的功能开发上。
2、解释器
计算机不能直接理解机器语言(010101)之外的语言,所以程序员必须把所写的程序语言翻译成机器语言,计算机才能执行程序。将其他语言翻译成机器语言的工具,被称为编译器。
编译器有两种:一种是编译,另一种是解释。因此语言也分为两类,编译语言和解释语言。
编译型语言–编译器–最终可执行文件:同一编译,一次执行。编译器最后生成的可执行文件就只能在这个操作系统上运行,不能跨平台
解释型语言–解释器:读一行翻译一行,翻译一行执行一行。在不同操作系统上安装不同的解释器就可以了。
3、python的特点
python是一种解释型语言,他的跨平台能力强。名且开原,代码像纯英文那样容易理解,适用于短期开发的日常任务。简单、可读型强、开发速度快。python的源代码清晰,像文章一样清晰流畅。明确的告诉人们每一句代码要做的事情。python开发者一般会选择并且只选择一种方法来做一件事。在语法方面选择明确没有或者很少有歧义的语法。
4、为什么选择python
代码的量少,开发的速度块。同样的问题,用不同的语言解决,代码量的差距还是很多的。
python是一个完全面向对象的语言:面向对象是思维方式,也是一门程序设计技术。解决问题时有两种方式:1)、我们自己亲历亲为,一步步解决这个问题。2)、要解决一个问题前先考虑是谁来做,怎么做的,谁的职责,最后把事情做好,当解决问题时就可以找多个不同的对象,各司其职,共同实现最终完成。
python除了这些特定还有一些其他特点,python社区提供了大量的第三方库,不是官方的而是由爱好者开发的(力量有限),较为热门的都在其中。
5、python的优缺点:
优点:简单、易学。免费开源。面向对象,丰富强大的库。可扩展性强。
缺点:运行速度慢、国内市场较小、中文资料匮乏
####################1、第一个python程序
[kiosk@foundation38 dir1]$ vim first.py
# _*_coding:utf-8_*_
# python2.x:默认使用ASCII编码
# python3.x:默认使用UTF-8编码
print('hello world')
print('你好 hello world')
[kiosk@foundation38 dir1]$ /usr/local/python3/bin/python3 first.py
hello world
你好 hello world
##############2、python中的变量
例子:
变量就是对内存地址空间的一个引用
>>> a = 1
>>> a
1
>>>
>>> a = 3
>>> a
3
>>>
如上面,我们有了一个量是1,它存在在内存中的第一个空间中,那么现在我们给它的所在空间一个名称为a,在之后要找到这个空间的数据时只要找到这个空间的名字a即可。同时又由于,内存空间的数据时可以改变的我们将另一个值给与这个地址时,原来的这个地址中的数据将会更改。
在程序中我们要在开头加上说明,方法:
[kiosk@foundation38 dir1]$ vim python中的变量.py
#变量时对内存地址空间的一个引用
a = 1
print(a)
"""
print('hello python')
"""
[kiosk@foundation38 dir1]$ /usr/local/python3/bin/python3 python中的变量.py
1
我们可以看出执行程序后中间连起来的不显示
>>> a = 1 ###给与一个变量
>>> print(a)
1
>>> type(a) ##查看空间数据的类型
##整形
>>> b = 1.4 ###给与空间b一个值
>>> type(b) ##产看b空间类型
##浮典型
>>> c = 'westos' ##给c一串字符
>>> type(c)
##c是字符串
>>> c = 'what's' ##当字符串中有单引号时不能在用但引号围住它
File "", line 1
c = 'what's'
^
SyntaxError: invalid syntax
>>> c = "what's" ##换双引号
>>> print(c)
what's
>>> c = 'what\'s' ##或者这样
>>> type(c)
##bool,只要里面有数据就返回正确的
>>> a = 1 ##给a 一个值1
>>> bool(a) ##bool查看a空间
True ##返回正确
>>> bool(1) ##直接用bool看1
True ##正确
>>> bool(0) ##看0
False ##错误
>>> c = '' ##给c一个空的字符串
>>> bool(c) ##bool看
False ##时错误的
>>> c = ' ' ##字符串中加空格
>>> bool(c) ##bool看
True ##有空格,bool显示为真
>>> bool('') ##直接看字符为空的
False ##错误
>>> bool(' ') ##看字符中有空格的
True ##为真
################这里我们对上面一个总结,就是字符的类型是根据你所给与的数据类型自动给与的,我们有type可以看到,字符串的输入要加“’’”单引号,如果字符串其中有但引号,我们要用将字符串外围的单引号转换为双引号,或者在其中加入转换符号“\”。bool可以看一个地方是否有数据。
##################数据的转换
在上面我们可以进行数据类型的查看,以及查看数据是否存在,那么怎么来改变数据的类型
>>> a = 1 ##给内存中一个数据和所在地点名称
>>> type(a) ##给的1,默认是整形,我们用type查看
>>> float(a) ###将a的这块地点改为浮点型
1.0 ##更改成功
>>> type(a) ##我们在查看a这块内存地址
##但仍然是整形,a is not change
>>> b = float(a) ##我们将a数据类型改为浮点型并且将其放到b这个位置
>>> type(b) ##我们查看b的类型为浮点型
>>> b
1.0
>>> c = 'redhat' ##we give c a char string
>>> int(c) ##we change char string to char int,that's not persive
Traceback (most recent call last):
File "", line 1, in
ValueError: invalid literal for int() with base 10: 'redhat'
>>> c = '123' ##but if we give a num string
>>> type(c) ##look the type
>>> c
'123' ##num string
>>> int
>>> int(c) ##we can change type int
123
>>> type(c) ##we not give int(c) a storage pot so c is his forehead type
>>> d = int(c) ##we give c change after to d
>>> d ##d is num int
123
>>> type(d) ##look d's type int
>>>
#########我们在这里可一看到数据类型的改变直接指定就可以,但是指定后,一定要给他储存的空间。被指定的空间数据类型是不变的,指定完后保存到另一个地方。
##删除变量
a ##删除变量用 del
1
del a
a
Traceback (most recent call last):
File "", line 1, in
NameError: name 'a' is not defined
picture del
#######################################在我们完成变量数据类型的查看、改变、删除,下来是变量的运算
[kiosk@foundation38 bin]$ python #################python2
Python 2.7.5 (default, Aug 2 2016, 04:20:16)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.5/2 #5/2的值为
2
100/300
0
5.0/2 ##float浮点型相除
2.5
100/300.0
0.3333333333333333[kiosk@foundation38 bin]$ ./python3 ###python3版本中
Python 3.6.4 (default, Aug 26 2019, 22:05:47)
[GCC 4.8.2 20140120 (Red Hat 4.8.2-16)] on linux
Type "help", "copyright", "credits" or "license" for more information.5/2 ##除法自动转换相应的类型
2.5
100/300
0.3333333333333333
5%2 ##取余数
1
100%300
100
10%2
0
1%2
1
##从上面的取余数我们可以看到只除到个位###############取整和自加5//2 ##除数取整//
2
34//3
11
a = 1
a
1
a = a+1 ##自加后付给自己
a
2
a
2
a += 1 ##另一种表达方法
a
3##############python的输入inputa = input('num') ##我们表示一个输入
num1 ##输入了1
print(a) ##输出a我们可以看到我门刚才的输入
1
type(a) ##类型
##是字符串的
a = int(a) ##如果我们要用数字的,则指定字符类型
print(a)
1
type(a)
input ('name:') ##输入字符串
name:westos
'westos'
字符的输入,要记得,所有的输入都是字符串的类型,在写输入时,最好给输入一个内存地址。
##################字符的输出
a = 'westos' ##给a一个字符串
b = 12 ##给b一个数字int的
type(a) ##分别查看他们的数据类型
type(b)
print('%s' %a) ##用print输出%s,可以输出字符串型的
westos
print('%d' %a) ##%d,不能输出字符串
Traceback (most recent call last):
File "", line 1, in
TypeError: %d format: a number is required, not str ##这个报错也在说明%d输出的是数字
print('%d' %b) ##b时int型,%d输出int型
12a = 12 ##给a给值12
print('%d' %a) ##用%d显示int型,不显示小数
12
print('%f' %a) ##%f是float型显示小数
12.000000
print('%.3f' %a) ##在%f中控制小数的位数
12.000
a = 3 ##给a一个值
print('%d' %a)
3
print('%.4d' %a) ##在d之前加“.4”可以看到点之前一共有4位
0003
a =100 ##给a值100
print('%.4d' %a) ##输出点“.”之前还是4位
0100a = 0.3 ##给a一个float数
print('%f' %a) ##用%f输出
0.300000
print('%.2f' %a) ##控制其后位数
0.30
print('%.2f%%' %a) ##给%f后面加‘%%’两个
0.30% ##输出少100
print('%.2f%%' %(a*100)) ##给a乘上100
30.00% ##得到百分数
###############测试题输入学生姓名,依次输入语文、数学、英语的成绩,计算平均成绩、总成绩、和语文成绩在总成绩中的占比。
代码如下:
[kiosk@foundation38 dir1]$ vim test1.py
name = input('name:')
yuwen = input('语文:')
shuxue = input('数学:')
yingyu = input('英语:')
yuwen = float(yuwen)
shuxue = float(shuxue)
yingyu = float(yingyu)
num = (yuwen+shuxue+yingyu)
average = num/3
print('zongshu:%f' %num)
print('piingjunchengji%.1f:' %average)
averageyuwen = yuwen/num
print('averageyuwen:%.2f%%' %(averageyuwen*100))
[kiosk@foundation38 dir1]$ /usr/local/python3/bin/python3 test1.py ##运行成功
name:tom
语文:12
数学:12
英语:12
zongshu:36.000000
piingjunchengji12.0:
averageyuwen:33.33%
##############################if 语句,判断作用
age = 20
if age > 18 : ##判断是否大于18
print('good') ##大于输出good
else: ##否则输出sorry
print('sorry~~')
~
score = 79
if 90 < score <=100: ##判断score所在区间
print('A')
elif 80 < score <= 90: ##继续判断
print('b')
else: ##其他的情况
print('c')value = input('Value:') ##########三种输入,判断是否为空
bool = bool(value) #####前边的bool值判断输入是否有,有输出正确,没有输出错误
print(bool)
if value == '': ##if语句的‘==’等于号,来判断输入是否为空
print('input something')
if not value: ##if后加not显示没有数据。来判断条件是否成立
print('input value')
and
1 and 2
两个条件同时满足 就返回True
只要有一个条件不满足,就返回False
or
1 or 2
两个条件只要满足一个 就返回True
两个条件都不满足,就返回False
要求
用户输入年风判断是否是闰年
–年可以被4整除但是不能被100整除或者年能被400整除。就是润年
year = input('year:') ##输入
year = int(year) ##转换数据类型
if year % 4 == 0 and year % 100 != 0: ##判断是否满足条件
print('runnian')
elif year % 400 == 0: ##查看是否满足条件
print('runnian')
else: ##都不满足时
print('not runnian')##随机数有电脑自带的随机数包,以出拳位类
import random ##输出有随机的程序库
player = input('num:') ##输入
player = int(player) ##转换类型
a = random.randint(1, 999) ##在那个范围随机
computer = a ##将其给电脑
print('computer:%d' % computer) ##输出随机数
if computer == player: ##判断随机的与输入的大小相等
print('all win')
elif computer > player: ##一个较大
print('computer win')
else: ##其他情况
print('player win')####################forrange(6) ##range的用法
[0, 1, 2, 3, 4, 5]
range(0,4)
[0, 1, 2, 3]
range(3,7)
[3, 4, 5, 6]
range(1,6,2)
[1, 3, 5]sum = 0 ##1-100的加法
for i in range(1,101):
sum = sum+i #sum +=i
print(sum)
sum = 0
for i in range(1,101,2): ##1-100奇数的加法
sum = sum+i #sum +=i
print(sum)sum = 0
for i in range(2,101,1): ##1-100偶数的加法
sum = sum+i #sum +=i
print(sum)
###########for循环的题目
用户登陆程序
1.输入用户名和密码
2.判断用户名和密码是否正确(‘name==root’,'passwd=‘westos’)
3.为了防止暴力破解,登陆次数仅有三次,如果超过三次机会,报错
for i in range(0, 3): ##范围 0,1,2
name = input('name:') ##两个输入
passwd = input('password:')
if name == 'root' and passwd == 'passwd': ##if判断是否一致
print('please in') ##一致就退出本次循环
break
else: ##不一致的情况
print('that'srong')
a = 2 - i ##用总数减去i当为0时自动退出
print('only have %d times,' % a)