专栏首页Laoqi's Linux运维专列文件类型+变量+数值字符串

文件类型+变量+数值字符串

Python变量

  • 变量是计算机内存中的一块区域,变量可以存储规定范围内的值,而且值可以改变。
  • Python下变量是对一个数据的引用,变量类似于一个标签,通过标签我们可以读取到标签的数据。

变量的命名

  • 变量名由字母、数字、下划线组成。
  • 变量不能以数字开头
  • 不可以使用关键字
  • a a1 _a

变量的赋值

  • 是变量的声明和定义的过程
In [1]: a = 123

In [2]: id(a)
Out[2]: 34580560    //存在内存的位置

In [3]: a = 456

In [4]: id(a)
Out[4]: 51939992    //位置发生变化
运算符与表达式
Python运算符包括
  • 赋值运算符
  • 算术运算符
  • 关系运算符
  • 逻辑运算符

表达式是将不同的数据(包括变量、函数)用运算符号按一定规则连接起来的一种式子。

In [5]: x = 2       //把 2 赋值给 x

In [6]: y = 'asd'   //把 asd 赋值给 y ,注意 当值是字符串的时候需要加 单引号

In [7]: y       //查看 y 的值
Out[7]: 'asd'

In [8]: x
Out[8]: 2

查看值得类型:

In [10]: type(x)
Out[10]: int

In [11]: type(y)
Out[11]: str
赋值运算符
In [12]: x = 3

In [13]: x += 2

In [14]: x
Out[14]: 5

In [15]: x -= 2

In [16]: x
Out[16]: 3

In [17]: x *= 2

In [18]: x
Out[18]: 6

In [19]: x /= 3

In [20]: x
Out[20]: 2

In [21]: x %= 3     //取余

In [22]: x
Out[22]: 2
算术运算符
In [23]: 3 + 4
Out[23]: 7

In [26]: 3 * 4 
Out[26]: 12

In [27]: 3 - 4
Out[27]: -1

In [28]: 3 / 4      //整除
Out[28]: 0

In [29]: 3.0 / 4    //可以得到小数
Out[29]: 0.75

In [30]: 4.0 // 3   //只取整数部分
Out[30]: 1.0

In [31]: 2 ** 2
Out[31]: 4

In [32]: 2 ** 3     //两个星号代表 "乘方"
Out[32]: 8

//在字符串中,+ 代表连接符
In [24]: 'a' + 'b'
Out[24]: 'ab'

In [25]: 'a' + '123'
Out[25]: 'a123'
关系运算符 (返回值为 “Ture” “False”)
In [34]: 2 > 3
Out[34]: False

In [35]: 3 < 5
Out[35]: True

In [36]: 1 >= 3
Out[36]: False

In [37]: 2 >= 2
Out[37]: True

In [38]: 2 == 2
Out[38]: True

In [39]: 2 != 2
Out[39]: False
逻辑运算符
and逻辑与: 两个或多个条件 均 成立 则为 “True”

or逻辑或: 只要一个条件成立 即为 “True”

not逻辑非: 取反!成立取反 则为 “False”
In [40]: 2 == 2 and 2 < 1
Out[40]: False

In [41]: 2 == 2 or 2 < 1
Out[41]: True

In [44]: not 2 < 2
Out[44]: True

如下:

从上到下 优先级 越来越高
        
从左到右 优先级 越来越高

数据类型

各类语言中假如 java或者c 只要定义一个参数需要先声明这个参数是什么类型! 但是python不需要声明,直接定义即可!

a = 10
b = "hello world"
c = 11.11

print(type(a),type(b),type(c))

输出是:

<class 'int'> <class 'str'> <class 'float'>

整型  字符串  浮点型
强制转换:

把如上浮点型的11.11强制转换成int型,后面不管有多少位小数,都会抹去。

print (int(c))

输出就为:
11
布尔类型:
d = True

print(type(d))

输出:
<class 'bool'>
浮点型 float
round(float, ndigits)

Float代表的数字, ngigits代表的是精度 大的规则是四舍六入 在五的情况上是有所不同

例如:

c = 11.15

print(round(c,1))   //保留一位,也就是小数点第二位四舍五入

11.2


c = 11.156

print(round(c,2))   //保留2位,也就是小数点第3位四舍五入

11.16

字符串常用的方法:

strip  字符串过滤空格,(只能过滤最前和最后的空格) 经常需要使用!!
replace   字符串内容替换
find(sub)   字符串中查找sub字符串的内容。如果找到,就返回字符串的下标,找不到就返回 -1。按control+鼠标左键 可以查看具体解释。
format    字符串格式化  
split   切割字符串

