一个返回一种随机语言的Hello World!的python脚本

我的首页顶部会随机显示一种语言的python脚本,下面是代码,使用AI编写的。

脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
import random
from pydantic import BaseModel
from typing import List

# 初始化FastAPI应用
app = FastAPI(title="随机字符串返回API")

# 添加 CORS 中间件
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # 允许所有域名,生产环境应设置为具体域名
allow_credentials=True,
allow_methods=["*"], # 允许所有方法 (GET, POST, 等)
allow_headers=["*"], # 允许所有请求头
)

# 存储字符串、语言、权重和语言代码的数组
string_data = [
{"text": "Hello, World!", "language": "英语", "weight": 10, "lang_codes": ["en", "en-US", "en-GB"]},
{"text": "¡Hola, Mundo!", "language": "西班牙语", "weight": 5, "lang_codes": ["es", "es-ES", "es-MX"]},
{"text": "Bonjour, le Monde !", "language": "法语", "weight": 5, "lang_codes": ["fr", "fr-FR"]},
{"text": "Hallo, Welt!", "language": "德语", "weight": 5, "lang_codes": ["de", "de-DE"]},
{"text": "Ciao, Mondo!", "language": "意大利语", "weight": 3, "lang_codes": ["it", "it-IT"]},
{"text": "こんにちは、世界!", "language": "日语", "weight": 5, "lang_codes": ["ja", "ja-JP"]},
{"text": "Olá, Mundo!", "language": "葡萄牙语", "weight": 3, "lang_codes": ["pt", "pt-PT", "pt-BR"]},
{"text": "Привет, мир!", "language": "俄语", "weight": 5, "lang_codes": ["ru", "ru-RU"]},
{"text": "नमस्ते, दुनिया!", "language": "印地语", "weight": 2, "lang_codes": ["hi", "hi-IN"]},
{"text": "ہیلو، دنیا!", "language": "乌尔都语", "weight": 2, "lang_codes": ["ur", "ur-PK"]},
{"text": "হ্যালো, বিশ্ব!", "language": "孟加拉语", "weight": 2, "lang_codes": ["bn", "bn-BD"]},
{"text": "Witaj, Świecie!", "language": "波兰语", "weight": 2, "lang_codes": ["pl", "pl-PL"]},
{"text": "Привіт, Світе!", "language": "乌克兰语", "weight": 2, "lang_codes": ["uk", "uk-UA"]},
{"text": "Hallo, Wereld!", "language": "荷兰语", "weight": 2, "lang_codes": ["nl", "nl-NL"]},
{"text": "Hej, Världen!", "language": "瑞典语", "weight": 2, "lang_codes": ["sv", "sv-SE"]},
{"text": "Merhaba, Dünya!", "language": "土耳其语", "weight": 2, "lang_codes": ["tr", "tr-TR"]},
{"text": "你好,世界!", "language": "中文(简体)", "weight": 10, "lang_codes": ["zh", "zh-CN", "zh-Hans"]},
{"text": "안녕, 세상!", "language": "韩语", "weight": 4, "lang_codes": ["ko", "ko-KR"]},
{"text": "Salve, Mundus!", "language": "拉丁语", "weight": 1, "lang_codes": ["la"]},
{"text": "Χαῖρε, ὦ Κόσμε!", "language": "古希腊语", "weight": 1, "lang_codes": ["grc"]},
{"text": "Saluton, Mondo!", "language": "世界语", "weight": 1, "lang_codes": ["eo"]},
{"text": "nuqneH, qo'!", "language": "克林贡语", "weight": 1, "lang_codes": ["tlh"]},
{"text": "வணக்கம், உலகம்!", "language": "泰米尔语", "weight": 1, "lang_codes": ["ta", "ta-IN"]},
{"text": "Ahoj, světe!", "language": "捷克语", "weight": 1, "lang_codes": ["cs", "cs-CZ"]},
{"text": "Bună ziua, Lume!", "language": "罗马尼亚语", "weight": 1, "lang_codes": ["ro", "ro-RO"]},
{"text": "Szia, Világ!", "language": "匈牙利语", "weight": 1, "lang_codes": ["hu", "hu-HU"]},
{"text": "Hej, Verden!", "language": "丹麦语", "weight": 1, "lang_codes": ["da", "da-DK"]},
{"text": "Hei, Maailma!", "language": "芬兰语", "weight": 1, "lang_codes": ["fi", "fi-FI"]},
{"text": "Здравей, Свят!", "language": "保加利亚语", "weight": 1, "lang_codes": ["bg", "bg-BG"]},
{"text": "Hei, Verden!", "language": "挪威语", "weight": 1, "lang_codes": ["no", "nb-NO"]},
{"text": "Γειά σου, Κόσμε!", "language": "希腊语", "weight": 1, "lang_codes": ["el", "el-GR"]},
{"text": "Shalom, Olam!", "language": "希伯来语", "weight": 1, "lang_codes": ["he", "he-IL"]},
{"text": "Marhaban, ya 'Alam!", "language": "阿拉伯语", "weight": 3, "lang_codes": ["ar", "ar-SA"]},
{"text": "Salam, Donya!", "language": "波斯语", "weight": 1, "lang_codes": ["fa", "fa-IR"]},
{"text": "Sawasdee, Lok!", "language": "泰语", "weight": 1, "lang_codes": ["th", "th-TH"]},
{"text": "Xin chào, Thế giới!", "language": "越南语", "weight": 1, "lang_codes": ["vi", "vi-VN"]},
{"text": "Halo, Dunia!", "language": "印尼语/马来语", "weight": 1, "lang_codes": ["id", "id-ID", "ms", "ms-MY"]},
{"text": "Kamusta, Mundo!", "language": "他加禄语", "weight": 1, "lang_codes": ["tl", "tl-PH"]},
{"text": "Habari, Dunia!", "language": "斯瓦希里语", "weight": 1, "lang_codes": ["sw", "sw-KE"]},
{"text": "Sannu, Duniya!", "language": "豪萨语", "weight": 1, "lang_codes": ["ha", "ha-NG"]},
{"text": "Selam, 'Alam!", "language": "阿姆哈拉语", "weight": 1, "lang_codes": ["am", "am-ET"]},
{"text": "Aloha, Honua!", "language": "夏威夷语", "weight": 1, "lang_codes": ["haw"]},
{"text": "Kia ora, Ao!", "language": "毛利语", "weight": 1, "lang_codes": ["mi", "mi-NZ"]},
{"text": "Yá'át'ééh, Nahasdzáán!", "language": "纳瓦霍语", "weight": 1, "lang_codes": ["nv", "nv-US"]},
]

