Python-一级4

数据类型之间的转换

 mindmap
 (本课知识点)
  数据类型转换
   隐式转换
   显式转换
  eval["eval()内置函数"]

隐式类型转换

进行数字加法运算时,Boolean 类型变量,隐式转换为数字 1 进行运算。

1
2
b = True
print(10 + b) #11

显式转换

函数 描述
int(p) 将参数 p 转换为整数类型
float(p) 将参数 p 转换为浮点数类型
str(p) 将参数 p 转换为字符串类型
chr(p) 将参数(整数)p 转换为一个字符
ord(p) 将参数 p 转换为对应的整数值
hex(p) 将参数 p 转换为十六进制字符串
oct(p) 将参数 p 转换为八进制字符串
bin(p) 将参数 p 转换为二进制字符串

int(parameter)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# float 类型转 int 类型
# int(parameter)
pi = 3.1415926
temperature = -93.2 #南极最低气温
price = 99.9
print('float 类型转 int 类型:', int(pi)) #3
print('float 类型转 int 类型:', int(temperature)) #-93
print('float 类型转 int 类型:', int(price)) #99
string_int = '99'
string_float = '9.9'
string_num = '1E2'
string_bit = '1000'
print('str 类型转 int 类型:', int(string_int)) #str 类型转 int 类型: 99
print('二进制字符串转换为十进制:', int(string_bit, 2)) #二进制字符串转换为十进制:8
#print('str 类型转 int 类型:', int(string_float)) #ValueError: invalid literal for int() with base 10: '9.9'
#print('str 类型转 int 类型:', int(string_num)) #ValueError: invalid literal for int() with base 10: '1E2'

float(parameter)

1
2
3
4
# int 转 float 类型
# float(parameter)
print('int 类型转换为 float 类型:', float(20), type(float(20)))
print('str 类型转换为 float 类型:', float('20'), type(float('20'))) #20.0

str(parameter)

1
2
3
4
5
6
7
# str(parameter)
# int 转 str
int_str = 10
print('int 类型转 str 类型:', str(int_str), type(str(int_str))) #10 int 类型转 str 类型: <class 'str'>
# float 转 str
float_str = '3.1415926'
print('float 类型转 str 类型:', str(float_str), type(str(float_str))) #3.1415926 float 类型转 str 类型: <class 'str'>

+ 的使用

1
2
print('100' + '200') #100200
print(int('100')+int('200')) #300

chr(parameter)

1
2
3
# unicode码 33 转换为相应的字符 !
int_ascII_str = 33
chr(int_ascII_str) #!

进制转换

1
2
3
4
5
6
# 十进制转换为二进制
print('33 转换为二进制:', bin(33)) #33 转换为二进制: 0b100001
# 十进制转换为八进制
print('33 转换为八进制:', oct(33)) #33 转换为八进制: 0o41
# 十进制转换为十六进制
print('33 转换为十六进制:', hex(33)) #33 转换为十六进制: 0x21

思考:

  • 与 0xf2 值相等的是(342,242,0b11010010,0o362)

算法:$ 2 * 16^0 + 15*16^1 = 2 + 240 = 242$

1
int('0xf2',16) #242

eval(parameter) 函数的使用

Python 内置函数,用于去掉字符串最外侧的引号,并按照 Python 语句方式执行去掉引号后的语句

语法格式:variable=eval(string)

1
2
3
4
5
# 计算下列字符串等式
str_equation = '1.1 * 3'
# 使用 eval() 内置函数,去掉引号,并执行去掉引号后的语句
equation = eval(str_equation)
print(equation, type(equation)) #3.3000000000000003 <class 'float'>

eval() 函数经常与 input() 函数一起使用


N 个路灯间

1
2
3
4
5
6
7
input_distance = input('请输入两个路灯之间的距离(单位:m):') #用户输入可能是小数
input_num=input('请输入路灯的数量:') #用户输入一定是整数
total_distance=eval(input_distance)*(eval(input_num)-1)
#print(input_num+'个路灯之间的距离是:', input_distance * (input_num - 1)) #TypeError: unsupported operand type(s) for -: 'str' and 'int'
print(type(input_num), type(input_distance)) #<class 'str'> <class 'str'>
print(input_num+'个路灯之间的距离是:', total_distance , 'm')
print('%s个路灯之间的距离是%d米'%(input_num, total_distance))

%s 字符串占位符
%d 数字占位符

改造以上案例

1
2
...
print('%s个路灯之间的距离是%d米'%(input_num, total_distance))