如上图:如果忘记一个方法,可以用默认的方法去打印出来,从第二个参数开始了解,第一个参数是他本身,不需要了解!!

replace (旧的值,新的值)

字符串的下标 是从0 开始!

字符串格式化
name = "zhangduanya"
name2 = "www"

print ("hello " + name)
print ("%s hahaha %s" %(name, name2))

hello zhangduanya
zhangduanya hahaha www
---------------------------
name = "zhangduanya"
name2 = 222

print ("hello %s's your age is %d" %(name, name2))

hello zhangduanya's your age is 222
strip:
print (" a1 23b s4d 5 ".strip())

a1 23b s4d 5        //过滤掉了最前和最后的空格
startswith

判断字符串是否以XXX开头

print("asdadqweadsads".startswith("asd"))   

True
join
a = ["a","b","c","d"]
print("&&&".join(a))

a&&&b&&&c&&&d

字符串取值

a = "a1b2c3d4e5"

print(a[1:4])       //从1开始取, “前开后闭”

1b2
--------
a = "a1b2c3d4e5"

print(a[1:])        //从1取到最后

1b2c3d4e5
----
a = "a1b2c3d4e5"

print(a[1:-1])      //从第一位取到倒数第一, “前开后闭” 最后一位不取

1b2c3d4e

list

在定义方面一定要避免 关键字的命名方式:

list = list()  × 应该避免这种

打印1-9这几个数字:

a =list()

for i in range(1,10):
    a.append(i)     //在输出的结果追加
print(a)

[1, 2, 3, 4, 5, 6, 7, 8, 9]

或者 :

print([i for i in range(1,10)])

list的方法:

a = ["aa", "21s", "23as", "11.11"]

a.append()          //追加
a.reverse()         //反转,前面的和后面的对调
a.sort()            //排序
a.pop()             //删除指定下标的元素,但是当你打印的时候,其返回值就是删除的值
a.index()           //返回一个元素的下标
a.insert()          //插入一个元素

当我们去排序一组字符串的时候:

a = ["aa", "21s", "23as", "11.11"]

print(a.sort())

None    //输出结果为None  意味着 a.sort() 没有返回值
---
a = ["aa", "21s", "23as", "11.11"]
a.sort()
print(a)    //这样即可

['11.11', '21s', '23as', 'aa']
-----
a = ["aa", "21s", "23as", "11.11"]
a.pop(2)        //删除指定下标的元素
print(a)

['aa', '21s', '11.11']
---
print(a.pop(2))

23as
---
a = ["aa", "21s", "23as", "11.11"]

print(a.index("11.11"))     //返回“11.11”这个元素的下标

3
---
a = ["aa", "21s", "23as", "11.11"]
a.insert(2, "zhdya")        //在下标2处添加一个元素
print(a)

['aa', '21s', 'zhdya', '23as', '11.11']
input 模块:
In [45]: input("pls input a number: ")
pls input a number: 123
Out[45]: 123

In [46]: input("pls input a number: ")
pls input a number: asd
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-46-01e758e3dda7> in <module>()
----> 1 input("pls input a number: ")

<string> in <module>()

NameError: name 'asd' is not defined

In [49]: input("pls input a number: ")
pls input a number: 'asd'   
Out[49]: 'asd'

//不难发现 input 模块 当你直接输入一个字符串它会当成变量,所以出错!只有加上 单引号 后才不会出错!
raw_input 模块
In [47]: raw_input("pls input a number: ")
pls input a number: 234
Out[47]: '234'

In [48]: raw_input("pls input a number: ")
pls input a number: qwe
Out[48]: 'qwe'

//不管你输入的是数字还是字符串,都会当成字符串来处理!

练习:(4则运算)

  • 要求从键盘读取数字
[[email protected] day01]# cat 3.py 
#!/usr/bin/python


num1 = input("Pls input a number: ")
num2 = input("Pls input a number: ")

print "%s + %s = %s" % (num1, num2, num1+num2)          //  %s 是格式化字符串的意思
print "%s - %s = %s" % (num1, num2, num1-num2)
print "%s * %s = %s" % (num1, num2, num1*num2)
print "%s / %s = %s" % (num1, num2, num1/num2)

[[email protected] day01]# python 3.py 
Pls input a number: 22
Pls input a number: 11
22 + 11 = 33
22 - 11 = 11
22 * 11 = 242
22 / 11 = 2

格式 描述

