Python 未缩进与任何外部缩进级别不匹配

Python 未缩进与任何外部缩进级别不匹配,python,indentation,Python,Indentation,在第51/52行,我得到了错误: “未缩进”与任何外部缩进级别都不匹配 我知道这与制表符和空格有关 请注意,我没有编写此代码,并计划对其进行修改 完整代码(也可在上) 导入操作系统 进口稀土 导入套接字 导入系统 导入时间 server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#创建socket server_socket.bind(“”,9020))#将服务器绑定到此套接字 服务器_套接字。侦听(4)#最大排队连接数 #欢迎

在第51/52行,我得到了错误:

“未缩进”与任何外部缩进级别都不匹配

我知道这与制表符和空格有关

请注意,我没有编写此代码,并计划对其进行修改

完整代码(也可在上)
导入操作系统
进口稀土
导入套接字
导入系统
导入时间
server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#创建socket
server_socket.bind(“”,9020))#将服务器绑定到此套接字
服务器_套接字。侦听(4)#最大排队连接数
#欢迎辞
打印(“TCP聊天服务器正在端口9020上等待客户端连接…”)
聊天日志=[]包含聊天日志
time=time.strftime(“%l:%M%p%Z,在%b%d,%Y上”)#服务器开始时间格式很好
start_time=str(time)#将服务器开始时间转换为字符串
username=“ChatUser”#如果用户未提供默认服务器用户名,则为默认服务器用户名
#支持~2^x个客户端连接,其中x是进程分叉的数量
os.fork()
os.fork()
os.fork()
#此变量包含“help”命令的帮助文档
chatHelp=(“聊天服务器接受以下命令:\n”
+“adios关闭程序\n”
+连接显示客户端连接信息(IP、端口)\n
+“获取返回完整的聊天日志\n”
+“getrange从到获取聊天日志条目(从1开始)\n”
+“帮助列出有效的命令\n”
+“名称:将您的用户名设置为\n”
+“测试:将数据回显给您\n”
+“时间显示服务器启动的时间\n”
+“推送:添加到聊天日志\n”
+“将聊天日志保存到文件\n”)
而1:
#接受连接
客户端\u套接字,地址=服务器\u套接字.accept()
#从客户端打印服务器日志的连接信息
打印(“从客户处收到的连接”),地址
#用于下面的连接命令功能(客户端请求)
连接=str(地址)
#向客户端发送欢迎字符串
client_socket.send(“欢迎来到Nigel的聊天室!您已以ChatUser身份登录。\n键入帮助以获取有效命令的列表。\n”)
#服务器运行时无限循环
而1:
data=client_socket.recv(2048)#将客户端数据接收到缓冲区
process_data=data.lower()#将接收到的用于处理的数据小写
打印(“从客户端接收的数据>>”),处理#从客户端接收的数据#打印以供日志参考
#接收命令的函数(我使用find库来减少与其他语言的兼容性错误)
#——“adios”命令功能---
如果(处理数据查找(“adios”)==0):
客户端_socket.close()#关闭套接字连接
打印(“>”)
打破
#——“连接:”命令功能---
elif(处理数据查找(“连接”)==0):
客户端\u socket.send(“客户端连接信息:“+connection+”\n”)
打印“用户请求的连接信息”
#--“getrange”命令函数,带正则表达式筛选(必须在“get”命令函数之前)---
elif(重新匹配(r'getrange\s+(\d+)\s+(\d+),处理#u数据)):#Regex以查找与输入的动态数字的正确匹配
match=re.match(r'getrange\s+(\d+)\s+(\d+),处理\u数据)
getValue=“聊天日志来自范围”+match.group(1)+”和“+match.group(2)+”:\n“#获取客户端提供的第一个和第二个范围号码
如果(len(chat_log)>=int(match.group(1))和len(chat_log)>=int(match.group(2)):#检查聊天日志是否扩展到给定范围
计数=int(匹配组(1))-1
而(计数
Python代码对您使用的缩进级别很敏感。你的代码是:

if (process_data.find("adios") == 0):
     client_socket.close() #Close socket connection
 print ("<Ctrl+C to exit.>>")
 break;

该守则目前的内容如下:

if (process_data.find("adios") == 0):
     client_socket.close() #Close socket connection
 print ("<Ctrl+C to exit.>>")
 break;
代码中的缩进似乎不是很标准(或一致)。例如,41/42中
while
循环的主体比类似语句的其他主体缩进得更多,例如第31-33行,这在像Python这样的语言中是个麻烦,因为空格很重要


最后,请注意,混合使用制表符和空格不是一个好主意。建议使用超过制表符和每级缩进。

希望我已经正确理解了您的问题。我很怀疑你在pastebin中的代码是如何呈现的,因为应该有比它显示的更多的缩进。与你的问题无关
if (process_data.find("adios") == 0):
 client_socket.close() #Close socket connection
 print ("<Ctrl+C to exit.>>")
 break;
if (process_data.find("adios") == 0):
     client_socket.close() #Close socket connection
 print ("<Ctrl+C to exit.>>")
 break;
if (process_data.find("adios") == 0):
   client_socket.close() #Close socket connection
   print ("<Ctrl+C to exit.>>")
   break;