为什么要数一数?

时间:2018-12-23 23:14:04

标签: python

我目前正在使用Python进行一些考试,并且有一个问题。
例如,我们有1000行包含某些单词。在每一行中,有2个单词,由空格键(ASCII代码32)分隔。而且我必须用Python编写代码来检查第一个单词是否存在于第二个单词(在同一行中),例如,adc存在于addadc中,但不存在于addadfc中,我需要计算所有好的行。结果为235,但是它太高了,因为正确答案是234。我不知道为什么会这样。

代码:

liczba_wierszy = 0 #amount of lines

for i in range(1000):
    linia = input() # line
    index_spacji = 0 # space index
    index_konca = 0 #index of the word
    pierwszy_napis = "" # first word
    drugi_napis = ""  # second word
    for j in linia:
        if ord(j)!= 32:
            index_spacji+=1
        else:
            break;
    pierwszy_napis =(linia[0:index_spacji-1])
    drugi_napis = (linia[index_spacji+1:len(linia)])
    if pierwszy_napis in drugi_napis:
        liczba_wierszy+=1

print(liczba_wierszy)

它是用波兰语写的,所以我要翻译一下。

2 个答案:

答案 0 :(得分:1)

我能给你一个简单的选择吗?

count = 0
for i in range(1000):
    line = input().strip()
    word1,word2 = line.split(' ')
    if word1 in word2:
        count += 1
print(count)

我还看到您已经将word1word2的字符串初始化为"",并在之后将值重新分配给它们。您可能要注意,Python字符串是不可变的,以后再为其重新分配将始终创建一个新对象。因此,如果要使用代码,请跳过初始化部分。

答案 1 :(得分:0)

错误似乎在这一行:

pierwszy_napis =(linia[0:index_spacji-1])

它在pierwszy_napis中的字符数少于应有的字符数。因为MyString [a:b]为您提供了从索引a到索引b-1的子字符串。

尝试

pierwszy_napis =(linia[0:index_spacji])

代替