%% 百分号标记 #就是输出一个%
%c 字符及其ASCII码
%s 字符串
%d 有符号整数(十进制)
%u 无符号整数(十进制)
%o 无符号整数(八进制)
%x 无符号整数(十六进制)
%X 无符号整数(十六进制大写字符)
%e 浮点数字(科学计数法)
%E 浮点数字(科学计数法,用E代替e)
%f 浮点数字(用小数点符号)
%g 浮点数字(根据值的大小采用%e或%f)
%G 浮点数字(类似于%g)
%p 指针(用十六进制打印值的内存地址)
%n 存储输出字符的数量放进参数列表的下一个变量中

python的数据类型(数值+字符串)

In [52]: a = 212222222222222222222222222222

In [53]: type(a)
Out[53]: long       // 长整型

In [56]: 0x25al     // 0x 代表 16进制数
Out[56]: 602L       //转换成了 10进制数

In [57]: 3e+7
Out[57]: 30000000.0

In [59]: type(3e+7)
Out[59]: float

In [60]: 3.0/2
Out[60]: 1.5

In [61]: type(3.0/2)
Out[61]: float
字符串类型–string

有三种方法定义字符串类型

  • str = ‘this is a string’
  • str = ”this is a string”
  • str = ”’this is a string”’

三重引号(docstring)除了能定义字符串还可以用作注释。

In [70]: a = 'hello\nworld'

In [71]: print a
hello
world

//如下这种模式写起来比较好写。
In [73]: a = '''hello
    ...: world'''

In [74]: print a
hello
world
索引:
In [75]: a = 'abcde'

In [76]: a[0]
Out[76]: 'a'

In [77]: a[1]
Out[77]: 'b'

In [78]: a[-1]
Out[78]: 'e'

In [80]: a[0:2]     //从头开始 最后一个字符是不包含在内的
Out[80]: 'ab'

In [81]: a[:2]      //通常0是省略的
Out[81]: 'ab'

In [82]: a[1:]      //从第二个字符开始到最后
Out[82]: 'bcde'

In [83]: a[::1]
Out[83]: 'abcde'

In [84]: a[::2]     // 表示 步长
Out[84]: 'ace'

a b c d e
0 1 2 3 -1
-5 -4 -3 -2 -1      //字符abcde多种表示

In [85]: a[-4:-2]
Out[85]: 'bc'
或者
In [86]: a[1:3]
Out[86]: 'bc'

In [88]: a[-2:-4:-1]    // 最后 -1 表示 反方向 取字符
Out[88]: 'dc'

练习题:

将 “123” 转换成整数
将 “9999999999999999999” 转换成长整数
将 “3.1415926” 转换成一个浮点数
将 123 转换成一个字符串
现有以下字符串
字符串1:" abc deFGh&*ijkl opq mnrst((uvwxyz "
字符串2:" ABC#DEF GH%IJ MNOPQ KLRS&&TUVWX(*&YZ "
使用字符串的各种方法转换成如下方式
ABCDEFGHIJKLMNOPQRSTUVWXYZzyxwvutsrqponmlkjihgfedcba

—答案:—

In [91]: a = int("123")

In [92]: type(a)
Out[92]: int

In [93]: a = long("9999999999999999999999999999999999999999")

In [94]: type(a)
Out[94]: long

In [95]: a = float("3.1415926")

In [96]: type(a)
Out[96]: float

In [97]: a = str(123)

In [98]: type(a)
Out[98]: str

In [99]: a = " abc deFGh&*ijkl opq mnrst((uvwxyz "

In [101]: b = " ABC#DEF GH%IJ MNOPQ KLRS&&TUVWX(*&YZ "

最后一题:

# -*- coding: utf-8 -*-
# @Time    : 12/21/2017 10:15 AM
# @Author  : Zhdya
# @Email   : [email protected]
# @File    : test_1221.py
# @Software: PyCharm

# num1 = input("pls input a number: ")
# num2 = input("pls input a bumber: ")
#
# print "%s + %s =%s" % (num1, num2, num1 + num2)
# print "%s - %s =%s" % (num1, num2, num1 - num2)
# print "%s * %s =%s" % (num1, num2, num1 * num2)
# print "%s / %s =%s" % (num1, num2, num1 / num2)
# --------------------------

# " abc deFGh&*ijkl opq mnrst((uvwxyz "
# " ABC#DEF GH%IJ MNOPQ KLRS&&TUVWX(*&YZ "

str1 = " abc deFGh&*ijkl opq mnrst((uvwxyz "
str2 = " ABC#DEF GH%IJ MNOPQ KLRS&&TUVWX(*&YZ "

