人生苦短,我用python(一)

文章目录

  • 1. python
    • 1. python的起源
  • 1.1解释器与编译器
    • 1.2 python的特点
  • 2.安装python3
  • 3.python2.x 与 python3.x的区别
  • 4.python中的变量
    • 4.1 变量的类型
    • 4.2 变量类型的临时转换
    • 4.3 input,getpass,raw_input
    • 4.4 格式化输出
      • 固定位小数
      • 固定位整数
      • 输出百分数
  • 5. python第三方软件pycharm的应用
    • 5.1 if判断语句
      • and or
      • import random 随机数
    • 5.2 for循环语句
      • range
      • 0~100求和
      • 三次密码登陆练习
    • 5.3 快捷键应用
    • 5.4 break continue exit
      • 命令行提示符的实现
      • 求两个数的最大公约数和最小公倍数
    • 5.5while循环
      • 三次密码登陆练习
      • 死循环
      • while嵌套(九九乘法表)
  • 6. 字符串
    • 字符串的特性
    • 字符串的常用方法
    • 变量名定义是否合法
    • 字符串的对齐
    • 字符串的替换
    • 字符串的统计
    • 字符串的分离和连接
      • 练习题
    • 综合练习
  • 7.列表
    • 列表的创建
    • 列表的特性
      • 列表的练习01
      • 列表的练习02
    • 列表元素的增加
    • 列表元素的删除
    • 列表元素的修改
    • 列表的练习

1. python

1. python的起源

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这个语言的改进

1.1解释器与编译器

解释器:
解释器(英语: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)

总结:编译型语言执行速度快;解释行语言跨平台能力强。

1.2 python的特点

python拥有一个强大的标准库
python社区提供了大量的第三方库:不是由python官方开发的,是由python爱好者来开发的(标准库虽然强大但能力有限),当今最热门的都包含在内。

python是一个完全面向对象的语言,面向对象是一种思维方式,也是一们程序设计技术。
面向对象:解决一个问题前,首先考虑是由谁而做,怎么做事情是谁的职责。(对象就是谁)
要解决复杂问题,就可以找多个不同的对象,各司其职,共同实现,最终完成

2.安装python3

我们首先在系统中安装python3.6版本
在这里插入图片描述
人生苦短,我用python(一)_第1张图片
在这里插入图片描述
人生苦短,我用python(一)_第2张图片
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这时我们就可以在shell解释其中使用python3.我们为了方便安装python专用的第三方软件,使用python:
人生苦短,我用python(一)_第3张图片

[kiosk@foundation70 ~]sh pycharm.sh 运行安装脚本

进入安装界面
人生苦短,我用python(一)_第4张图片
人生苦短,我用python(一)_第5张图片
人生苦短,我用python(一)_第6张图片
人生苦短,我用python(一)_第7张图片
人生苦短,我用python(一)_第8张图片
首先我们设定字体大小:
file–>setting–>editor–>font–>size
人生苦短,我用python(一)_第9张图片
固定标题的设定:
file–>setting–>editor–>file and code templates–>python script
人生苦短,我用python(一)_第10张图片
人生苦短,我用python(一)_第11张图片

3.python2.x 与 python3.x的区别

两者使用的编码方式不同,python2.x使用ASCII编码方式,python3.x使用utf-8编码方式
人生苦短,我用python(一)_第12张图片
人生苦短,我用python(一)_第13张图片
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

4.python中的变量

4.1 变量的类型

人生苦短,我用python(一)_第14张图片
人生苦短,我用python(一)_第15张图片
人生苦短,我用python(一)_第16张图片
人生苦短,我用python(一)_第17张图片
人生苦短,我用python(一)_第18张图片

4.2 变量类型的临时转换

人生苦短,我用python(一)_第19张图片
在这里插入图片描述
人生苦短,我用python(一)_第20张图片
在这里插入图片描述
在这里插入图片描述
人生苦短,我用python(一)_第21张图片

4.3 input,getpass,raw_input

