因此,几天前我们进行了一项实验室活动,我们必须按字母顺序打印单词中的字母数。不能重复打印同一封信。出于某种原因,我通过输入条件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)
答案 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
中输入的characters
中word
的数量。首先收集单词变量并按字母顺序对其进行排序。然后,通过遍历单词的长度,它确实比较了每个字符的实例数。您可能需要像这样调用已定义的函数计数:
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)
答案 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."