Python新手错误自查

本文列举了Python初学者常遇到的17种错误,包括语法错误、缩进问题、类型错误等,并给出了正确的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python新手常犯的错误


当初学 Python 时,想要弄懂 Python 的错误信息的含义可能有点复杂。这里列出了常见的的一些让你程序 crash 的运行时错误。
1)忘记在 if , elif , else , for , while , class ,def 声明末尾添加 :(导致 “SyntaxError :invalid syntax”)
该错误将发生在类似如下代码中:
if spam == 42
    print('Hello!')
2)使用 = 而不是 ==(导致“SyntaxError: invalid syntax”)
 = 是赋值操作符而 == 是等于比较操作。该错误发生在如下代码中:
if spam = 42:
    print('Hello!')
3)错误的使用缩进量。(导致“IndentationError:unexpected indent”、“IndentationError:unindent does not match any outer indetation level”以及“IndentationError:expected an indented block”)
记住缩进增加只用在以:结束的语句之后,而之后必须恢复到之前的缩进格式。该错误发生在如下代码中:
print('Hello!')
    print('Howdy!')

或者:

if spam == 42:
    print('Hello!')
  print('Howdy!')

或者:

if spam == 42:
print('Hello!')

#############缩进与编辑器有关,默认的idle使用的4字符缩进,到notepad++就变成8个字符缩进了,所以用++编辑的tab缩进,在idle中运行一直出现缩进错误

4)在 for 循环语句中忘记调用 len() (导致“TypeError: 'list' object cannot be interpreted as an integer”)
通常你想要通过索引来迭代一个list或者string的元素,这需要调用 range() 函数。要记得返回len 值而不是返回这个列表。
该错误发生在如下代码中:
spam = ['cat', 'dog', 'mouse']
for i in range(spam):
    print(spam[i])
5)尝试修改string的值(导致“TypeError: 'str' object does not support item assignment”)
string是一种不可变的数据类型,该错误发生在如下代码中:
spam = 'I have a pet cat.'
spam[13] = 'r'
print(spam)
而你实际想要这样做:
spam = 'I have a pet cat.'
spam = spam[:13] + 'r' + spam[14:]
print(spam)
6)尝试连接非字符串值与字符串(导致 “TypeError: Can't convert 'int' object to str implicitly”)
该错误发生在如下代码中:
numEggs = 12
print('I have ' + numEggs + ' eggs.')
 
而你实际想要这样做:
numEggs = 12
print('I have ' + str(numEggs) + ' eggs.')

或者:

numEggs = 12
print('I have %s eggs.' % (numEggs))
7)在字符串首尾忘记加引号(导致“SyntaxError: EOL while scanning string literal”)
该错误发生在如下代码中:
 
print(Hello!')

或者:

print('Hello!)

或者:

myName = 'Al'
print('My name is ' + myName + . How are you?')
8)变量或者函数名拼写错误(导致“NameError: name 'fooba' is not defined”)
该错误发生在如下代码中:
foobar = 'Al'
print('My name is ' + fooba)

或者:

spam = ruond(4.2)

或者:

spam = Round(4.2)
9)方法名拼写错误(导致 “AttributeError: 'str' object has no attribute 'lowerr'”)
该错误发生在如下代码中:
spam = 'THIS IS IN LOWERCASE.'
spam = spam.lowerr()
10)引用超过list最大索引(导致“IndexError: list index out of range”)
该错误发生在如下代码中:
spam = ['cat', 'dog', 'mouse']
print(spam[6])
11)使用不存在的字典键值(导致“KeyError:‘spam’”)
该错误发生在如下代码中:
spam = {'cat': 'Zophie', 'dog': 'Basil', 'mouse': 'Whiskers'}
print('The name of my pet zebra is ' + spam['zebra'])
12)尝试使用Python关键字作为变量名(导致“SyntaxError:invalid syntax”)
Python关键不能用作变量名,该错误发生在如下代码中:
class = 'algebra'
Python3的关键字有:and, as, assert, break, class, continue, def, del, elif, else, except, False, finally, for, from, global, if, import, in, is, lambda, None, nonlocal, not, or, pass, raise, return, True, try, while, with, yield
13)在一个定义新变量中使用增值操作符(导致“NameError: name 'foobar' is not defined”)
不要在声明变量时使用0或者空字符串作为初始值,这样使用自增操作符的一句spam += 1等于spam = spam + 1,这意味着spam需要指定一个有效的初始值。
该错误发生在如下代码中:
spam = 0
spam += 42
eggs += 42
14)在定义局部变量前在函数中使用局部变量(此时有与局部变量同名的全局变量存在)(导致“UnboundLocalError: local variable 'foobar' referenced before assignment”)
在函数中使用局部变来那个而同时又存在同名全局变量时是很复杂的,使用规则是:如果在函数中定义了任何东西,如果它只是在函数中使用那它就是局部的,反之就是全局变量。
这意味着你不能在定义它之前把它当全局变量在函数中使用。
该错误发生在如下代码中:
someVar = 42
def myFunction():
    print(someVar)
    someVar = 100
