Python代码与视频一致却报错,求解答缩进及变量等三类问题
问题分析与解决方案
你碰到的三个问题全都是缩进不一致闹的——Python对代码缩进要求特别严,同一层级的代码必须用相同数量的空格(别混着用制表符)。
逐个错误拆解
"Unindent amount does not match previous indent":
意思是你代码里的缩进数量前后不统一。看你第二个函数get_number_of_lines(),while True:那行的缩进比第一个函数里的while多了个空格,导致后面代码的层级全乱了,Python识别不出代码块的归属。"return can be used only within a function":
因为return lines那行的缩进没和函数内的代码对齐,Python误以为这行代码不在get_number_of_lines()函数里,所以报错说return不能用在函数外。"lines is not defined":
还是缩进锅——lines是在while循环里定义的,但缩进乱了之后,Python觉得你是在循环外(甚至函数外)调用这个变量,当然会提示未定义。
修正后的代码
MAX_LINES = 3 def deposit(): while True: amount = input("What would you like to deposit? $") if amount.isdigit(): amount = int(amount) if amount > 0: break else: print("Amount must be greater than 0. ") else: print("Please enter a number. ") return amount def get_number_of_lines(): while True: # 这里统一用4个空格缩进,和第一个函数保持一致 lines = input("Enter the number of lines to bet on (1-" + str(MAX_LINES) + ")? ") if lines.isdigit(): lines = int(lines) if 1 <= lines <= MAX_LINES: break else: print("Please enter a valid number of lines. ") else: print("Please enter a number. ") return lines # 缩进和函数内的while循环同级,确保在函数范围内
小提醒
- 写Python代码统一用4个空格做缩进,别用Tab,更不能空格Tab混着来;
- 复制视频里的代码后一定要检查缩进,有时候视频排版或者复制工具会搞乱缩进格式。
内容的提问来源于stack exchange,提问作者kristof
相关产品推荐
相关产品推荐

