前言
#给任何一个看见这篇文章并且点进来的人
这是我人生中第一篇博客。
在这里浅聊一下我自己。
从小学到高中,我学习python也有5、6年了,而项目的编写还仍然停留在小工具的开发,真正意义上的软件则是一个没有。
近几年AI起来了,我和我家人预感未来AI将成为生产力中的很大一部分,认为“大部分技术都不必要深究,只要了解,可以准确与AI沟通然后得到结果,然后再对结果进行修补修改就可以了。”
于是我放下了自己手上已经看完了的python教科书,准备开始学习c语言。
然后我就领略到了c语言的枯燥无味。
写这些只是我觉得应该在介绍自己时写这些。
接下来——
分享自己的学习结果
#请注意,接下来的东西使用不当可能会触犯《中华人民共和国网络安全法》的相关法规。
#以各位大佬的眼光来看或许这些东西会很幼稚、低级和可笑,但是有什么要骂的请憋着,我受不住,谢谢。
红蜘蛛杀手
这个程序由python编写。
顾名思义,这个程序是专门针对“红蜘蛛电子教室”的学生端“红蜘蛛”软件的。
它可以实现两个功能:脱离控制和恢复控制。
对于多媒体教师(也就是机房)的红蜘蛛来说,在学生端简直是百试百灵。
但缺点也很明显:容易被发现。
教师机会不定时检测已存档的机器的上线状况,而脱控后就会发送通知到教师端,精确到机名。
目前该程序最好不要闲的没事乱用,特别是不要大规模分发,不然很可能会被律师函警告和学校处分。
毕竟说的好听是学生调皮,说的难听是蓄意毁坏计算机系统。
以下是源代码,只有一个文件。
import os
import signal
import psutil
import subprocess
def get_pid_by_name(file_3000soft):
#获取pid
for process in psutil.process_iter():
try:
if process.name() == file_3000soft:
return process.pid
except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
pass
return None
def kill_red_spider(a2):
if a2 == 0:
file_3000soft = 'rscheck.exe'
#kill第一个组件
pid = get_pid_by_name(file_3000soft)
if pid:
print(f'找到进程 {file_3000soft},其pid为 {pid}')
else:
print(f'未找到进程 {file_3000soft}')
try:
os.kill(pid, signal.SIGTERM) # 使用SIGTERM信号中断进程
print(f"进程 {pid} 已被中断")
except ProcessLookupError:
print(f"找不到进程 {pid}")
except Exception as e:
print(f"中断进程时出错:{e}")
file_3000soft = 'checkrs.exe'
#kill第二个组件
pid = get_pid_by_name(file_3000soft)
if pid:
print(f'找到进程 {file_3000soft},其pid为 {pid}')
else:
print(f'未找到进程 {file_3000soft}')
try:
os.kill(pid, signal.SIGTERM) # 使用SIGTERM信号中断进程
print(f"进程 {pid} 已被中断")
except ProcessLookupError:
print(f"找不到进程 {pid}")
except Exception as e:
print(f"中断进程时出错:{e}")
red_spider = 'REDAgent.exe'
#kill主进程
pid = get_pid_by_name(red_spider)
if pid:
print(f'找到进程 {red_spider},其pid为 {pid}')
else:
print(f'未找到进程 {red_spider}')
try:
os.kill(pid, signal.SIGTERM) # 使用SIGTERM信号中断进程
print(f"进程 {pid} 已被中断")
except ProcessLookupError:
print(f"找不到进程 {pid}")
except Exception as e:
print(f"中断进程时出错:{e}")
def restart_red_spider():
red_spider_path = r'c:\Program Files (x86)\3000soft\Red Spider\REDAgent.exe'
try:
subprocess.Popen(red_spider_path)
except FileNotFoundError:
print(f'未找到文件{red_spider_path},请检查文件路径或文件名。')
print(f'''
欢迎使用红蜘蛛杀手
版本 v 0.7
''')
a1 = input(f'''
输入exit退出
输入kill查杀
输入life重启
>>>''')
a2 = 0
while a1 != 'exit':
if a1 == 'life':
print(f'''
正在重启红蜘蛛进程...
''')
restart_red_spider()
print(f'''
重启完成
输入exit退出
输入kill再来一次
输入life重启
''')
elif a1 == 'kill':
if a2 == 0:
print(f'''
已启动红蜘蛛杀手
正在自动清除监视状态...
''')
kill_red_spider(a2)
a2 += 1
else:
print(f'''
再次启动查杀
正在自动清除监视状态...
''')
kill_red_spider(a2)
print(f'''
已自动退出监视模式
建议在任务管理器确认进程是否确认被关闭
输入exit退出
输入kill再来一次
输入life重启
''')
else:
pass
a1 = input(f'>>>')
需要注意的是,本程序用到了两个第三方库:psutil和pyinstaller
没有的请通过以下批处理文件一键下载:
@echo off
start cmd /k "pip install psutil"
start cmd /k "pip install pyinstaller"
程序具体实现功能的方法如下:
-
get_pid_by_name(file_3000soft)
:该函数通过遍历所有进程,查找并返回与给定文件名匹配的进程的PID。如果找不到匹配的进程或发生错误,则返回None
。 -
kill_red_spider(a2)
:该函数根据输入参数a2
的值,逐步执行以下操作:- 首先,根据
a2
的值判断是否需要杀掉名为rscheck.exe
和checkrs.exe
的两个组件进程。如果是,则调用get_pid_by_name()
函数获取进程PID,并尝试使用os.kill()
函数发送SIGTERM
信号来终止进程。 - 然后,杀掉名为
REDAgent.exe
的主进程,过程与上述相同。
- 首先,根据
-
restart_red_spider()
:该函数尝试重启名为REDAgent.exe
的主进程,通过调用subprocess.Popen()
函数来启动进程。如果找不到该文件,则打印错误消息。 -
程序主体:该程序首先打印欢迎信息和操作提示,然后通过循环读取用户输入的命令来执行相应的操作。支持的命令包括:
exit
:退出程序。kill
:杀掉名为rscheck.exe
、checkrs.exe
和REDAgent.exe
的进程。life
:重启名为REDAgent.exe
的主进程
可以看出,本程序是极为基础的。
所以大佬们在看到这里后可以不看了,以下的程序会更加基础,而且大部分是多余的。
二次函数杀手
对,还是杀手(killer)
主要是我的英语水平不行,只想得到这个词。
依旧顾名思义,该程序用于帮助解决部分二次函数的题目,如求解、求最值和求对称轴等。
但程序依旧不完善,一些时候可能会出不可预见的错误。
以下是程序主体:
#导入各类模块
import sys
#导入函数计算模块
from Function_Calculation_Module import reckon_mod
#介绍语部分
print('''
--
本程序由制作者一人完成
bilibili @伍同企
版本v0.1
此版本为测试版,如有问题,请向制作者反馈。
反馈通道:wjq2010346719@gmail.com
如有侵权情况,请及时向我反馈!
祝使用愉快!
--
需提前注明:
本程序是以二元一次方程的基本形态
即:ax^2+bx+c=(>/</>=/<=/!=)0为基础的。
但是程序还会输出以y=ax^2+bx+c为基础的数据。
所以也可以用本程序来进行二次函数的处理。
也可处理二元一次不等式。
请严格按照该式子来使用。
--
''')
ask_exit = 114
while ask_exit == 'n' or ask_exit == 114:
#问询部分
ask_tf = None
error_key = None
while ask_tf != 'y' or error_key != None:
#询问a值
print('请输入a值:')
variable_a = input('>>>')
print('你输入的a值为: ',variable_a)
print('请确认,是回车,否输入n')
ask_a = input('>>>')
while ask_a == 'n':
print('请输入a值:')
variable_a = input('>>>')
print('你输入的a值为: ',variable_a)
print('请确认,是回车,否输入n')
ask_a = input('>>>')
#询问b值
print('请输入b值:')
variable_b = input('>>>')
print('你输入的b值为: ',variable_b)
print('请确认,是回车,否输入n')
ask_b = input('>>>')
while ask_b == 'n':
print('请输入b值:')
variable_b = input('>>>')
print('你输入的b值为: ',variable_b)
print('请确认,是回车,否输入n')
ask_b = input('>>>')
#询问c值
print('请输入c值:')
variable_c = input('>>>')
print('你输入的c值为: ',variable_c)
print('请确认,是回车,否输入n')
ask_c = input('>>>')
while ask_c == 'n':
print('请输入c值:')
variable_c = input('>>>')
print('你输入的c值为: ',variable_c)
print('请确认,是回车,否输入n')
ask_c = input('>>>')
#询问符号
print('''
请选择符号:
1、=
2、>
3、<
4、>=
5、<=
6、!=
输入符号所对应的序号即可。
''')
variable_symbol = input('>>>')
if variable_symbol == '1':
true_symbol = '='
elif variable_symbol == '2':
true_symbol = '>'
elif variable_symbol == '3':
true_symbol = '<'
elif variable_symbol == '4':
true_symbol = '>='
elif variable_symbol == '5':
true_symbol = '<='
elif variable_symbol == '6':
true_symbol = '!='
else:
print('''
错误!
请输入范围内的数据!
建议检查输入的数据后再重新尝试。
error_002
''')
error_key = 'error_002'
break
print('你选择的符号为: ',true_symbol)
print('请确认,是回车,否输入n')
ask_symbol = input('>>>')
while ask_symbol == 'n':
print('''
请选择符号:
1、=
2、>
3、<
4、>=
5、<=
6、!=
输入符号所对应的序号即可。
''')
variable_symbol = input('>>>')
if variable_symbol == '1':
true_symbol = '='
elif variable_symbol == '2':
true_symbol = '>'
elif variable_symbol == '3':
true_symbol = '<'
elif variable_symbol == '4':
true_symbol = '>='
elif variable_symbol == '5':
true_symbol = '<='
elif variable_symbol == '6':
true_symbol = '!='
else:
print('''
错误!
请输入范围内的数据!
建议检查输入的数据后再重新尝试。
error_002
''')
error_key = 'error_002'
break
print('你选择的符号为:',variable_symbol)
print('请确认,是回车,否输入n')
ask_symbol = input('>>>')
#再次确认输入的变量
print('你输入了以下变量:')
print('a值: ',variable_a)
print('b值: ',variable_b)
print('c值: ',variable_c)
print('符号: ',true_symbol)
print('''
以上为你输入的变量,请再次确认。
如果无误,请输入y以确认并继续。
如果有误,请输入n以重新输入。
''')
ask_tf = input('>>>')
if error_key != None:
sys.exit()
#调用函数进行计算
print('''
将开始计算
请稍等片刻...
''')
result = reckon_mod(variable_a, variable_b, variable_c, true_symbol)
if result != None:
sys.exit()
print('运行结束,感谢使用!')
ask_exit = input('回车键退出,或输入n再来一次')
该Python程序是一个非图形化输入二次方程参数并求解的程序。程序首先导入了系统和其他模块,然后通过一系列的输入界面,让用户输入二次方程的参数a、b、c和不等号,然后调用一个名为reckon_mod的函数进行计算,并输出结果。程序具有一定的错误处理机制,能够处理用户输入错误的情况。
然后是程序的函数处理模块:
#定义reckon_mod()模块
def reckon_mod(a, b, c, symbol):
#转换数据类型
a = float(a)
b = float(b)
c = float(c)
symbol = str(symbol)
#数据初始化
a_1 = a*4
b_1 = b**2
b_2 = 0-b
print('--')
#方程部分
if symbol == '=':
print('方程求解部分')
print('--')
#求方程准确值
print('开始计算方程准确值...')
delta = b_1-a*c*4
print('计算得:Δ = ',delta)
if delta > 0:
accurate_value_l = (0-b-delta**(0.5))/(a*2)
accurate_value_r = (0-b+delta**(0.5))/(a*2)
print('方程准确值计算完成')
print('确定为:','\n',accurate_value_l,' , ',accurate_value_r)
print('--')
elif delta < 0:
print('方程准确值计算完成')
print('结果为:','\n','无实数解')
print('--')
elif delta == 0:
accurate_value = (0-b)/(a*2)
print('方程准确值计算完成')
print('确定为: ','\n','{ ',accurate_value,' }')
print('--')
else:
print('''
错误!
非范围内的数据!
建议向制作者报告错误。
error_004
''')
error_key = 'error_004'
return error_key
#二次函数部分
print('函数解析部分')
print('--')
#计算对称轴
print('开始计算对称轴...')
symmetry_axis = b_2/(a*2)
print('对称轴计算完成')
print('确定其值为: ',symmetry_axis)
print('--')
#计算最值
print('开始计算最值...')
max_or_min_value = (a_1*c-b_1)/a_1
print('最值计算完成')
#确定是最大值还是最小值
if a > 0:
print('确定为最小值: ',max_or_min_value)
print('--')
elif a < 0:
print('确定为最大值: ',max_or_min_value)
print('--')
else:
print('''
错误!
a值应为非0且非None的实数!
建议检查输入的数据后再重新尝试。
error_001
''')
error_key = 'error_001'
return error_key
#依据符号确定操作
if symbol == '=':
#确定为等式
#易知定义域为R
#求值域
print('易知定义域为:','\n','R,实数集')
print('开始求值域...')
print('求得值域为:')
if a > 0:
print('[ ',max_or_min_value,' , + ∞ )')
print('--')
elif a < 0:
print('( - ∞ , ',max_or_min_value,' ]')
print('--')
else:
print('''
错误!
非范围内的数据!
建议检查输入的数据后再重新尝试。
error_003
''')
error_key = 'error_003'
return error_key
elif symbol != '=' and symbol != '!=':
#确定为不等式
#求定义域
#二次不等式部分
print('二次不等式部分')
print('--')
print('开始计算定义域...')
if symbol == '>':
delta = b_1-a*c*4
print('计算得:Δ = ',delta)
if delta > 0:
domain_of_definition_l = (0-b-delta**(0.5))/(a*2)
domain_of_definition_r = (0-b+delta**(0.5))/(a*2)
if a > 0:
print('定义域计算完成')
print('确定为:','\n','( - ∞ , ',domain_of_definition_l,' ) ∪ ( ',domain_of_definition_r,' , + ∞ )')
print('--')
elif a < 0:
print('定义域计算完成')
print('确定为:','\n','( ',domain_of_definition_l,' , ',domain_of_definition_r,' )')
print('--')
else:
print('''
错误!
非范围内的数据!
建议检查输入的数据后再重新尝试。
error_003
''')
error_key = 'error_003'
return error_key
elif delta <= 0:
print('定义域计算完成')
print('结果为:','\n','无实数解')
print('--')
else:
print('''
错误!
非范围内的数据!
建议向制作者报告错误。
error_004
''')
error_key = 'error_004'
return error_key
elif symbol == '<':
delta = b_1-a*c*4
print('计算得:Δ = ',delta)
if delta > 0:
domain_of_definition_l = (0-b-delta**(0.5))/(a*2)
domain_of_definition_r = (0-b+delta**(0.5))/(a*2)
if a > 0:
print('定义域计算完成')
print('确定为:','\n','( ',domain_of_definition_l,' , ',domain_of_definition_r,' )')
print('--')
elif a < 0:
print('定义域计算完成')
print('确定为:','\n','( - ∞ , ',domain_of_definition_l,' ) ∪ ( ',domain_of_definition_r,' , + ∞ )')
print('--')
else:
print('''
错误!
非范围内的数据!
建议检查输入的数据后再重新尝试。
error_003
''')
error_key = 'error_003'
return error_key
elif delta <= 0:
print('定义域计算完成')
print('结果为:','\n','无实数解')
print('--')
else:
print('''
错误!
非范围内的数据!
建议向制作者报告错误。
error_004
''')
error_key = 'error_004'
return error_key
elif symbol == '>=':
delta = b_1-a*c*4
print('计算得:Δ = ',delta)
if delta > 0:
domain_of_definition_l = (0-b-delta**(0.5))/(a*2)
domain_of_definition_r = (0-b+delta**(0.5))/(a*2)
if a > 0:
print('定义域计算完成')
print('确定为:','\n','( - ∞ , ',domain_of_definition_l,' ] ∪ [ ',domain_of_definition_r,' , + ∞ )')
print('--')
elif a < 0:
print('定义域计算完成')
print('确定为:','\n','[ ',domain_of_definition_l,' , ',domain_of_definition_r,' ]')
print('--')
else:
print('''
错误!
非范围内的数据!
建议检查输入的数据后再重新尝试。
error_003
''')
error_key = 'error_003'
return error_key
elif delta < 0:
print('定义域计算完成')
print('结果为:','\n','无实数解')
print('--')
elif delta == 0:
domain_of_definition = (0-b)/(a*2)
print('定义域计算完成')
print('确定为: ','\n','{ ',domain_of_definition,' }')
print('--')
else:
print('''
错误!
非范围内的数据!
建议向制作者报告错误。
error_004
''')
error_key = 'error_004'
return error_key
elif symbol == '<=':
delta = b_1-a*c*4
print('计算得:Δ = ',delta)
if delta > 0:
domain_of_definition_l = (0-b-delta**(0.5))/(a*2)
domain_of_definition_r = (0-b+delta**(0.5))/(a*2)
if a > 0:
print('定义域计算完成')
print('确定为:','\n','[ ',domain_of_definition_l,' , ',domain_of_definition_r,' ]')
print('--')
elif a < 0:
print('定义域计算完成')
print('确定为:','\n','( - ∞ , ',domain_of_definition_l,' ] ∪ [ ',domain_of_definition_r,' , + ∞ )')
print('--')
else:
print('''
错误!
非范围内的数据!
建议检查输入的数据后再重新尝试。
error_003
''')
error_key = 'error_003'
return error_key
elif delta < 0:
print('定义域计算完成')
print('结果为:','\n','无实数解')
print('--')
elif delta == 0:
domain_of_definition = (0-b)/(a*2)
print('定义域计算完成')
print('确定为: ','\n','{ ',domain_of_definition,' }')
print('--')
else:
print('''
错误!
非范围内的数据!
建议向制作者报告错误。
error_004
''')
error_key = 'error_004'
return error_key
else:
#特殊情况,特殊分析
#可能是error
if symbol == '!=':
print('开始求定义域...')
delta = b_1-a*c*4
print('计算得:Δ = ',delta)
if delta > 0:
domain_of_definition_l = (0-b-delta**(0.5))/(a*2)
domain_of_definition_r = (0-b+delta**(0.5))/(a*2)
print('定义域计算完成')
print('确定为:','\n','{ ',domain_of_definition_l,' , ',domain_of_definition_r,' }')
print('--')
elif delta < 0:
print('定义域计算完成')
print('结果为:','\n','无实数解')
print('--')
elif delta == 0:
domain_of_definition = (0-b)/(a*2)
print('定义域计算完成')
print('确定为: ','\n','{ ',domain_of_definition,' }')
print('--')
else:
print('''
错误!
非范围内的数据!
建议向制作者报告错误。
error_004
''')
error_key = 'error_004'
return error_key
else:
print('''
错误!
非范围内的数据!
建议检查输入的数据后再重新尝试。
error_003
''')
error_key = 'error_003'
return error_key
return None
该模块函数主要实现了根据输入的参数进行二次方程的求解和二次函数的性质计算。具体功能包括:
- 将输入的参数转换为相应的数据类型。
- 根据输入的符号判断是求解方程还是计算函数的性质。
- 如果是求解方程,则根据符号判断是等于号还是不等于号,然后计算方程的准确值或者求解定义域和值域。
- 如果是计算函数性质,则计算对称轴和最值,并根据符号确定是求最大值还是最小值。
- 根据需要输出相应的结果。
该函数涉及的数学知识包括二次方程的求解、二次函数的性质等。在计算过程中,函数会根据输入的数据类型和范围进行错误检查,并返回相应的错误码。
自我的评价依然是低级、幼稚和多余。
该程序的大部分功能都可以自己算出来,可能比用这个东西还要快不少。
而且之后发现输入部分太过累赘,这会导致程序整体使用体验的削弱。
最后是界面,由于没搞明白python的图形化界面,于是使用的是命令行界面。
总体评价是:比同龄人强,离梦想很远。
尾声
#就是结尾
感谢任何一个愿意看到这里的陌生人,我向你们表达谢意。
希望下一篇博客可以给出更好的,有技术含量的东西。
再次感谢!