str1 = str1.strip()     # strip() 不指定参数就去掉字符串两端的空格
str2 = str2.strip()

# str3 = "---aaa+++"
# print str3.strip('-+')      # 去掉指定字符

# abc deFGh&*ijkl opq mnrst((uvwxyz
# ABC#DEF GH%IJ MNOPQ KLRS&&TUVWX(*&YZ    #下一步我们去掉不需要的字符+空格

str1 = str1.replace(' ','').replace('&','').replace('*','').replace('(','')      # replace() 替换不需要的字符为(空格即为删除)
str2 = str2.replace(' ','').replace('#','').replace('%','').replace('(*&','').replace('&','')

# 经过如上replace的操作后
# abcdeFGhijklopqmnrstuvwxyz
# ABCDEFGHIJMNOPQKLRSTUVWXYZ
## 继续操作 使用| 分割一下 便于切片
# |abcdeFGhijkl|opq|mn|rstuvwxyz
# |ABCDEFGHIJ|MNOPQ|KL|RSTUVWXYZ

str1 = str1.lower()      # 先把str1中的大写全部转换成小写
str1 = str1.lower()
str1 = str1[0:12] + str1[15:17] + str1[12:15] + str1[17:26]
str2 = str2[0:10] + str2[15:17] + str2[10:15] + str2[17:26]

# abcdefghijklmnopqrstuvwxyz
# ABCDEFGHIJKLMNOPQRSTUVWXYZ        ## 最终达到效果

# 最后一步 ABCDEFGHIJKLMNOPQRSTUVWXYZzyxwvutsrqponmlkjihgfedcba

print str2 + str1[::-1]

# ABCDEFGHIJKLMNOPQRSTUVWXYZzyxwvutsrqponmlkjihgfedcba  最终达到效果(但是这种实在是效率太低!)
字符串的一些方法
#s为字符串
# s.isalnum()  所有字符都是数字或者字母,为真返回 Ture,否则返回 False。
# s.isalpha()   所有字符都是字母,为真返回 Ture,否则返回 False。
# s.isdigit()     所有字符都是数字,为真返回 Ture,否则返回 False。
# s.islower()    所有字符都是小写,为真返回 Ture,否则返回 False。
# s.isupper()   所有字符都是大写,为真返回 Ture,否则返回 False。
# s.istitle()      所有单词都是首字母大写,为真返回 Ture,否则返回 False。
# s.isspace()   所有字符都是空白字符,为真返回 Ture,否则返回 False。

测试:

str1 = " ABC#DEF GH%IJ MNOPQ KLRS&&TUVWX(*&YZ "

print filter(lambda x:x.isalpha(),str1) 

# ABCDEFGHIJMNOPQKLRSTUVWXYZ   最后过滤的效果

ambda用于产生一个匿名表达式,组成部分为:lambda + ‘函数表达式’ ‘函数表达式’由一个冒号加上两个‘操作数’组成,如:

lambda x:x*3

冒号左边的操作数,作为函数的参数;冒号右边的作为函数的放回值!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 元祖+列表

    老七Linux
  • 数据类型转换

    老七Linux
  • if 条件语句

    老七Linux
  • 1.numpy的用法

    zhang_derek
  • 九宫格数独游戏

    WolframChina
  • 【Python】05、python程序结

    如果是复合对象,Python会检查其所有部分,包括自动遍历各级嵌套对象,直到可以得出最终结果

    py3study
  • 基于Bushido的DDoS服务只需要几美元就能打垮一个网站

    近期,来自FortiGuard实验室的安全研究专家发现了一个名叫“0x-booter”的DDoS即服务平台,这个平台虽然代码架构不优秀,但是功能却非常强大,而且...

    FB客服
  • python中elif条件语句应用,让程序更有效率

    3、else语句模块,由if语句模块的条件来决定是否进入,只有条件的结果为False的时候,才执行。

    刘金玉编程
  • 欧盟启动新数字战略:覆盖AI、数据等领域,Facebook等最先受影响

    当地时间周三,欧盟正式宣布启动新的数字战略“塑造欧洲数字未来”。围绕这一战略,欧盟将颁布多项新法规,覆盖AI、数据等多个领域。

    镁客网
  • 基于 HTML5 WebGL 的故宫人流量动态监控系统

    在当代社会,故宫已经成为一个具有多元意义的文化符号,在历史、艺术、文化等不同领域发挥着重要的作用,在国际上也成为能够代表中国文化甚至中国形象的国际符号。近几年故...

    HT_hightopo

扫码关注云+社区

领取腾讯云代金券