打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
第11关笔记

1、bug1:粗心

①、语法错误:SyntaxError: invalid syntax

问题:if 语句后面缺了 “:”

a = input('你是谁:')
if a == '游乐王子'
print('平平淡淡才是真')

正解:

a = input('你是谁:')
if a == '游乐王子':
print('平平淡淡才是真')

②、语法错误:SyntaxError: invalid syntax

问题:for 语句后面的冒号 “:” 应为英文输入 “:”

for i in range(3):
print('延君贼帅')

正解:

for i in range(3):
print('延君贼帅')

③、没有验证函数参数是否有效:SyntaxError: unexpected EOF while parsing

问题:print 语句末尾缺了括号

a=10
b=11
print('我完成第%d关了,马上完成第%d关'%(a,b)

正解:

a=10
b=11
print('我完成第%d关了,马上完成第%d关'%(a,b))

④、与任何外部缩进级别都不匹配:IndentationError: unindent does not match any outer indentation level

问题:第 6 行的 else 与第 4 行的 if 没有对齐

a=int(input('今天完成第几关了?'))
if a > 10:
print('有10关的笔记')
if a >= 11:
print('有11关的笔记')
else:
print('没11关的笔记')
else:
print('没10关的笔记')

正解:

a=int(input('今天完成第几关了?'))
if a > 10:
print('有10关的笔记')
if a >= 11:
print('有11关的笔记')
else:
print('没11关的笔记')
else:
print('没10关的笔记')

⑤、类型无法比较错误:TypeError: '<' not supported between instances of 'str' and 'int'

问题:input 的值为字符型,18 为整数型,二者无法比较

a=input('同学知道延君几岁吗?')
if a < 18:
print('答对了')
else:
print('答错了')

正解:

a=int(input('同学知道延君几岁吗?'))
if a < 18:
print('答对了')
else:
print('答错了')

⑥、语法错误:SyntaxError: invalid syntax

问题:= 是赋值语句,== 是判断语句,不要混淆

a=input('同学记得今天是 day 几吗?')
if a = 2:
print('答对了')
else:
print('答错了')

正解:

a=input('同学记得今天是 day 几吗?')
if a == 2:
print('答对了')
else:
print('答错了')

⑦、变量未定义错误:NameError: name 'random' is not defined

问题:random 模块未定义,导致提示变量 random 未定义

a=random.random()
print(a)

正解:

import random
a=random.random()
print(a)

2、bug2:知识不熟练

①、超出列表范围:IndexError: list index out of range

问题:列表的索引是从 0 开始,而不是 1

a=['day1','day2']
print(a[2])

正解:

a=['day1','day2']
print(a[1])

②、字典没有 append 方法:AttributeError: 'dict' object has no attribute 'append'

问题:字典的元素新增是 d['X']=Y

d={'延君':1,'卡西':2}
d.append('七七')
print(d)

正解:

d={'延君':1,'卡西':2}
d['七七']=3
print(d)

3、bug3、思路不清

在思路不清晰时,我们可以适当在代码中加入 print 语句,打印我们不理解的变量,例如下面,我们不理解第 5 行的 变量 c 为多少,可以在第 5 行下面加上 print(c) ,借此来打印我们不理解的值

def A():
a='延君'
b='卡西'
return a,b
def B(c):
# print(c)
name1=c[0]
name2=c[1]
print(name1+name2)
def main():
e=A()
B(e)
main()

4、try... except... 语句

使用:try 语句内放执行语句,except 语句放捕获错误后需要进行的下一步操作,例如:

try:
a=input('同学知道延君几岁吗?')
if a < 18:
print('答对了')
else:
print('答错了')
except:
print('输入有误')

原因是“input 的值为字符型,18 为整数型,二者无法比较”。

5、练习

练习-一起来捉虫-参考

1.知识点debug

【参考】

scores = {'语文':89, '数学':95, '英语':80}
def get_average(scores): #定义get_average()函数
    sum_score = 0 #定义整型变量sum_score
    for subject, score in scores.items(): #取出字典中的键和值分别赋值给变量subject,score
        sum_score += score #sun_score=sum_score+score
        print('现在的总分是%d'%sum_score)
    ave_score = sum_score/len(scores) #计算平均值
    print('平均分是%d'%ave_score)

get_average(scores) #调用函数

2.思维不清debug

【参考】

not_bad_word = True
while not_bad_word:
    x = input('请给旺财取个外号:')
    if x == '小狗' or x =='汪汪'# 只要外号是两个中的一个,就会生气。
        not_bad_word = False
        print('我生气了,不想理你了!')


print('对不起,以后我不会这么叫你了')

3.被动掉坑debug

【参考】

deposit = [100,300,900,2000,5000,0,2000,4500]

for i in range(1, len(deposit)):
    if deposit[i-1] == 0:  # 判断被除数等于0时,特殊处理。
        print('你上次存款为 0 哦!')
    else:
        times = deposit[i]/deposit[i-1]
        print('你的存款涨了%f倍'%times)

练习-贴心的除法计算器-参考

print('\n欢迎使用除法计算器!\n')


while True:
try:
x = input('请你输入被除数:')
y = input('请你输入除数:')
z = float(x)/float(y)
print(x,'/',y,'=',z)
break # 默认每次只计算一次,所以在这里写了 break。
except ZeroDivisionError: # 当除数为0时,跳出提示,重新输入。
print('0是不能做除数的!')
except ValueError: # 当除数或被除数中有一个无法转换成浮点数时,跳出提示,重新输入。
print('除数和被除数都应该是整值或浮点数!')
# 方式2:将两个(或多个)异常放在一起,只要触发其中一个,就执行所包含的代码。
# except(ZeroDivisionError,ValueError):
# print('你的输入有误,请重新输入!')
# 方式3:常规错误的基类,假设不想提供很精细的提示,可以用这个语句响应常规错误。
# except Exception:
# print('你的输入有误,请重新输入!')

每一个结果,可能有多个方法,同学们可以多多尝试。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
第11关 知识点 常见问题集锦
Python基础语法——代码规范&判断语句&循环语句
第四关奖励(0~4关笔记)
【Python基础语法】参考 卡西
软件测试/测试开发丨Python异常处理 学习笔记
5-1 流程控制 逻辑运算符
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服