myFunction()
15)尝试使用 range()创建整数列表(导致“TypeError: 'range' object does not support item assignment”)
有时你想要得到一个有序的整数列表,所以 range() 看上去是生成此列表的不错方式。然而,你需要记住 range() 返回的是 “range object”,,需要一个容器去装载它,而不是实际的 list 值。
该错误发生在如下代码中:
spam = range(10)
spam[4] = -1
也许这才是你想做:
spam = list(range(10))
spam[4] = -1
(注意:在 Python 2 中 spam = range(10) 是能行的,因为在 Python 2 中 range() 返回的是list值,但是在 Python 3 中就会产生以上错误)
16)不错在 ++ 或者 -- 自增自减操作符。(导致“SyntaxError: invalid syntax”)
如果你习惯于例如 C++ , Java , PHP 等其他的语言,也许你会想要尝试使用 ++ 或者 -- 自增自减一个变量。在Python中是没有这样的操作符的。
该错误发生在如下代码中:
spam = 1
spam++
也许这才是你想做的:
spam = 1
spam += 1
17)忘记为方法的第一个参数添加self参数(导致“TypeError: myMethod() takes no arguments (1 given)”)
该错误发生在如下代码中:
class Foo():
    def myMethod():#应该在括号中加上self
        print('Hello!')
a = Foo()
a.myMethod()

继承是面向对象的重要特征之一,继承是两个类或者多个类之间的父子关系,子进程继承了父进程的所有公有实例变量和方法。继承实现了代码的重用。重用已经存在的数据和行为,减少代码的重新编写,python在类名后用一对圆括号表示继承关系, 括号中的类表示父类,如果父类定义了__init__方法,则子类必须显示地调用父类的__init__方法,如果子类需要扩展父类的行为,可以添加__init__方法的参数。

