变量的命名:
变量的赋值:
In [1]: a = 123
In [2]: id(a)
Out[2]: 34580560 //存在内存的位置
In [3]: a = 456
In [4]: id(a)
Out[4]: 51939992 //位置发生变化
表达式是将不同的数据(包括变量、函数)用运算符号按一定规则连接起来的一种式子。
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'
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'>
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
print (" a1 23b s4d 5 ".strip())
a1 23b s4d 5 //过滤掉了最前和最后的空格
判断字符串是否以XXX开头
print("asdadqweadsads".startswith("asd"))
True
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() × 应该避免这种
打印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)])
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']
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 模块 当你直接输入一个字符串它会当成变量,所以出错!只有加上 单引号 后才不会出错!
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 存储输出字符的数量放进参数列表的下一个变量中
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
有三种方法定义字符串类型
三重引号(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
冒号左边的操作数,作为函数的参数;冒号右边的作为函数的放回值!