《Python编程:从入门到实践》第二章:变量和简单数据类型

变量

1、在程序中可随时修改变量的值,而Python将始终记录变量的最新值。

创建 hello_world.py,添加下面代码:

message = "Hello Python world!" 
print(message)

message = "Hello Python Crash Course world!" 
print(message)

如果运行这个程序,将看到两行输出:

Hello Python world!
Hello Python Crash Course world!
2、变量的命名和使用
  • 变量名只能包含字母、数字和下划线。变量名可以字母或下划线打头,但不能以数字打头,例如,可将变量命名为message_1,但不能将其命名为1_message。
  • 变量名不能包含空格,但可使用下划线来分隔其中的单词。例如,变量名greeting_message 可行,但变量名greeting message会引发错误。
  • 不要将Python关键字和函数名用作变量名,即不要使用Python保留用于特殊用途的单词, 如print。
  • 变量名应既简短又具有描述性。例如,name比n好,student_name比s_n好,name_length 比length_of_persons_name好。
  • 慎用小写字母l和大写字母O,因为它们可能被人错看成数字1和0

二、字符串

在Python中,用引号括起的都是字符串,其中的引号可以是单引号, 也可以是双引号。

1、使用方法修改字符串的大小写

输入:

name = 'ada lovelace'
print(name.title()) #以首字母大写的方式显示每个单词
print(name.upper()) #将单词全部变成大写
print(name.lower()) #将单词全部变成小写

结果:

Ada Lovelace
ADA LOVELACE
ada lovelace
2、合并(拼接)字符串

python使用加号(+)来合并字符串,这种合并字符串的方法称为拼接。
通过拼接,可使用存储在变量中的信息来创建完整的消息。

first_name = "ada"
last_name = "lovelace"
full_name = first_name + " " + last_name
print(full_name)

#使用了方法title()来将姓名设置为合适的格式
first_name = "ada"
last_name = "lovelace"
full_name = first_name + " " + last_name
print("Hello, " + full_name.title() + "!")

#使用拼接来创建消息,再把整条消息都存储在一个变量中:
first_name = "ada"
last_name = "lovelace"
full_name = first_name + " " + last_name
message = "Hello, " + full_name.title() + "!"
print(message)

输出:

ada lovelace
Hello, Ada Lovelace!
Hello, Ada Lovelace!
3、使用制表符或换行符来添加空白

编程中,空白泛指任何非打印字符,如空格、制表符和换行符。可使用空白来组织输出, 以使其更易读。

print("----------------")
print("Python")
#输出Python
print("----------------")
print("\tPython") 
#字符串中添加制表符
print("----------------")
print("Languages:\nPython\nC\nJavaScript") 
#字符串中添加换行符
print("----------------")
print("Languages:\n\tPython\n\tC\n\tJavaScript") 
#字符串中添加制表符和换行符

输出:

----------------
Python
----------------
	Python
----------------
Languages:
Python
C
JavaScript
----------------
Languages:
	Python
	C
	JavaScript
4、删除空白

Python能够找出字符串开头和末尾多余的空白
要确保字符串末尾没有空白,可使用方法 rstrip()

favorite_language = 'python ' 
print(favorite_language)
#‘python ’
print(favorite_language.rstrip())
#‘python’
print(favorite_language) #表示空格的删除是暂时的
#‘python ’

要永久删除这个字符串中的空白,必须将删除操作的结果存回到变量中:

favorite_language = 'python '
favorite_language = favorite_language.rstrip()
print(favorite_language)

#'python'
  • 删除字符串开头的空白:lstrip()
  • 删除字符串结尾的空白:rstrip()
  • 删除字符串两端的空白:strip()
favorite_language = ' python '
print(favorite_language.rstrip())
#‘ python’
print(favorite_language.lstrip())
#‘python ’
print(favorite_language.strip())
#‘python’
print(favorite_language)
#‘ python ’

三、数字

1、整型

Python 里面万物皆对象(object),整型也不例外,只要是对象,就有相应的属性 (attributes) 和方法(methods)。

a=2020
print(a,type(a)) 
#2020 <class 'int'>

该函数找到一个整数的二进制表示,再返回其长度。

a = 1031
print(bin(a))  
# 0b10000000111
print(a.bit_length())  
# 11
2、浮点型
print(0.2+0.1)
#0.30000000000000004
print(3*0.1)
#0.30000000000000004

分析:
所有语言都存在这种问题,没有什么可担心的。Python会尽力找到一种方式,以尽可能精确地表示结果,但鉴于计算机内部表示数字的方式,这在有些情况下很难。就现在而言,暂时忽略多余的小数位数即可

print(1, type(1))
# 1 <class 'int'>

print(1., type(1.))
# 1.0 <class 'float'>

