Python基础之进制和数据类型

1. 概述

Python语言是一种简单易学的高级编程语言,其代码简洁易懂,被广泛应用于数据分析、人工智能、web开发等领域。本文将介绍Python中数据类型的相关知识和进制转换的方法。

2. 数据类型

2.1 基本类型

Python中的基本数据类型有整型、浮点型、布尔型、字符串型、空值类型。

# 整型

a = 10

print(type(a)) # <class 'int'>

# 浮点型

b = 3.14

print(type(b)) # <class 'float'>

# 布尔型

c = True

print(type(c)) # <class 'bool'>

# 字符串型

d = 'Hello World!'

print(type(d)) # <class 'str'>

# 空值类型

e = None

print(type(e)) # <class 'NoneType'>

2.2 容器类型

Python中的容器类型有列表、元组、字典、集合。

# 列表

lst = [1, 2, 3]

print(type(lst)) # <class 'list'>

# 元组

tup = (4, 5, 6)

print(type(tup)) # <class 'tuple'>

# 字典

dic = {'name': 'Tom', 'age': 21}

print(type(dic)) # <class 'dict'>

# 集合

s = {1, 2, 3}

print(type(s)) # <class 'set'>

3. 进制转换

3.1 十进制转二进制

十进制转二进制的方法是不断除以2,直到商为0,将每次的余数倒序排列即为二进制数。

def decimal_to_binary(n: int):

# n为十进制数

binary_lst = []

while n != 0:

binary_lst.append(n % 2)

n //= 2

binary_lst.reverse()

return binary_lst

# 测试

num = 13

binary_lst = decimal_to_binary(num)

binary_str = ''.join(str(i) for i in binary_lst)

print(f'{num}的二进制数为{binary_str}') # 13的二进制数为1101

3.2 二进制转十进制

二进制转十进制的方法是将每位上的数乘以对应的权值,再将结果相加。

def binary_to_decimal(binary: str):

# binary为二进制数,字符串类型

decimal = 0

length = len(binary)

for i in range(length):

decimal += int(binary[length-i-1]) * pow(2, i)

return decimal

# 测试

binary_str = '1101'

decimal_num = binary_to_decimal(binary_str)

print(f'{binary_str}的十进制数为{decimal_num}') # 1101的十进制数为13

3.3 十进制转十六进制

十进制转十六进制的方法是不断除以16,直到商为0,将每次的余数倒序排列,将得到的数作为十六进制数。

def decimal_to_hexadecimal(n: int):

# n为十进制数

hexadecimal_lst = []

while n != 0:

remainder = n % 16

if remainder < 10:

hexadecimal_lst.append(str(remainder))

else:

hexadecimal_lst.append(chr(ord('A')+remainder-10))

n //= 16

hexadecimal_lst.reverse()

return ''.join(str(i) for i in hexadecimal_lst)

# 测试

num = 255

hexadecimal_str = decimal_to_hexadecimal(num)

print(f'{num}的十六进制数为{hexadecimal_str}') # 255的十六进制数为FF

3.4 十六进制转十进制

十六进制转十进制的方法是将每位上的数乘以对应的权值,再将结果相加。

def hexadecimal_to_decimal(hexadecimal: str):

# hexadecimal为十六进制数,字符串类型

decimal = 0

length = len(hexadecimal)

for i in range(length):

if hexadecimal[length-i-1].isdigit():

decimal += int(hexadecimal[length-i-1]) * pow(16, i)

else:

decimal += (ord(hexadecimal[length-i-1])-55) * pow(16, i)

return decimal

# 测试

hexadecimal_str = 'FF'

decimal_num = hexadecimal_to_decimal(hexadecimal_str)

print(f'{hexadecimal_str}的十进制数为{decimal_num}') # FF的十进制数为255

4. 温度转换

4.1 摄氏度与华氏度转换

摄氏度和华氏度是最常见的两种温度表示方法。C表示摄氏度,F表示华氏度,两者的转换公式如下:

C = (F - 32) / 1.8

F = C * 1.8 + 32

def celsius_to_fahrenheit(celsius: float):

# celsius为摄氏度,返回对应的华氏度

fahrenheit = celsius * 1.8 + 32

return fahrenheit

def fahrenheit_to_celsius(fahrenheit: float):

# fahrenheit为华氏度,返回对应的摄氏度

celsius = (fahrenheit - 32) / 1.8

return celsius

# 测试

celsius_temperature = 30.

fahrenheit_temperature = celsius_to_fahrenheit(celsius_temperature)

print(f'摄氏度{celsius_temperature}等于华氏度{fahrenheit_temperature:.2f}') # 摄氏度30.0等于华氏度86.00

fahrenheit_temperature = 80.6

celsius_temperature = fahrenheit_to_celsius(fahrenheit_temperature)

print(f'华氏度{fahrenheit_temperature}等于摄氏度{celsius_temperature:.2f}') # 华氏度80.6等于摄氏度27.00

4.2 摄氏度与开氏度转换

摄氏度和开氏度是温度表示法中常见的两种,C表示摄氏度,K表示开氏度,两者的转换公式如下:

K = C + 273.15

C = K - 273.15

def celsius_to_kelvin(celsius: float):

# celsius为摄氏度,返回对应的开氏度

kelvin = celsius + 273.15

return kelvin

def kelvin_to_celsius(kelvin: float):

# kelvin为开氏度,返回对应的摄氏度

celsius = kelvin - 273.15

return celsius

# 测试

celsius_temperature = 30.

kelvin_temperature = celsius_to_kelvin(celsius_temperature)

print(f'摄氏度{celsius_temperature}等于开氏度{kelvin_temperature:.2f}') # 摄氏度30.0等于开氏度303.15

kelvin_temperature = 303.15

celsius_temperature = kelvin_to_celsius(kelvin_temperature)

print(f'开氏度{kelvin_temperature}等于摄氏度{celsius_temperature:.2f}') # 开氏度303.15等于摄氏度30.00

4.3 华氏度与开氏度转换

同样地,华氏度和开氏度也可以相互转换:

K = (F + 459.67) / 1.8

F = K * 1.8 - 459.67

def fahrenheit_to_kelvin(fahrenheit: float):

# fahrenheit为华氏度,返回对应的开氏度

kelvin = (fahrenheit + 459.67) / 1.8

return kelvin

def kelvin_to_fahrenheit(kelvin: float):

# kelvin为开氏度,返回对应的华氏度

fahrenheit = kelvin * 1.8 - 459.67

return fahrenheit

# 测试

fahrenheit_temperature = 80.6

kelvin_temperature = fahrenheit_to_kelvin(fahrenheit_temperature)

print(f'华氏度{fahrenheit_temperature}等于开氏度{kelvin_temperature:.2f}') # 华氏度80.6等于开氏度299.15

kelvin_temperature = 299.15

fahrenheit_temperature = kelvin_to_fahrenheit(kelvin_temperature)

print(f'开氏度{kelvin_temperature}等于华氏度{fahrenheit_temperature:.2f}') # 开氏度299.15等于华氏度80.00

5. 总结

本文介绍了Python中基本数据类型和容器类型的相关知识,以及进制转换和温度转换的方法。在实际应用中,我们需要根据实际需求选择不同的数据类型,进行相应的转换和计算,以便得到我们需要的结果。

后端开发标签