# 定义响应模型
class RandomStringResponse(BaseModel):
message: str
language: str
lang_codes: List[str]
weight: int
status: str = "success"

class LanguageWeightResponse(BaseModel):
text: str
language: str
lang_codes: List[str]
weight: int

@app.get("/hello-world", response_model=RandomStringResponse, description="根据权重随机返回一个字符串")
async def get_random_string():
"""从预设的字符串列表中根据权重随机返回一个字符串"""
# 提取权重列表
weights = [item["weight"] for item in string_data]

# 根据权重随机选择一个字符串数据
random_data = random.choices(string_data, weights=weights, k=1)[0]

return {
"message": random_data["text"],
"language": random_data["language"],
"lang_codes": random_data["lang_codes"],
"weight": random_data["weight"],
"status": "success"
}

@app.get("/hello-world/{language}", response_model=RandomStringResponse, description="返回指定语言的字符串")
async def get_specific_language(language: str):
"""返回指定语言的字符串,可以传入语言名称或语言代码"""
# 查找匹配的语言
matched_languages = []

for item in string_data:
# 检查语言名称是否匹配(不区分大小写)
if language.lower() == item["language"].lower():
matched_languages.append(item)
# 检查语言代码是否匹配(不区分大小写)
elif language.lower() in [code.lower() for code in item["lang_codes"]]:
matched_languages.append(item)

if matched_languages:
# 如果找到匹配的语言,返回第一个匹配项
matched_item = matched_languages[0]
return {
"message": matched_item["text"],
"language": matched_item["language"],
"lang_codes": matched_item["lang_codes"],
"weight": matched_item["weight"],
"status": "success"
}
else:
# 如果没有找到匹配的语言,返回错误信息
return {
"message": f"未找到语言 '{language}' 对应的字符串",
"language": "未知",
"lang_codes": [],
"weight": 0,
"status": "error"
}

@app.get("/all-strings", response_model=List[LanguageWeightResponse], description="获取所有字符串及其信息")
async def get_all_strings():
"""返回所有字符串及其信息"""
return string_data

@app.get("/random-equal", response_model=RandomStringResponse, description="等概率随机返回一个字符串(不考虑权重)")
async def get_random_string_equal():
"""等概率随机返回一个字符串(不考虑权重)"""
# 随机选择一个字符串数据(不考虑权重)
random_data = random.choice(string_data)

return {
"message": random_data["text"],
"language": random_data["language"],
"lang_codes": random_data["lang_codes"],
"weight": random_data["weight"],
"status": "success"
}

# 如果直接运行该脚本,则启动开发服务器
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=80)

requirements.txt

1
2
fastapi>=0.95.0
uvicorn>=0.21.1

Dockerfile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 使用官方Python镜像作为基础
FROM python:3.11-slim

# 设置工作目录
WORKDIR /app

# 复制依赖文件并安装
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# 复制项目代码到容器
COPY main.py .

# 暴露端口(与uvicorn运行的端口一致)
EXPOSE 80

# 启动命令(使用uvicorn运行应用)
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"]

一个返回一种随机语言的Hello World!的python脚本
https://lijunhua.cn/2025/11/08/一个返回一种随机语言的Hello-World-的python脚本/
作者
hua
发布于
2025年11月8日
许可协议