a = 0.00000023
b = 2.3e-7
print(a)  # 2.3e-07
print(b)  # 2.3e-07

有时候我们想保留浮点型的小数点后 n 位。可以用 decimal 包里的 Decimal 对象和 getcontext() 方法来实现。

import decimal
from decimal import Decimal

Python 里面有很多用途广泛的包 (package),用什么你就引进 (import) 什么。包也是对象,也可以用上面提到的dir(decimal) 来看其属性和方法。比如 getcontext() 显示了 Decimal 对象的默认精度值是 28 位 (prec=28),展示如下:

a = decimal.getcontext()
print(a)

# Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[InvalidOperation, DivisionByZero, Overflow])

让我们看看 1/3 的保留 28 位长什么样?

b = Decimal(1) / Decimal(3)
print(b)
# 0.3333333333333333333333333333

那保留 4 位呢?用 getcontext().prec 来调整精度。

decimal.getcontext().prec = 4
c = Decimal(1) / Decimal(3)
print(c)
# 0.3333
3、布尔型

布尔 (boolean) 型变量只能取两个值,True 和 False。当把布尔变量用在数字运算中,用 1 和 0 代表 True 和 False。

print(True + True)  
# 2
print(True + False)  
# 1
print(True * False)  
# 0

除了直接给变量赋值 True 和 False,还可以用 bool(X) 来创建变量,其中 X 可以是:

  • 基本类型:整型、浮点型、布尔型
  • 容器类型:字符、元组、列表、字典和集合
print(type(0), bool(0), bool(1))
# <class 'int'> False True

print(type(10.31), bool(0.00), bool(10.31))
# <class 'float'> False True

print(type(True), bool(False), bool(True))
# <class 'bool'> False True

bool 作用在基本类型变量的总结:X 只要不是整型 0、浮点型 0.0,bool(X) 就是 True,其余就是 False。

print(type(''), bool(''), bool('python'))
# <class 'str'> False True

print(type(()), bool(()), bool((10,)))
# <class 'tuple'> False True

print(type([]), bool([]), bool([1, 2]))
# <class 'list'> False True

print(type({}), bool({}), bool({'a': 1, 'b': 2}))
# <class 'dict'> False True

print(type(set()), bool(set()), bool({1, 2}))
# <class 'set'> False True

bool 作用在容器类型变量的总结:X 只要不是空的变量,bool(X) 就是 True,其余就是 False。

确定bool(X) 的值是 True 还是 False,就看 X 是不是空,空的话就是 False,不空的话就是 True。

  • 对于数值变量,0, 0.0 都可认为是空的。
  • 对于容器变量,里面没元素就是空的。
4、使用函数str()避免类型错误
age = 23
message = "Happy " + age + "rd Birthday!"
print(message)

结果:

Traceback (most recent call last):
File "birthday.py", line 2, in <module>
message = "Happy " + age + "rd Birthday!"
TypeError: Can't convert 'int' object to str implicitly

正确做法:调用函数str(),让Python将非字符串值表示为字符串

age = 23
message = "Happy " + str(age) + "rd Birthday!"
print(message)

输出:

Happy 23rd Birthday!
5、数据类型与转换
  • 获取信息
print(type(1))  
# <class 'int'>
print(type(5.2))  
# <class 'float'>
print(type(True))  
# <class 'bool'>
print(type('5.2'))  
# <class 'str'>
  • 获取类型信息 isinstance()
print(isinstance(1, int))  
# True
print(isinstance(5.2, float))  
# True
print(isinstance(True, bool))  
# True
print(isinstance('5.2', str))  
# True
  • 转换为整型 int()
  • 转换为字符串 str()
  • 转换为浮点型 float()
print(int('520'))  # 520
print(int(520.52))  # 520
print(float('520.52'))  # 520.52
print(float(520))  # 520.0
print(str(10 + 10))  # 20
print(str(10.1 + 5.2))  # 15.3

四、运算符

1、常用运算符
运算符 描述
// 取整除
**
&
I
^ 异或
~ 取反
<< 左移动
>> 右移动
and 布尔类型与
or 布尔类型或
not 布尔类型非
is 判断两个标识符是否引用同一个对象
is not 判断两个标识符是否引用不同对象
2、运算符优先级
运算符 描述(由上至下对应优先级由高到低)
** 幂运算
~ + - 取反、正号、负号
* / % // 乘、除、取模、取整除
+ - 加法、减法
>> << 右移、左移
&
^ I 异或、或
<= < > >= 比较运算符
== != 是否等于、是否不等于
= %= /= //= -= += *= **= 赋值运算符
is is not 身份运算符
in not in 成员运算符
not and or 逻辑运算符
发布了25 篇原创文章 · 获赞 0 · 访问量 963
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览