为什么我不能在列表中添加一些内容?

2024-07-02 11:10:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前有一个错误,我的代码,我需要帮助修复它。 基本上,当我尝试向列表中添加某些内容时,它只适用于某些参数

这是一个snipet(不是完整的代码):

elif sentencearray[x] == " ":
   lengthlist.append(len(longestword))
   wordlist.append(str(*longestword))
   longestword.clear()

当我尝试运行我的代码时,wordlist.append(str(*longestword))起作用,但lengthlist.append(len(longestword))不起作用。所有变量都已定义。只是当我尝试打印lengthlist时,结果是空的,尽管我只是在其中添加了一些内容。我敢肯定这些行的标签是一样的。有人能解释一下为什么会这样吗

如果这是一个愚蠢的错误,我对python相当陌生,所以我可能会在这里和那里犯一些错误

以下是完整的代码:

# Online Python - IDE, Editor, Compiler, Interpreter

sentence = input("enter sentence here: ")
sentencearray = list(sentence)
sentencelength = len(sentencearray)
x = 0
y = 0
counter = 0
numvowels = 0
numletters = 0
numuppercase = 0
vowels = ['a','e','i','o','u','A','E','I','O','U']
uppercaseletters = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
letters = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z', 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
valuelist = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
knownletters = []
longestword = []
wordlist = []
lengthlist = []
knownletters.append(sentencearray[x])
for x in range(0,len(sentencearray)):
    for y in range(0,10):
        if sentencearray[x] == vowels[y]:  
            numvowels += 1
for x in range(0,len(sentencearray)):
    for y in range(0,26):
        if sentencearray[x] == uppercaseletters[y]:  
            numuppercase += 1
for x in range(0,len(sentencearray)):
    for y in range(0,52):
        if sentencearray[x]==letters[y]:
            longestword.append(sentencearray[x])
            for z in range(0,len(knownletters)):
                if sentencearray[x] != knownletters[z]:
                    counter += 1
            if counter == len(knownletters):
                    numletters += 1
                    knownletters.append(sentencearray[x])
            counter = 0
        elif sentencearray[x] == " ":
            lengthlist.append(len(longestword))
            wordlist.append(str(*longestword))
            longestword.clear()
for a in range(0,len(sentencearray)):
    for b in range(0,51):
        if sentencearray[a] == letters[b]:
            x += 1
            valuelist[b] = valuelist[b] + 1
print("# of vowels:" + str(numvowels))
print("# of uppercase letters: "+ str(numuppercase))
print("# of unique letters: " + str(numletters+1))
print("# of times the most frequent letter appears: "+ str(max(valuelist)))
print(longestword)
print(len(longestword))
print(lengthlist)
print(wordlist(max(lengthlist)))

print(knownletters)
print(x)

您也可以通过以下网址查看: https://www.online-python.com/5TYKzmJO9g


Tags: 代码inforlenifrangeprintwordlist
1条回答
网友
1楼 · 发布于 2024-07-02 11:10:47

我知道这不是你想要的。。。但是有太多的Python特性让你错过了,我忍不住要拿出一个“更具Python风格”的例子

它不是完全完整的(我没有你的规范),特别是它将数字和特殊字符视为“字母”,有很多方法可以排除它们

vowels = ['A','E','I','O','U']
    
raw_sentence = input("Enter Sentence Here")
    
char_usage = {}
uppercase_count = 0
vowel_count =0

for char in raw_sentence:

    #Take an uppercase copy of our character for later
    upper_char = char.upper()
    
    #instead of `valuelist`, we maintain a dictionary of character:occurance 
    if upper_char in char_usage:
        char_usage[upper_char]+=1
    else:
        char_usage[upper_char]=1

    #Instead of checking against a list, if a character == character.upper() it's upper case
    if upper_char==char:
        uppercase_count +=1

    #use 'in' to check if a character is a vowel
    if char.upper() in vowels:
        vowel_count +=1

print("Number of Vowels",vowel_count)
print("Number of Uppercase Letters",uppercase_count)

#the largest value in our char_usag dictionary answers this question:
print("# times most frequently used letter appears",max(char_usage.values())) 

#and the length of the dictionary answers the next:
print("Unique Letters", len(char_usage))

#use 'split' to split a string into words by white-space
sentence = raw_sentence.split() #convert string into a list of words

#Print the longest word:
print("Longest Word:", max(sentence, key=len))

相关问题 更多 >