Python 列表索引超出范围

Python 列表索引超出范围,python,list,indexing,window,Python,List,Indexing,Window,我想做一个刽子手游戏,你可以在里面输入一个特定的单词 我在尝试制作一个计算单词中相同字母数的代码时遇到了一个问题。例如,'taste'将有两个ts 该程序将计算用于数学求和的字母,因此该字母可以输入两次,但不能超过两次 我在下面的代码中遇到了列表索引超出范围的问题 def nolettercheck(): global list45 #list of variable within code (so they can be accessed) global list1

我想做一个刽子手游戏,你可以在里面输入一个特定的单词

我在尝试制作一个计算单词中相同字母数的代码时遇到了一个问题。例如,
'taste'
将有两个
t
s

该程序将计算用于数学求和的字母,因此该字母可以输入两次,但不能超过两次

我在下面的代码中遇到了列表索引超出范围的问题

def nolettercheck():

    global list45 #list of variable within code (so they can be accessed)
    global list1
    global countonce
    global count0
    global count1
    global count2
    global count3
    global count4
    global count5
    global count6
    global count7
    global count8
    global count9
    if len(list1) == 1: #makes sure list is in range
        if list1.count(list1[0]) > 1: """count how many letter in word and if above 1 it continues
                                         (although it doesn't work perfectly yet BTW do not spoil 
                                          this answer for me unless
                                         you have to)."""
            count0 = list1.count(list1[0])#create variable for number of same letters
            list45.insert(0,list1[0])#insert the letter into another list for comparison
    if len(list1) == 2 or len(list1) < 2: """repeats with next letter until
                                             similar statement =false"""
        if list1.count(list1[1]) > 1:
            count1 = list1.count(list1[1])
            list45.insert(1,list1[1])
    if len(list1) == 3 or len(list1) < 3:
        if list1.count(list1[2]) > 1:
            count2 = list1.count(list1[2])
            list45.insert(2,list1[2])
    if len(list1) == 4 or len(list1) < 4:
        if list1.count(list1[3]) > 1:
            count3 = list1.count(list1[3])
            list45.insert(3,list1[3])
    if len(list1) == 5 or len(list1) < 5:
        if list1.count(list1[4]) > 1:
            count4 = list1.count(list1[4])
            list45.insert(4,list1[4])
    if len(list1) == 6 or len(list1) < 6:
        if list1.count(list1[5]) > 1:
            count5 = list1.count(list1[5])
            list45.insert(5,list1[5])
    if len(list1) == 7 or len(list1) < 7:
        if list1.count(list1[6]) > 1:
            count6 = list1.count(list1[6])
            list45.insert(6,list1[6])
def nolettercheck():
全局列表45#代码中的变量列表(因此可以访问)
全球清单1
全球倒计时
全球计数0
全球计数1
全球计数2
全球计数3
全球国家4
全球统计5
全球统计6
全球国家7
全球国家8
全球统计9
如果len(list1)=1:#确保列表在范围内
如果list1.count(list1[0])>1:“计算单词中有多少个字母,如果超过1则继续
(虽然它还不能很好地工作,顺便说一句,不要损坏
除非
你必须这样做
count0=list1.count(list1[0])#为相同字母数创建变量
list45.插入(0,list1[0])#将字母插入另一个列表中进行比较
如果len(list1)==2或len(list1)<2,则“重复”下一个字母,直到
类似语句=假“”
如果list1.count(list1[1])>1:
count1=list1.count(list1[1])
list45.插入(1,list1[1])
如果len(列表1)=3或len(列表1)<3:
如果list1.count(list1[2])>1:
count2=list1.count(list1[2])
列表45.插入(2,列表1[2])
如果len(list1)==4或len(list1)<4:
如果list1.count(list1[3])>1:
count3=list1.count(list1[3])
列表45.插入(3,列表1[3])
如果len(列表1)=5或len(列表1)<5:
如果list1.count(list1[4])>1:
count4=list1.count(list1[4])
列表45.插入(4,列表1[4])
如果len(列表1)=6或len(列表1)<6:
如果list1.count(list1[5])>1:
count5=list1.count(list1[5])
列表45.插入(5,列表1[5])
如果len(list1)==7或len(list1)<7:
如果list1.count(list1[6])>1:
count6=list1.count(list1[6])
列表45.插入(6,列表1[6])
代码将继续执行,因此最多可以执行十个字母的单词。假设这段代码将no-of-letter存储到一个变量中(该变量稍后将转换为一个列表,尽管我可能会进一步修改)。它还应该存储信件(如果有多个信件)

该错误特别关注与
if list1.count(list[6])>1:
类似的行


我以前确实遇到过这个错误,如果len(list1)==7或len(list1)这里有一种从单词中获取字母计数字典的方法。有更多的“pythonic”方法可以做到这一点,但如果你刚刚开始,这可能会帮助你

a = 'somestring'
letter_count_dict = {}
for letter in set(a):
    letter_count_dict[letter] = a.count(letter)
这个词中不同的字母是

set(a) #set takes the distinct values.  If you want a list of distinct values, an easy way to do it is list(set(a)) but since sets are iterable you don't usually need to do this.
给定一个字母l,它出现的次数是

letter_count_dict[l]  #if l='s', then this would output 2

一旦有了计数,您就可以选择如何处理它们…循环并查找出现次数大于一次的计数,等等。。祝你好运。

哎哟,这太痛苦了。你应该考虑列出10个计数而不是10个单独的变量,一个循环在<代码>范围(1, 8)< /代码>,而不是复制和粘贴同一个代码7次,最有可能使用一个更合适的数据结构,而不是一个必须继续调用的代码:<代码>计数< /C> >和<代码>插入< /代码>……==7或len(list1)<7可以写成
len(list1)您可以再详细说明一下您试图从中实现什么吗?据我所知,你只是想要一个单词的字母计数(但限制为2?)。我相信有一种更简单的方法可以做到这一点,因为你这里的东西看起来非常低效。无论如何,你能发布一个完整但精简的程序(和输入)来演示问题,并发布异常和回溯,而不是试图描述它吗?请参阅帮助中的一些指导。我确实试过了,谢谢!我希望避免为每个字母编一本完整的字典,但它可能比我现在拥有的效率稍高一些。