首页
关于
留言
壁纸
更多
直播
统计
友链
Search
1
面试常见问题100问
190 阅读
2
最新Navicat 15 for MySQL破解+教程 正确破解步骤
179 阅读
3
一个人要走的时候,千万别问原因
162 阅读
4
好用的软件分享
142 阅读
5
直击心灵的唯美句子
119 阅读
日常记录
后端
PHP
NodeJs
Python
Java
前端
JavaScript
数据库
MySQL
服务器
美文
微信开发
微信公众号
微信小程序
登录
Search
标签搜索
mysql
python
django
express
面试
axios
thinkphp
PHP
励志
哲理
九九乘法表
node
cors
跨域
唯美句子
美文
文件上传
ajax
算法
jwt
公子初心
累计撰写
68
篇文章
累计收到
9
条评论
首页
栏目
日常记录
后端
PHP
NodeJs
Python
Java
前端
JavaScript
数据库
MySQL
服务器
美文
微信开发
微信公众号
微信小程序
页面
关于
留言
壁纸
直播
统计
友链
搜索到
10
篇与
的结果
2024-04-26
获取豆瓣电影所有分类下的所有电影下的每部电影的前100条好评
# 导入xpath模块 用于解析页面数据 from lxml import etree # 导入系统模块 用于自动创建目录 import os # 导入requests模块用于发送http请求 import requests import json # 发起请求获取数据 def get_content(url,data=[],ispost=0): # user-agent 设置头信息 模拟浏览器访问 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36", } if ispost: response = requests.post(url=url, headers=headers,data=data) else: response = requests.get(url=url, headers=headers) response.encoding = response.apparent_encoding return response.text # 根据电影Id获取电影的评论 def getCommentByMovieId(typeName,movieId,limit=100): try: url = f"https://movie.douban.com/subject/{movieId}/comments?percent_type=h&limit={limit}&status=P&sort=new_score" # 发送请求 获取页面源码 result = get_content(url) # 获取数据 etree1 = etree.HTML(result) # xpath解析 # 标题 title = etree1.xpath("//h1/text()")[0] # 评论人 authors = etree1.xpath("//span[@class='comment-info']/a/text()") # 评论时间 times = etree1.xpath("//span[@class='comment-info']/span[@class='comment-time ']/text()") # 评论内容 contents = etree1.xpath("//span[@class='short']/text()") moviePath = f"./movieCommentData/{typeName}" if not os.path.exists(moviePath): os.makedirs(moviePath) # 依次遍历,输出数据 s = "=" print(f"{s * 30}正在获取电影【{title}】{s * 30}") for i in range(len(authors)): print(f"评论人:'{authors[i]}'---评论内容:'{contents[i]}---评论时间:'{times[i].strip()}''") filename = moviePath + '/' + title + '.txt' with open(filename, 'a+', encoding="utf-8") as f: f.write(f"评论人:'{authors[i]}'---评论内容:'{contents[i]}'---评论时间:'{times[i].strip()}'\n") f.close() print(f"{s * 30}电影【{title}】获取完毕{s * 30}") except: pass url = "https://movie.douban.com/chart" # 发送请求 获取页面源码 result = get_content(url) # 获取数据 etree1 = etree.HTML(result) # xpath解析 typeUrl = etree1.xpath("//div[@class='types']/span/a/@href") typeUrlList = [] for url in typeUrl: typeName = url.split("&")[0].split('=')[1] print(f"正在获取【{typeName}】分类下的电影信息......") typeId = url.split("&")[1].split("=")[1] # 根据电影分类获取此分类下的电影总数 totalUrl = f"https://movie.douban.com/j/chart/top_list_count?type={typeId}&interval_id=100%3A90&action=" # 获取到此分类下的电影总数量 movieTotal = json.loads(get_content(totalUrl))['total'] print(f"{typeName}分类下的电影一共有{movieTotal}部") # 根据电影总数量依次获取这些电影 for i in range(movieTotal+1): baseUrl = f"https://movie.douban.com/j/chart/top_list?type={typeId}&interval_id=100%3A90&action=&start={i}&limit=1" movieInfo = json.loads(get_content(baseUrl))[0] # 获取电影Id movieId = movieInfo['id'] getCommentByMovieId(typeName,movieId)
2024年04月26日
19 阅读
0 评论
1 点赞
2024-04-26
根据电影id获取豆瓣电影下的前100条好评
movies = [1291546,6973376] # 导入xpath模块 用于解析页面数据 from lxml import etree # 导入系统模块 用于自动创建目录 import os # 导入requests模块用于发送http请求 import requests # 发起请求获取数据 def get_content(url,data=[],ispost=0): # user-agent 设置头信息 模拟浏览器访问 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36", } if ispost: response = requests.post(url=url, headers=headers,data=data) else: response = requests.get(url=url, headers=headers) response.encoding = response.apparent_encoding return response.text limit = 100 # 遍历电影列表数据,获取电影id for movieId in movies: url = f"https://movie.douban.com/subject/{movieId}/comments?percent_type=h&limit={limit}&status=P&sort=new_score" # 发送请求 获取页面源码 result = get_content(url) # 获取数据 etree1 = etree.HTML(result) # xpath解析 # 标题 title = etree1.xpath("//h1/text()")[0] # 评论人 authors = etree1.xpath("//span[@class='comment-info']/a/text()") # 评论时间 times = etree1.xpath("//span[@class='comment-info']/span[@class='comment-time ']/text()") print(times) # 评论内容 contents = etree1.xpath("//span[@class='short']/text()") moviePath = "./movieCommentData/" if not os.path.exists(moviePath): os.makedirs(moviePath) # 依次遍历,输出数据 s = "=" print(f"{s*30}正在获取电影【{title}】{s*30}") for i in range(len(authors)): print(f"评论人:'{authors[i]}'---评论内容:'{contents[i]}---评论时间:'{times[i].strip()}''") filename = moviePath+'/'+ title + '.txt' with open(filename, 'a+', encoding="utf-8") as f: f.write(f"评论人:'{authors[i]}'---评论内容:'{contents[i]}'---评论时间:'{times[i].strip()}'\n") f.close() print(f"{s*30}电影【{title}】获取完毕{s*30}")
2024年04月26日
4 阅读
0 评论
0 点赞
2024-03-17
Python字典列表实现学生信息管理系统
# 需求:学生管理系统 实现 对学生的增删改查 students = [] def getIndexByStuId(stuId): for student in students: if stuId == student['stuId']: # 获取到这个字典对应的索引 return students.index(student) # 欢迎 def welcome(): msg = """ 欢迎使用<学生信息管理系统> 1.查询所有学生信息 2.添加 3.删除 4.修改 5.退出 """ return input(msg) # 查询 def show(): print("----------------正在[查询]--------------------") if students: print("学号\t\t\t名字\t\t\t年龄") for student in students: print(f"{student['stuId']}\t\t{student['name']}\t\t\t{student['age']}") else: print("暂无学生信息,请添加") # 添加 def add(): print("----------------正在[添加]--------------------") # 依次获取用户输入的数据 # 存到字典中 student = {} # 获取用户的学号后,要去查一查此学号是否存在 如果存在则提示用户重新输入 如果不存在 则正常添加 while True: stuId = input("请输入学号:") i = getIndexByStuId(stuId) if i == None: student['stuId'] = stuId student['name'] = input("请输入名字:") student['age'] = int(input("请输入年龄:")) # print(student) # 把字典添加到列表 students.append(student) break else: print("请重新输入新的学号") # 删除 def delete(): print("----------------正在[删除]--------------------") while True: # 接收学号 stuId = input('请输入想要删除的学生的学号') # 获取索引 i = getIndexByStuId(stuId) if i == None: print("学号不存在,请重新输入") else: students.pop(i) print("删除成功") break # for student in students: # if stuId == student['stuId']: # break # # 删除 # students.remove(student) # print(students) # 修改 def update(): print("----------------正在[修改]--------------------") while True: # 接收学号 user_input = input('请输入想要修改的学生的学号(如果想退出请输入"q")') if user_input == 'q': break i = getIndexByStuId(user_input) # None if i == None: print("学号不存在,请重新输入(如果想退出请输入'q')") else: # 根据列表的索引找到列表中的字典 while True: stuId = input(f"请输入新的学号({students[i]['stuId']})[回车表示不修改]") # 根据学号查询索引 index = getIndexByStuId(stuId) if i != index: print("学生id已存在") else: break name = input(f"请输入新的姓名({students[i]['name']})[回车表示不修改]") age = input(f"请输入新的年龄({students[i]['age']})[回车表示不修改]") # # 如果为true说明改了,如果为false说明没改 students[i]['stuId'] = stuId if stuId else students[i]['stuId'] students[i]['name'] = name if name else students[i]['name'] students[i]['age'] = age if age else students[i]['age'] break print(students) pass while True: # 欢迎 num = welcome() match num: case '1': show() case '2': add() case '3': # 查看列表中是否有数据,如果有才往下执行 if students: show() delete() show() else: print("暂无数据,请添加") case '4': # 查看列表中是否有数据,如果有才往下执行 if students: show() update() else: print("暂无数据,请添加") case '5': print("欢迎下次使用") break case _: print("输入有误,请重新输入")
2024年03月17日
23 阅读
0 评论
0 点赞
2023-12-19
04-创建自己的第一个model
1.修改mysql的配置信息 settings.py 编辑DATABASES 默认sqlite3改成修改mysql2.cmd 命令行安装mysqlclient 命令:pip install mysqlclient3.打开blog项目里面的models.py 创建自己的model类 Article为表名 继承models.Model4.完成数据迁移 python manage.py makemigrations app名称(可选 不写默认所有应用)5.继续执行python manage.py migrate 来创建表6.最终会在migrations 里生成0001_initial.py 看到字段结构7.命令python manage.py sqlmigrate blog 0001 查看建表语句8.查看数据表 已经创建成功9.手动写入一条记录,读取,模板中展示
2023年12月19日
38 阅读
0 评论
0 点赞
2023-12-19
03-开发第一个Templates
1.在自己的blog应用中创建templates 目录,在里面创建本应用名称的目录(blog)创建模板文件index.html2.指定可以访问模板的配置在views.py文件内 修改返回值 render() 第一个参数request,第二个参数调用模板路径,第三个参数,字典形式传输数据,模板中直接{{}} 输出
2023年12月19日
16 阅读
0 评论
0 点赞
2023-12-19
02-Django创建第一个项目
第一种方式来访问第一个页面(不常用)1.blog/views.pyfrom django.http import HttpResponse def index(request): return HttpResponse('hello world')2.myblog/urls.pyimport blog.views as bv urlpatterns = [ path('admin/', admin.site.urls), path('index/', bv.index), path('zhang/', bv.zhang), ]3.直接url访问第二种方式来访问第一个页面(常用)1.在blog/views.pyfrom django.http import HttpResponse def index(request): return HttpResponse('你好,世界')2.myblog/urlsfrom django.urls import path,include urlpatterns = [ path('admin/', admin.site.urls), path('blog/', include('blog.urls')), *index主目录* ]3.在blog/里创建urls.pyfrom django.urls import path from . import views urlpatterns = [ path('/index, views.index),*index子目录* ]4.访问127.0.0.1:8000/blog
2023年12月19日
33 阅读
0 评论
0 点赞
2023-12-19
01-python安装Django-创建应用
1.windows 按照djangopip install Django== 2.02.创建项目工程Django-admin命令 Django-admin startproject myblog (项目名称)或者我们可以可以使用pycharm来创建Django项目查看manage.py常用命令 可以 python manage.py 查看如果想要修改端口号 python manage.py 9999 3.创建属于自己的应用python manage.py startapp blog 4.将应用添加添加到 INSTALLED_APPS = ['blog']
2023年12月19日
31 阅读
0 评论
0 点赞
2023-07-18
JS,PHP,PYTHON,JAVA实现常见算法题
1. 超市为了促销,按购买货物的款数多少分别给予不同的优惠折扣,具体折扣情况如下: 购物不足100元的,没有折扣; 购物满100元(含100元,下同),不足500元的,减价5%; 购物满500元,不足1000元的,减价8%; 购物满1000元,不足3000元的,减价10%; 购物满3000元的,减价15%。 请设计一个程序根据根据输入的购物款计算出应付款。javascript let money =2900 if(money >=3000){ money*=0.85 }else if(money >=1000){ money*=0.9 }else if(money >=500){ money*=0.92 }else if (money >=100){ money *=0.95 } console.log("您需要支付",money,"元");php$money =90; if($money >=3000){ $money*=0.85; }else if($money >=1000){ $money*=0.9; }else if($money >=500){ $money*=0.92; }else if ($money >=100){ $money *=0.95; } echo "您需要支付",$money,"元";pythonmoney = float(input("请输入一个金额:")) if money>=3000: money*=0.85 elif money>=1000: money*=0.9 elif money>=500: money*=0.92 elif money>=100: money*=0.95 print(money)javaimport java.util.Scanner; public class Hello{ public static void main(String[] args){ // System.out.println("hello "); Scanner sc = new Scanner(System.in); // javac -encoding UTF-8 Hello.java System.out.println("请输入金额:"); int money = sc.nextInt(); // 接收用户输入 if(money >= 3000){ money*=0.85; }else if(money>=1000){ money*=0.9; }else if (money >=500){ money*=0.92; }else if(money >= 100){ money*=0.95; } System.out.println(money); } }2.某100人的公司举行年会,入场时为每名员随机分配1-100的号码。现需要设计一个抽奖程序,随机产生10个整数,整数的范围为1-100,作为幸运号码发放奖品,并从生成的整数中获取最大值,发放年终大礼包。JavaScript// 循环用于产生10个不重复随机数 let nums = [] // 用于存放随机生成的数字 let i = 0 while(true){ i++ // 判断数组中是否已经有了10个元素 if(nums.length == 30){ break // 退出 } // 产生随机数 // Math.floor(Math.random()*100) +1 let num = Math.ceil(Math.random()*100) // 将随机数写入到 数组中 , 返回值是-1 说明没有 才写 if(nums.indexOf(num) == -1){ nums.push(num) } } nums.sort() // 升序 排序 console.log(nums); console.log(nums[nums.length-1]);php $nums = []; $i = 0; while (true){ $i++; // 判断数组长度是否=10 if(count($nums) == 10){ break; } // 1. 生成随机数 范围1-100之间,不能重复 $num = mt_rand(1,100); // 大于等于1 小于等于100的随机数 //$nums.push($num); js的写法 if(!in_array($num,$nums)){ array_push($nums,$num); } } sort($nums); // 排序 echo $i; print_r($nums);pythonimport random # 10个不重复的随机数 # 定义一个空列表 nums = [] i = 0 while True: i+=1 if len(nums) == 50: break # 生成一个随机数 范围是1-100之间 rand = random.randint(1,100) # 把随机数添加到列表中 # 判断一下,如果列表中没有 才追加 if nums.count(rand) == 0: nums.append(rand) nums.sort() print(nums) print(i) ------------------------------------------ import random # 10个不重复的随机数 # 定义一个空列表 nums = [] i = 0 while len(nums) < 10: i+=1 # 生成一个随机数 范围是1-100之间 rand = random.randint(1,100) # 把随机数添加到列表中 # 判断一下,如果列表中没有 才追加 if nums.count(rand) == 0: nums.append(rand) nums.sort() print(nums) print(i) ------------------------------------------- nums = set() while len(nums) < 10: rand = random.randint(1,100) nums.add(rand) nums = list(nums) nums.sort() print(nums) print(num[nums.length-1])javapackage study; import java.util.HashSet; import java.util.Random; import java.util.Set; public class HelloWorld8 { public static void main(String[] args) { // 创建一个空集合 Set set1 = new HashSet(); // 创建随机数对象 Random rand = new Random(); while(set1.size()<10){ // 生成随机数 int randnum = rand.nextInt(100)+1; // 随机数追加到集合中 set1.add(randnum); } Object[] list1 = set1.toArray(); // 集合转数组 Arrays.sort(list1); // 排序 System.out.println(list1[list1.length-1]); // 集合 } } 3.输入某年某月某日,判断这一天是这一年的第几天 (要求用java语言开发控制台程序,要求:要考虑用户体验,如:程序启动时要有欢迎语,用户输入时要有提示,输入错误时要有错误提示等)JavaScript let year = Number(prompt("请输入年")) let month = Number(prompt("请输入月")) let day = Number(prompt("请输入日")) // let year = 1800 // let month = 5 // let day = 11 // 用于保存天数 daynum = 0 console.log("今天是",year,"年",month,"月",day,"日"); // 根据当前的年月日,判断在这个月之前所有月份的天数之和 + 当前的日期 switch(month){ case 12: // 当前是12月 + 11月 // daynum = daynum + 30 daynum +=30 // 11月的天数 console.log("我被穿透了 12"); case 11: console.log("我被穿透了 11"); daynum +=31 // 10月的天数 case 10: console.log("我被穿透了 10"); daynum +=30 // 9月的天数 case 9: console.log("我被穿透了 9"); daynum +=31 // 8月的天数 case 8: console.log("我被穿透了 8"); daynum +=31 // 7月的天数 case 7: console.log("我被穿透了 7"); daynum +=30 // 6月的天数 case 6: console.log("我被穿透了 6"); daynum +=31 // 5月的天数 case 5: console.log("我被穿透了 5"); daynum +=30 // 4月的天数 case 4: console.log("我被穿透了 4"); daynum +=31 // 3月的天数 case 3: console.log("我被穿透了 3"); // daynum +=31 // 2月的天数 28天 29天 // 1.能被4整除 却不能被100整除 闰年 // 2.能被400整除的 闰年 // 四年一闰,百年不闰,四百年在闰 if(year % 4 == 0 && year % 100 !=0){ daynum +=29 // console.log(year,"是闰年 1"); }else if (year % 400 ==0){ // console.log(year,"是闰年 2"); daynum +=29 }else{ // console.log(year,"是平年"); daynum +=28 } case 2: console.log("我被穿透了 2"); daynum +=31 // 1月的天数 case 1: console.log("我被穿透了 1"); daynum +=day // 当前月实际日期的天数 } document.write("当前的第",daynum,"天");php$year = 2023; $month = 12; $day = 13; $daynums = 0; while ($month>=1){ switch ($month){ case 12:case 10:case 7:case 5: $daynums +=30; // 上一个月的总天数 break; case 11:case 9:case 8:case 6:case 4:case 2: $daynums +=31; // 上一个月的总天数 break; case 3: // 判断平年闰年 if(($year % 4 == 0 && $year % 100 != 0) || ($year %400==0)){ $daynums += 29; }else{ $daynums += 28; } break; case 1: $daynums += $day; } $month--; // 11月 } echo $daynums;python# 百钱买百鸡 钱100 鸡100 公鸡5元 母鸡3元 小鸡 1元3只 求:鸡各几只 # 函数:根据年份返回当年2月份的总天数 def getTotalDaysByYear(year): return 29 if year % 4 == 0 and year % 100 !=0 or year % 400 ==0 else 28 # 判断一年中的第几天 year = int(input("请输入年:")) month = int(input("请输入月:")) day = int(input("请输入日:")) # 统计所有的天数 days = day month = month - 1 # 当前的月份-1 就是循环的次数 while month >=1: # 如果是1月 if month == 1 or month == 3 or month == 5 or month == 7 or month == 8 or month == 10: # 总天数31 days += 31 # 如果是2月 elif month == 2: # 2月的总天数 平年2月28 闰年2月29 # 合计 days += getTotalDaysByYear(year) pass elif month == 4 or month == 6 or month == 9 or month == 11: days += 30 month-=1 print(days)javapackage study; import java.util.Scanner; public class HelloWorld11 { // 根据当前年月日判断是一年第几天 public static void main(String[] args) { // 接收用户的键盘输入 Scanner sc = new Scanner(System.in); System.out.println("请输入年:"); short year = sc.nextShort(); System.out.println("请输入月:"); byte month = sc.nextByte(); System.out.println("请输入日:"); byte day = sc.nextByte(); short daynums = 0; while(month>=1){ switch(month){ case 12:case 10:case 7:case 5: daynums += 30; break; case 11:case 9:case 8:case 6:case 4: case 2: daynums += 31; break; case 3: if(year % 4 ==0 && year %100!=0 || year %400==0){ daynums += 29; }else{ daynums += 28; } break; case 1: daynums += day; break; } month--; } System.out.println(daynums); } } 4.打印所有的水仙花数 水仙花数:是指一个三位数,其各位数字立方和等于该数字本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。(要求用java语言开发控制台程序)JavaScript// 水仙花树 153 = 1(3) + 5 (3) + 3(3) // 百位三次方 + 十位三次方 + 个位三次方 = 这个数本身 // 需求:输出所有的三位数 let num = 100 while(num <1000){ // console.log(num); // 1.取百位 // console.log(Math.floor(num / 100)); let bai = Math.floor(num / 100) // 2.取十位 // console.log(Math.floor(num % 100/10) ); let shi = Math.floor(num % 100/10) // 3.取个位 // console.log(num % 10) let ge = num % 10 if(bai*bai*bai + shi*shi*shi + ge*ge*ge == num){ console.log(num,"是水仙花数"); } num++ }php$i = 100; echo "<br>"; while ($i<1000){ // echo $i,"<br>"; // 1.求百位 // echo floor($i/100),"<br>"; $bai = floor($i/100); // 2.求十位 // echo floor(($i % 100)/10) ,"<br>"; $shi = floor(($i % 100)/10); // 3.求个位 // echo $i % 10,"<br>"; $ge = $i % 10; if(pow($bai,3)+pow($shi,3)+pow($ge,3) == $i){ echo $i,"是水仙花数<br>"; } $i++; }pythonfor num in range(100, 1000): # 将数字拆分成各个位上的数字 bai= num // 100 # 百位 shi= (num // 10) % 10 # 十位 ge= num % 10 # 个位 # 计算立方和 判断是否是水仙花数 if bai**3 + shi**3 + ge**3 === num # 输出水仙花数 print(num) javapackage study; import java.util.Scanner; public class HelloWorld11 { // 根据当前年月日判断是一年第几天 public static void main(String[] args) { // System.out.print("a"); // System.out.print("b"); // 153 int i = 100; while(i<1000){ //百位 int bai = i/100; //十位 int shi = i%100/10; //个位 int ge = i%10; if(bai*bai*bai + shi*shi*shi + ge*ge*ge == i){ System.out.println(i); } i++; } } }
2023年07月18日
108 阅读
0 评论
1 点赞
2023-06-25
python豆瓣,清华镜像源地址
由于pip是连接的国外的网站进行包的下载,所以有的时候会速度很慢。我们可以通过如下命令,让其连接国内的网站进行包的安装:pip install pygame -i https://pypi.douban.com/simple/pip install pygame -i https://pypi.tuna.tsinghua.edu.cn/simple
2023年06月25日
31 阅读
0 评论
0 点赞
2023-06-19
Python设计之禅~Python的设计哲学
一、Python之禅翻译Python之禅,即Python Zen,是由Python社区创造的一种简洁哲学理念,它强调了面向对象、简洁、明确、可读性和美学等方面的设计思想。Python之禅的翻译在不同的版本中略有不同,下面是最流行的一种翻译版本:优美胜于丑陋明了胜于晦涩简洁胜过复杂复杂胜过凌乱扁平胜过嵌套间隔胜过紧凑可读性很重要特殊情况并不特殊到足以违反常规尽管实用性胜过纯粹性,但特例也并不可豁免除非明确沉默面对模棱两可,拒绝猜测的诱惑应该拥有一个,最好只有一个,显而易见的解决方案虽然这个方案一开始可能并不是那么显而易见,除非你是莫名其妙现在总比永远不好虽然永远不比现在好这些原则有效地促进了Python代码的创作和开源精神,使得Python代码不仅易于编写和阅读,而且具有模块化、可重用性和易于维护的优点。二、Python之禅命令在Python中,我们可以直接运行Python之禅,只需要在终端输入import this,即可得到Python之禅的内容输出:import this优美胜于丑陋明了胜于晦涩简洁胜过复杂复杂胜过凌乱扁平胜过嵌套间隔胜过紧凑可读性很重要……三、Python之禅怎么打如果你想手动输入Python之禅的所有内容,你可以按照下面的代码示例来打印Python之禅:import this四、Python之禅什么意思Python之禅是一种关于Python编程哲学的概括,它描述了Python代码应该具备的特点,比如简洁、明了、可读性等方面。Python之禅不仅有助于程序员编写易于阅读和维护的Python代码,还鼓励程序员尊重编程的美学,并倡导开源精神和文化。
2023年06月19日
36 阅读
0 评论
0 点赞