azazinco 2019-12-04 21:26 采纳率: 0%
浏览 311
已结题

这个代码为什么输出不了?题目如下:

图片说明

x = input("输入一段英文文本")
total = 0             #表示一个单词的字符数
k = 0                #表示间隔符号的数量
h = 0                #表示每个单词第一个字符的位置
L = []
D = [[]]
n = 0
gs = 0
e = -1
for i in x:
    if (i >= "a" and i <= "z") or (i >= "A" and i <= "Z") or (i >= "0" and i <= "9") or x == "_":
        while (k >= 1):                   #如果间隔符号的数量大于等于1
            if total <= 15:               #如果单词数不超过15
                L.append(x[e-k-total+1:e-k+1])        #取前15个字符
            else:
                L.append(x[e-k-total+1:e-k-total+16])       #取上一个单词第一个字符和最后一个字符的位置
            h = e + 1        #h为新单词第一个字符的位置
            k = 0                         #间隔符号数清零
            total = 0                     #单词字符数清零
        total += 1                        #单词字符数加一
    elif total > 80:                      #if以外的情况表示输入为间隔符号或者输入超过80个字符数
        print("输入非法")
    elif i == "#":                         #“#”号表示文本的结束
        L.append(x[h:h+total])                 #将最后一个单词加入列表
        for j in set(L):                   #统计单词的词频
            f = L.count(j)[n]
            if D[L.count(j)][n] == False:      #如果列表为空,则放入一个单词
                D[L.count(j)][n] == j          #[n]L.count(j)代表单词的数量
            else:
                while D[L.count(j)][n] != False:     #如果数量重复
                    n = n + 1                       #将单词放入二维列表内
                D[L.count(j)][n] == j               #赋值
            n = 0                                    #将n清零进行下一次运算
        break
    else:
        if (total != 0):                          #上一个单词的字符数不为零,且此时为间隔符号
            k += 1                                  #间隔符号的数量加一
        else:
            e += 1
            continue                            #如果有多个间隔符号,则跳过或者跳过文本前的间隔符号
    e += 1
for i in D:                                    #统计单词的个数
    for j in i:
        if D[i][j] != False:
            gs = gs + 1
print(gs)                                         #输出单词个数
b = gs // 10
for i in range(0, b+1):                           #输出结果
    for j in i:
        print("%d:%s"%(L[i][j], i))

为什么这个代码输出不了?

  • 写回答

1条回答 默认 最新

  • 家在田塍 2019-12-04 22:33
    关注
    x = input("输入一段英文文本")
    total = 0  #表示一个单词的字符数
    cp = 1       #表示单词出现的次数,这里初始值改为1,因为一旦你输入文本至少为1
    #当然如果是其他符号,初始值为0,所以你最好再加个初始值判断为0的情况。
    # i = 0
    k = 0      #表示空格的数量
    for i in x:
        if (i >= "a" and i <= "z") or (i >= "A" and i <= "Z") or (i >= "0" and i <= "9") or i == "_":
            while (k >= 1):
                k = 0
                total = 0
                cp += 1
            total += 1
            # print(cp)
            # print(total)
        elif total > 80:
            print("输入非法")
        # elif i == '#':  # 这个判断放在循环外面,作为初始值来判断
        #     print(cp)   
        else:
            if (total != 0):
                k += 1
            else:
                continue
    print(cp)
    
    评论

报告相同问题?

悬赏问题

  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100