Python - 基于字符串中字符位置的条件

时间:2015-10-15 11:52:51

标签: python python-3.x dictionary

我有一个嵌套字典,我用来提取值。我使用字母作为键,其值取决于字符串中的字母位置。

我正在尝试对其进行编码,以便在字符串中找到字母时,它会为字符串中的位置提取准确的值。我有3个位置 - “starter”和“finisher”分别是第一个和最后4个字符。其他任何事情都是“中期”。

我已经尝试将字符串中的字符位置视为一个整数,我可以很容易地将其输入到条件序列中。

def Calc(letterstring, data_table):
    Places= len(string)
    Score = 0.0

    for i in range(Places): 
        letter= string[i] 
        if [i] >= int(3) and [i] <= ((Places)-4):
            position_in_string = "Starter"
        elseif [i] >= ((Places)-4):
            position_in_string = "Finisher" 
        else:
            position_in_string = "Mid" 

        position = (position_in_string) 

        Score += data_table[letter][position] 

    return Score

string = input("Insert your line here: ") # Something like ABCDEFGHIJKLMNOP
total_score= (Calc((string), (data_table)))
print (total_score)

我希望输出一个整数。

但如果我尝试这样做,我最终得到:

TypeError: unorderable types: list() >= int()

欢迎任何建议或意见!

1 个答案:

答案 0 :(得分:0)

我建议的一些更改:

  1. Python有一个枚举内置函数,它将接受一个序列(包括一个字符串)并返回序列中每个元素的索引和值
  2. 在函数中一致地使用字符串,一般来说,使用“string”作为变量名称是不受欢迎的
  3. 我假设data_table是字典的字典,这样外部字典的键='AZ'(注意.upper()以确保'a'转换为'A'等。你可能应该如果用户输入ABC1,还会添加一些错误检查,内部字典中包含您设置的3个字符串(Starter,Finisher和Mid)
  4. no idea why this is getting dorked up formatting

        def Calc(letterstring, data_table):
        Score = 0.0
        ls = len(letterstring)
        for i,letter in enumerate(letterstring):
            if i < 4:
                position_in_string = "Starter"
            elif i >= (ls-4):
                position_in_string = "Finisher" 
            else:
                position_in_string = "Mid" 
    
            Score += data_table[letter][position_in_string] 
    
        return Score
    
    instring = input("Insert your line here: ") # Something like ABCDEFGHIJKLMNOP
    total_score= Calc(instring.upper(), data_table)
    print (total_score)