人生苦短,我用python(一)_第22张图片
人生苦短,我用python(一)_第23张图片
人生苦短,我用python(一)_第24张图片
人生苦短,我用python(一)_第25张图片
在这里插入图片描述
在这里插入图片描述
人生苦短,我用python(一)_第26张图片

4.4 格式化输出

人生苦短,我用python(一)_第27张图片
人生苦短,我用python(一)_第28张图片

固定位小数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

固定位整数

在这里插入图片描述
在这里插入图片描述

输出百分数

人生苦短,我用python(一)_第29张图片

5. python第三方软件pycharm的应用

在之前我么已经安装好了python的开发软件。现在就让我恶魔年来应用他吧。

5.1 if判断语句

人生苦短,我用python(一)_第30张图片
人生苦短,我用python(一)_第31张图片

and or

and
1 and 2
两个条件同时满足 就返回True
只要有一个条件不满足,就返回False

or
1 or 2
两个条件只要满足一个 就返回True
两个条件都不满足,就返回False

人生苦短,我用python(一)_第32张图片

import random 随机数

人生苦短,我用python(一)_第33张图片
在这里插入图片描述

5.2 for循环语句

range

人生苦短,我用python(一)_第34张图片
在这里插入图片描述

0~100求和

人生苦短,我用python(一)_第35张图片
人生苦短,我用python(一)_第36张图片

三次密码登陆练习

人生苦短,我用python(一)_第37张图片

5.3 快捷键应用

ctrl+alt+s pycharm设置界面
alt+insert 如何快速创建文件
ctrl+alt+l 格式化python代码, 使得风格好看
ctrl+z 如何撤销代码的修改
ctrl+shift+z 如何取消撤销的代码的修改
shift+F6 快速重命名
ctrl+/ 快速注释代码
ctrl+/ 快速取消注释代码

5.4 break continue exit

break:跳出整个循环 不会再执行循环后面的内容
人生苦短,我用python(一)_第38张图片
人生苦短,我用python(一)_第39张图片
continue:跳出本次循环,continue后面的代码不会执行
人生苦短,我用python(一)_第40张图片
人生苦短,我用python(一)_第41张图片
exit:结束程序的运行
人生苦短,我用python(一)_第42张图片
人生苦短,我用python(一)_第43张图片

命令行提示符的实现

人生苦短,我用python(一)_第44张图片

求两个数的最大公约数和最小公倍数

人生苦短,我用python(一)_第45张图片

5.5while循环

while 条件满足:
语句1…
else:
循环完成后 要执行的语句

三次密码登陆练习

人生苦短,我用python(一)_第46张图片

死循环

人生苦短,我用python(一)_第47张图片

while嵌套(九九乘法表)

人生苦短,我用python(一)_第48张图片

6. 字符串

人生苦短,我用python(一)_第49张图片
人生苦短,我用python(一)_第50张图片

字符串的特性

人生苦短,我用python(一)_第51张图片
人生苦短,我用python(一)_第52张图片
人生苦短,我用python(一)_第53张图片

字符串的常用方法

人生苦短,我用python(一)_第54张图片
人生苦短,我用python(一)_第55张图片
人生苦短,我用python(一)_第56张图片
人生苦短,我用python(一)_第57张图片

变量名定义是否合法

人生苦短,我用python(一)_第58张图片

字符串的对齐

人生苦短,我用python(一)_第59张图片

字符串的替换

人生苦短,我用python(一)_第60张图片
人生苦短,我用python(一)_第61张图片

字符串的统计

人生苦短,我用python(一)_第62张图片

字符串的分离和连接

在这里插入图片描述
人生苦短,我用python(一)_第63张图片
人生苦短,我用python(一)_第64张图片
在这里插入图片描述

练习题

  • 题目描述:

给定一个句子(只包含字母和空格), 将句子中的单词位置反转,
单词用空格分割, 单词之间只有一个空格,前>后没有空格。
比如: (1) “hello xiao mi”-> “mi xiao hello”

  • 输入描述:

输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个字符)

  • 输出描述:

对于每个测试示例,要求输出句子中单词反转后形成的句子

  • 示例1:

  • 输入
    hello xiao mi

  • 输出
    mi xiao hello

