69 lines
2.3 KiB
Python
69 lines
2.3 KiB
Python
# ===================== 第一部分:文本数据基础 =====================
|
||
print("===== 题目1:文本字符表示与ASCII码 =====")
|
||
|
||
# 方式1:直接字符串表示 "Hello"
|
||
str1 = "Hello"
|
||
# 方式2:转义/字符序列表示(等价于"Hello")
|
||
str2 = 'H' + 'e' + 'l' + 'l' + 'o'
|
||
print(f"两种方式表示Hello:\n方式1:{str1}\n方式2:{str2}\n")
|
||
|
||
# 用 ord() 打印每个字符的ASCII码
|
||
print("每个字符的ASCII码:")
|
||
for char in "Hello":
|
||
print(f"{char} -> {ord(char)}")
|
||
|
||
# 用 chr() 验证:65 对应大写字母 A
|
||
print(f"\nchr(65) = {chr(65)},验证:65 对应大写字母 A\n")
|
||
|
||
# ===================== 第二部分:向量基础 =====================
|
||
import math
|
||
|
||
print("===== 题目3:二维向量计算 =====")
|
||
A = [3, 4]
|
||
B = [1, 2]
|
||
|
||
# 1. A + B
|
||
add_res = [A[0]+B[0], A[1]+B[1]]
|
||
print(f"A + B = {add_res}")
|
||
|
||
# 2. 2 × A
|
||
mul_res = [2*A[0], 2*A[1]]
|
||
print(f"2 × A = {mul_res}")
|
||
|
||
# 3. A 的长度(模)
|
||
len_A = math.sqrt(A[0]**2 + A[1]**2)
|
||
print(f"A 的长度(模)= {len_A}\n")
|
||
|
||
print("===== 题目4:点积与余弦相似度 =====")
|
||
A1 = [1, 2, 3]
|
||
B1 = [4, 5, 6]
|
||
|
||
# 1. 点积
|
||
dot_product = sum(a*b for a, b in zip(A1, B1))
|
||
print(f"A·B = {dot_product}")
|
||
|
||
# 2. 余弦相似度
|
||
def cos_sim(vec1, vec2):
|
||
dot = sum(a*b for a, b in zip(vec1, vec2))
|
||
mod1 = math.sqrt(sum(x**2 for x in vec1))
|
||
mod2 = math.sqrt(sum(x**2 for x in vec2))
|
||
return dot / (mod1 * mod2)
|
||
|
||
sim1 = cos_sim(A1, B1)
|
||
print(f"余弦相似度 = {sim1:.4f}")
|
||
|
||
# 3. A=[1,0], B=[0,1] 的余弦相似度
|
||
A2 = [1, 0]
|
||
B2 = [0, 1]
|
||
sim2 = cos_sim(A2, B2)
|
||
print(f"A=[1,0], B=[0,1] 余弦相似度 = {sim2}")
|
||
print("原因:两个向量互相垂直(正交),夹角90度,cos90°=0\n")
|
||
|
||
# ===================== 题目2:思考题答案 =====================
|
||
print("===== 题目2:思考题答案 =====")
|
||
print("1. 数据表示形式:")
|
||
print(" - 图像:天然是数值矩阵(像素值),计算机可直接存储、运算")
|
||
print(" - 文本:是抽象字符编码,无固定数值结构,需额外编码转换")
|
||
print("2. 语义理解:")
|
||
print(" - 图像:直观的视觉信号,无歧义,计算机易处理")
|
||
print(" - 文本:包含上下文、歧义、语法、情感等复杂语义,计算机难以直接理解") |