01-Python-变量、数据类型和数据运算

1、变量命名规范

  • 变量名只能包含字母数字下划线。变量名可以字母或者下划线开头,但不能以数字开头。例如,variable_1合法,但是1_variable就是非法的变量命名。
  • 变量名不能包含空格,但可以使用下划线来分割单词。例如,Hello_World合法,但是Hello World就非法。
  • 不能将关键字以及函数名作为变量名
  • 变量名应该既简短又具有描述性。
  • 变量名对大小写敏感。
  • 慎用容易混淆的字母和数字。例如,字母l和数字1,字母o和数字0。

1.1、 变量的赋值

1 name = "Druid chen"
2 name2 = name 
3 
4 print(name,name2)  #打印结果为Druid chen Druid chen
5 
6 
7 name = "Druid"  #改变变量的值
8 
9 print(name,name2)  #打印结果为Druid Druid chen

 

2、数据运算

2.1、数字类型

常见的有整数、浮点型。对于浮点数的运算结果,小数位数可能是不确定的精度损失问题戳我了解详情

int(整型)

  在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
  在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
long(长整型)
  跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
  注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
float(浮点型)
  浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。python浮点型默认精度为17,如果想要获取高精度浮点型,可以使用"decimal模块(默认28位) + getcontext().prec = 位数" 来实现。
complex(复数)
  复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。 
注:Python中存在小数字池:-5 ~ 257

 

 2.2、布尔值 

  真或假(1 或 0。1代表为真,0代表为假)。可用bool()方法来判断真假。
  

 2.3、字符串

字符串就是一系列的字符。在Python中,用引号(单引号'...',双引号"..."皆可)括起来的都是字符串。字符串不能修改

2.3.1、修改字符串大小写

name = "ada lovelace"
print(name.title())  #title()以首字母大写的方式显示字符串中的每个单词。

  

name = "Ada Lovelace"
print(name.upper()) #输出全为大写
print(name.lower())  #输出全为小写

 

2.3.2、合并(拼接)字符串

1 first_name = "ada"
2 last_name = "lovelace"
3 full_name = first_name + " " + last_name #使用+来合并first_name、空格和last_name
4 
5 print("Hello, " + full_name.title() + "!" )
6 
7 '''message = "Hello, " + full_name.title() + "!" 
8   print(message)'''

这里的连接符“+”会在内存中新开辟一块内存空间,因此因该避免此种用法。

2.3.3、制表符、换行符

空白泛指任何非打印字符,例如空格、制表符和换行符。\t为制表符,\n为换行符。

2.3.4、删除空白 

 1 language = 'Python   '
 2 language  #'Python  '
 3 language  #'Python'
 4 
 5 language.rstrip()  #'Python'。rstrip()方法可以去掉末尾空格,但只是暂时的,language的值没有被改变。
 6 language  #'Python  '。空格仍然在。
 7 
 8 language = language.rstrip()  #要永久删除字符串中的空白,则可以将结果保存在变量中。
 9 language  #'Python'
10 
11 #lstrip()方法可以删除字符串左边的空格;#strip()方法删除字符串左右的空格。

 

2.3.5、常用方法

1 name.capitalize()  #首字母大写
2 name.casefold()   #大写全部变小写
3 name.center(50,"-")  #输出 '---------------------Alex Li----------------------'
4 name.count('lex')  #统计 lex出现次数
5 name.encode()  #将字符串编码成bytes格式
6 name.endswith("Li")  #判断字符串是否以 Li结尾
7  "Alex\tLi".expandtabs(10)  #输出'Alex      Li', 将\t转换成多长(10)的空格 
8  name.find('A')  #查找A,找到返回其索引, 找不到返回-1

 

2.3.6、字符串格式化

 1 #format方法
 2 msg = "my name is {}, and age is {}"
 3 msg.format("alex",22)  #'my name is alex, and age is 22'
 4 
 5 msg = "my name is {1}, and age is {0}"
 6 msg.format("alex",22)  #'my name is 22, and age is alex'
 7    
 8 msg = "my name is {name}, and age is {age}"
 9 msg.format(age=22,name="alex")  #'my name is alex, and age is 22'
10  
11 _username = input("请输入你的用户名:")
12 _age = input("请输入你的年龄:")
13 print("你好:{name},你的年龄:{age}".format(name=_username,age=_age))
14 
15 #format_map
16 msg = "my name is {name}, and age is {age}"
17 msg.format_map({'name':'alex','age':22})  #'my name is alex, and age is 22'
18  
19 #使用%
20 'Hello, %s' % 'world'  #'Hello, world'
21  
22 'Hi, %s, you have $%d.' % ('Michael', 1000000)  #'Hi, Michael, you have $1000000.'
23    
24 #格式化整数和浮点数还可以指定是否补0和整数与小数的位数:
25 '%2d-%02d' % (3, 1)  #' 3-01',第一个2的意思为两位,0的意思为用数字0占一位,第二个2的意思为两位
26 '%.2f' % 3.1415926  #'3.14',取小数点后两位
27    
28 #有些时候,字符串里面的%是一个普通字符怎么办?这个时候就需要转义,用%%来表示一个%:
29 'growth rate: %d %%' % 7  #'growth rate: 7 %'

   那么我们应该用什么%还是format呢?看下面的例子:

c = (250, 250)  # 定义一个坐标值
s1 = "敌人坐标:%s" % c  # 使用%来格式化

print(s1)  # 代码会报typeerror错误 ---》TypeError: not all arguments converted during string formatting

  怎么解决该问题呢?

c = (250, 250)  # 定义一个坐标值
s1 = "敌人坐标:%s" % (c, )  # 用该格式

print(s1)   # 正常输出结果 ---》敌人坐标: (250, 250)

  而如果我们使用format,那么就不会存在该问题:

c = (250, 250)
s1 = "敌人坐标: {}".format(c)

print(s1)  # 正常输出结果 ---》敌人坐标: (250, 250)

  因此在日常使用中应该选format方法。

  补充:在Python3.6中新增加了f-strings方法

name = "Druid"
age = 8
t = f" My Name is {name}, I'm {age} years old "

print(t) # 输出结果 ---》 My Name is Druid, I'm 8 years old

  

3、数据运算 

3.1 运算符

算术运算:

 

比较运算:

 

  赋值运算:

  

 

   逻辑运算:

  

  

  成员运算:

  

 

身份运算:

 

  位运算:

  

  按位取反运算规则详解猛击我

 

3.2 运算符优先级

  

 

4、 使用函数str()避免类型错误

 1 age = 23
 2 msg = "Happy " + age + "rd Birthday"
 3 
 4 print(msg)  #会报'age'的类型错误。
 5 
 6 #使用下面的方法可避免该错误
 7 
 8 age = str(23)  #将int类型的23转换为字符串,以字符2和3处理。
 9 msg = "Happy " + age + "rd Birthday"
10 
11 print(msg)

 

5、逻辑运算

  • and:如果X为False, 则X and Y返回False,否则返回Y的值。(短路运算)
  • or:如果X为True,则X and Y返回True,否则返回Y的值。(短路运算)
  • not:如果X为True,则not X返回False。

 

6、三元运算

result = value1 if 条件 else value2

  • 如果条件为真:result = value1
  • 如果条件为假:result = value2
1 a,b,c = 1,2,3
2 
3 d = c+1 if a < b else c  #如果判断条件为真,则返回d=c+1
4 print(d)  #结果为4
5 
6 d = c+1 if a > b else c  #否则返回c
7 print(d)  #结果为3

  

posted @ 2017-10-16 13:59  Druid_Py  阅读(435)  评论(0编辑  收藏  举报