人生苦短,我用python(一)_第65张图片
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

综合练习

1. 设计一个程序,帮助小学生练习10以内的加法
详情:
随机生成加法题目;
学生查看题目并输入答案;
判别学生答题是否正确?
退出时, 统计学生答题总数,正确数量及正确率(保留两位小数点);

2. 小学生算术能力测试系统:
设计一个程序,用来实现帮助小学生进行百以内的算术练习,
它具有以下功能:提供10道加、减、乘或除四种基本算术运算的题目;
练习者根据显示的题目输入自己的答案,
程序自动判断输入的答案是否正确并显示出相应的信息。

题目分析:
第一题:首先我们为了建立10以内的加减法,我们必须生成 10以内的随机数,使用第三方资源包import random,具体操作代码如下。
人生苦短,我用python(一)_第66张图片
人生苦短,我用python(一)_第67张图片
技术总结:
其实我们不应该规定循环次数,而是使用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) )

运行结果如下:
人生苦短,我用python(一)_第68张图片
代码总结:
1)我们需要将所有的运算符号都确认一次,因为无法确定符号的type,所以我们一律用字符串型进行比较。
2)在做除法时我们没有规定小数的位数,
3)我们是否可以使用case进行符号确认,这样我们就可以减少代码的计算,时间复杂度。
所以我们得到解决方法如下:

7.列表

列表的创建

数组:存储同一种数据类型的集合,scores = (34,56,90,100…)
列表(打了激素的数组):可以存储任意数据类型
人生苦短,我用python(一)_第69张图片
在这里插入图片描述
人生苦短,我用python(一)_第70张图片
在这里插入图片描述

列表的特性

在这里插入图片描述
人生苦短,我用python(一)_第71张图片
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

列表的练习01

假定有下面这样的列表:
names = [‘fentiao’, ‘fendai’, ‘fensi’, ‘apple’]
输出结果为:‘I have fentiao, fendai, fensi and apple.’
在这里插入图片描述
在这里插入图片描述
技术总结:我们在输出时,如果是变量之间的链接,我们就可以用“,”进行链接,如果输出中有指定的字符串我们就需要将所有的输出用“+”链接。

列表的练习02

题目:输入某年某月某日(yyyy-MM-dd),
判断这一天是这一年的第几天?
方法一:
人生苦短,我用python(一)_第72张图片
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
方法二:
人生苦短,我用python(一)_第73张图片
人生苦短,我用python(一)_第74张图片

列表元素的增加

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

列表元素的删除

人生苦短,我用python(一)_第75张图片
人生苦短,我用python(一)_第76张图片
人生苦短,我用python(一)_第77张图片
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

列表元素的修改

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

列表的练习

第一题:
有一个列表,其中包括 10 个元素,
例如这个列表是[1,2,3,4,5,6,7,8,9,0],
要求将列表中的每个元素一次向前移动一个位置,
第一个元素到列表的最后,然后输出这个列表。
最终样式是[2,3,4,5,6,7,8,9,0,1]
方法一:
人生苦短,我用python(一)_第78张图片
在这里插入图片描述
方法二:
在这里插入图片描述
在这里插入图片描述
技术总结:两种方法相比较,第二种方法明显,计算量更少,所用时间更短,大大降低了资源的浪费。

第二题:
问题描述:按照下面的要求实现对列表的操作:
产生一个列表,其中有 40 个元素,每个元素是 50 到 100 的一个随机整数
如果这个列表中的数据代表着某个班级 40 人的分数,请计算成绩低于平均分的学生人数
对上面的列表元素从大到小排序并输出li.sort(reverse=True)
方法一:
人生苦短,我用python(一)_第79张图片
在这里插入图片描述
方法二:
人生苦短,我用python(一)_第80张图片
在这里插入图片描述
技术总结:
我们可以得到,第二种方法与第一种方法方法相比较,使用了内值函数,因此设定的变量及函数步骤因此都变少,知识点总结:

sum( )用于计算列表中总值的函数
li.sort( )排序一个列表(从小到大)
li.sort( reserve = True)  (从大到小)

你可能感兴趣的:(shell,Linux,运维)