有人可以解释我如何使此代码有效吗?

时间:2018-10-04 15:01:08

标签: python

因此,几天前我们进行了一项实验室活动,我们必须按字母顺序打印单词中的字母数。不能重复打印同一封信。出于某种原因,我通过输入条件x [i] == x [i-1]使它起作用,但是回到家后,我无法确定我是如何想到的以及它如何工作第一名。有人可以向我解释它是如何工作的吗?即使它起作用了,我也想知道“ if”条件背后的逻辑。谢谢,祝你有美好的一天。

word = (sorted(str.upper(raw_input("Enter your word(s): "))))

def counts(x):
    for i in range(len(x)):
        count = 0
        for g in range(len(x)):
            if x[g] == x[i]:    count += 1
            else:   continue
        if x[i] == x[i-1]:
            continue
        else:
            print x[i],"occurs", count,"times."

counts(word)

3 个答案:

答案 0 :(得分:1)

第一行

word = (sorted(str.upper(raw_input("Enter your word(s): "))))  

您的输入按字母顺序排序并更改为大写。
例)香蕉-> AAABNN
像上面的例子一样,相同的字符不断被收集。
接下来,

for i in range(len(x)):

此代码迭代我们的输入。
第一次迭代时,x [0]为A。
然后

for g in range(len(x)):
        if x[g] == x[i]:    count += 1
        else:   continue

此代码计算连续有多少个相同的字符。
第一次迭代时,x [0] = A,AAABNN中有三个As。
算是2。
但是没有

if x[i] == x[i-1]:
        continue

由于x [1]和x [2],它打印A occurs 3 times.
因此,通过使用上面的代码,您可以跳过x [1]和x [2]的迭代。
可以像这样优化您的代码

def counts(x):
    count = 0
    prev_character = x[0]
    while len(x) > 0:
        curr_character = x[0]
        if prev_character == curr_character:
            count += 1
            x.pop(0)
        else:
            print prev_character, "occurs", count, "times."
            prev_character = curr_character
            count = 0
    if count > 0:
        print prev_character," occurs", count, "times."

答案 1 :(得分:0)

if声明

 if x[i] == x[i-1] 
当当前字符与先前字符相同时,

防止打印任何内容。 我认为该程序是针对counting中输入的charactersword的数量。首先收集单词变量并按字母顺序对其进行排序。然后,通过遍历单词的长度,它确实比较了每个字符的实例数。您可能需要像这样调用已定义的函数计数:

word = (sorted(str.upper(raw_input("Enter your word(s): "))))

def counts(x):
    for i in range(len(x)):
        count = 0
        for g in range(len(x)):
            if x[g] == x[i]:    count += 1
            else:   continue
        if x[i] == x[i-1]:
            continue
        else:
            print x[i],"occurs", count,"times."

print counts(word)

查看实际情况,我输入了“ Hello world”: enter image description here

答案 2 :(得分:-2)

对我来说,在if x[i] == x[i-1]:也没有任何意义。只是一个if语句来判断左词是否与其左词相同。

但是我可以帮助您简化它。

def counts(x):
    for alpha in sorted(set(x)):
        print alpha,"occurs", x.count(alpha),"times."