|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
n = 0
m = 0
f = open("univ.txt", "r")
lines = f.readlines()
f.close()
for line in lines:
line = line.replace("\n","")
if '大学生' in line:
continue
elif '学院' in line:
print('{}'.format(line))
m += 1
elif '大学' in line:
print('{}'.format(line))
n += 1
print("包含大学的名称数量是{}".format(n))
print("包含学院的名称数量是{}".format(m))
fi = open('univ.txt','r')
d = {}
m = 0#大学
n = 0#学院
for line in fi:
line = line.replace('\n','')
if '大学生' not in line:
if '大学' in line:
m = m + 1
print(line)
if '学院' in line:
n = n + 1
print(line)
print("包含大学的名称数量是{}".format(m))
print("包含学院的名称数量是{}".format(n))
为啥这两个答案不一样?
目测是分支语句的使用方法不同
第一种相当于三选一 一次循环里 if elif elif 三个只会执行其中一个,只执行第一个为真的 然后跳出分支语句 (建议最后加个else处理其他情况)
第二种 每次循环中 如果line里没有'大学生' 就继续执行里面的语句 但它会先执行'大学'的判断 再执行'学院'的判断 即每次两个都会判断
下面举例:
有这样两行内容:
***1大学***2学院
***1学院
***1大学
第一个程序:
第一行 无‘大学生’ ,即if 0 → 有‘学院’,即 if 1 执行里面语句 →跳出分支,此时应该m=1,n=0
第二行 无‘大学生’ ,即if 0 → 有‘学院’,即 if 1 执行里面语句 →跳出分支,此时应该m=2,n=0
第三行 无‘大学生’ ,即if 0 → 无‘学院’,即 if 0 → 有‘大学’,即if 1 执行里面语句 →跳出分支,此时应该m=2,n=1
第二个程序:
第一行 无‘大学生’ ,即if 1 → 有‘大学’,m+1 → 有‘学院’,n+1 m=1,n=1
第二行 无‘大学生’ ,即if 1 → 无’大学‘ → 有‘学院’,n+1 m=1,n=2
第三行 无‘大学生’ ,即if 1 → 有‘大学’,m+1 → 无’学院‘ m=2,n=2
问题肯定在分支语句里 我只口头分析 有错误欢迎指正 可以肯定的是运行结果第二种必定大于等于第一种
|
|