Как исправить ошибку: неверный литерал для int () с базой 10: «Удача»? - PullRequest
1 голос
/ 05 февраля 2020

Код ниже - это то, что используется в моей курсовой работе. В настоящий момент строка «if int (what_skill) <0 или int (what_skill)> 9:» выдает ошибку выше. Я попытался изменить его на str (), однако это вызывает другую ошибку.

def player ():

vigor = 1

endurance = 1

strength = 1

dexterity = 1

intelligence = 1

luck = 1
points = 25
while points !=0:
    what_skill = input("What skill would you like to add to? Vigor, Endurance, Strength, Dexterity, Intelligance, Luck? ")
    print(what_skill)
    add_points = int(input("You have " + str(points) + " points left. How many points from 1-9 would you like to add to " + str(what_skill) + "? "))


    if int(add_points) > 9:
        print("Too many points")
        print(add_points)
    else:
        if int(what_skill) < 0 or int(what_skill) > 9:
            print("invaid choice")
        else:
            update_skill = int(what_skill) + int(add_points)
            points = points - add_points

Ответы [ 2 ]

0 голосов
/ 05 февраля 2020

Вы получаете эту ошибку, потому что what_skill имеет строковый тип, и путем приведения типа вы не можете преобразовать слово в целое число. int('abc') приведет к той же ошибке, с которой вы столкнулись.

Если вы хотите обратиться к переменным, которые вы инициализировали в начале, используйте вместо этого словарь, в котором ключ - это навык, а значения - соответствующие точки. Теперь вы можете получить доступ к точкам как myDict[what_skill]. Использование словаря до сих пор является наиболее эффективным решением.

0 голосов
/ 05 февраля 2020

Причина, по которой вы видите ошибку, заключается в том, что строки

int(what_skill)

В вашем примере это равно

int("luck")

Что не имеет никакого смысла --- I Я думаю, что вы пытаетесь сделать int(luck) - чтобы ссылаться на число внутри переменной

Я бы изменил ваши навыки на словарь и использовал бы что-то вроде следующего:

stats = {
  "Luck": 1,
  "Vigor": 1,
  "Endurance": 1,
  "Strength": 1,
  "Dexterity": 1,
  "Intelligence" : 1
}

points = 25
while points >= 1:
    what_skill = input("What skill would you like to add to? Vigor, Endurance, Strength, Dexterity, Intelligance, Luck? ")
    add_points = int(input("You have " + str(points) + " points left. How many points from 1-9 would you like to add to " + str(what_skill) + "? "))

    if int(add_points) > 9:
        print("Too many points")
    else:
        if stats[what_skill] < 0 or stats[what_skill] > 9:
            print("invalid choice")
        else:
            update_skill = stats[what_skill] + int(add_points)
            points = points - add_points
...