<think>好的,用户遇到了运行Python脚本时的错误,提示找不到文件。我需要仔细分析这个问题。首先,错误信息显示的是系统在C:\Windows\system32目录下找不到detect_remotectrl.py文件。这说明用户在执行命令时,当前工作目录可能不是脚本所在的目录,导致Python无法找到文件。 用户之前按照指南操作,可能是在命令行中没有正确切换到脚本所在的目录。比如,用户可能直接在管理员命令提示符下运行了python detect_remotectrl.py,但此时的工作目录是system32,而不是桌面或其他保存脚本的位置。 接下来,我需要考虑用户可能的操作步骤。用户可能在第四步中,没有正确进入脚本所在的目录。指南中提到的“文件资源管理器进入脚本所在目录(通常是桌面),在地址栏输入cmd并按回车”,这应该能正确设置工作目录。但用户可能跳过了这一步,或者脚本不在预期的位置。 另外,用户可能将脚本保存到了其他位置,比如下载文件夹,而不是桌面,或者在重命名文件时出现了错误,比如后缀名没有正确改为.py,导致文件实际是detect_remotectrl.py.txt,但用户没有显示文件扩展名,所以看不到。这会导致文件名错误Python无法识别。 此外,用户可能没有以管理员权限运行命令行,或者安装Python时没有正确添加到PATH环境变量,但之前的错误提示显示Python解释器被正确找到,所以PATH应该没问题。但需要确认用户是否以管理员身份运行命令行,否则可能权限不足。 解决方案方面,首先需要引导用户确认脚本的存放位置,并确保在运行命令前切换到该目录。同时,检查文件名是否正确,特别是后缀名是否被隐藏,导致用户实际保存的是.txt文件。另外,指导用户如何正确使用cd命令切换目录,或者通过资源管理器的地址栏直接打开命令行。 还要考虑用户可能对命令行操作不熟悉,需要给出具体的步骤,比如如何进入桌面目录,如何显示文件扩展名等。可能需要分步骤详细说明,避免用户操作失误。 总结下来,用户的主要问题在于文件路径不正确或文件名错误。需要逐步引导用户检查文件位置、名称,并正确切换工作目录,同时确保文件扩展名正确显示和修改。</think>这个错误提示说明系统找不到你的Python脚本文件。我帮你拆解问题并提供三种解决方法: --- ### **错误原因定位** ```bash C:\Windows\system32\detect_remotectrl.py 不存在 ``` 出现该错误是因为: 1. 脚本文件不在当前命令行的工作目录下 2. 文件名拼写错误或保存位置错误 3. 未正确进入脚本所在目录 --- ### **方法一:直接拖拽运行(推荐给新手)** 1. 按住键盘 `Shift` 键不放 2. 右键点击 `detect_remotectrl.py` 文件 3. 选择「复制文件地址」 4. 在命令提示符输入: ```bash python 粘贴复制的地址 ``` (例如:`python "C:\Users\你的用户名\Desktop\detect_remotectrl.py"`) --- ### **方法二:正确切换目录** 1. **确认文件位置**: - 查看脚本是否在桌面(默认保存位置) - 检查文件名是否完整正确(注意不要有`.txt`隐藏后缀) 2. **进入目录的正确姿势**: ```bash # 如果是桌面存放: cd C:\Users\你的用户名\Desktop # 举例(把"Administrator"换成你的电脑用户名): cd C:\Users\Administrator\Desktop ``` 3. **终极验证命令**: ```bash dir | findstr "detect_remotectrl.py" ``` 如果看到文件名显示,说明文件存在 --- ### **方法三:文件路径自查指南** 1. **显示文件扩展名**: - 打开文件资源管理器 → 查看 → 勾选「文件扩展名」 - 确认文件名是 `detect_remotectrl.py` 而不是 `detect_remotectrl.py.txt` 2. **查看真实路径**: - 右键文件 → 属性 → 查看「位置」栏 ![文件属性路径查看示意图](https://i.imgur.com/3GXzT9m.png) 3. **管理员模式修正**: - 如果使用管理员命令行: ```bash # 先切换到桌面(注意替换用户名) cd /d C:\Users\你的用户名\Desktop ``` --- ### **典型错误案例对照表** | 现象 | 解决方案 | |-------|----------| | 文件在D盘但命令行在C盘 | 输入 `D:` 回车切换盘符,再 `cd 具体路径` | | 文件名含空格 | 用引号包裹路径:`python "C:\My Documents\detect remotectrl.py"` | | 中文用户名乱码 | 在路径中使用拼音代替中文目录名 | --- ### **操作验证** 成功运行时应该看到类似这样的提示: ```bash === 正在初始化远程控制检测环境 === [*] 开始扫描异常网络连接... (后续出现动态进度条) ``` 如果仍然报错,建议: 1. 截图文件属性和命令行窗口 2. 尝试将脚本文件直接放在C盘根目录(路径改为 `C:\detect_remotectrl.py`)测试 3. 在代码文件右键选择「Edit with IDLE」测试能否正常打开 这个错误就像告诉您"钥匙在口袋里却去柜子里找",只要确认文件位置就能解决啦!(๑•̀ㅂ•́)و✧
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值