Как преобразовать строку в целое число в JES

Я пытаюсь выполнить задание в JES студенческой программе jython. Мне нужно преобразовать номер нашего студента, взятый в качестве строковой входной переменной, для прохождения через нашу функцию, т. е. назначение определения (stringID), и преобразовать его в целые числа. Точные инструкции:

Шаг 1 Определите массив с именем id, в котором будет храниться ваше 7-значное число в виде целых чисел (числа, которые вы задали в массиве, не имеют значения, они будут заменены вашим номером учащегося на следующем шаге). Шаг 2 Ваш номер студента был передан вашей функции в виде строки. Вы должны разделить цифры и присвоить их идентификатору вашего массива. Это можно сделать вручную построчно или с помощью цикла. Вам нужно будет ввести каждый символ из stringID в целое число, прежде чем сохранять его в id.

Я пробовал так много разных способов, используя функции int и float, но я действительно застрял. Заранее спасибо!


person user3598152    schedule 03.05.2014    source источник


Ответы (2)


Мне пришлось написать несколько сценариев jython для сервера веб-сферы. Должно быть, это действительно старая версия Python, в ней не было оператора ** или функции len(). Мне пришлось использовать исключение, чтобы найти конец строки.

В любом случае, я надеюсь, что это сэкономит кому-то еще время

def pow(x, y):
    total = 1;
    if (y > 0):
        rng = y
    else:
        rng = -1 * y

    print ("range", rng)
    for itt in range (rng):
        total *= x

    if (y < 0):
        total = 1.0 / float(total)
    return total

#This will return an int if the percision restricts it from parsing decimal places
def parseNum(string, percision):
    decIndex = string.index(".")
    total = 0
    print("decIndex: ", decIndex)
    index = 0
    string = string[0:decIndex] + string[decIndex + 1:]
    try:
        while string[index]:
            if (ord(string[index]) >= ord("0") and ord(string[index]) <= ord("9")):
                times = pow(10, decIndex - index - 1)
                val = ord(string[index]) - ord("0")
                print(times, " X ", val)
                if (times < percision):
                    break
                total += times * val
            index += 1
    except:
        print "broke out"
    return total

Внимание! Убедитесь, что строка является числом. Функция не выйдет из строя, но вы получите странный и почти наверняка бесполезный вывод.

person jozsef morrissey    schedule 21.10.2018

person    schedule
comment
Привет, спасибо за ответ. Я пробовал это, но мой код все равно не работал. Нам пришлось определить массив для нашего идентификатора, а затем изменить переменную stringID с символов на целые числа и присвоить их массиву. Я тоже пробовал так: def присваивание1(stringID): id = (0,0,0,0,0,0,0) stringID = ((int(stringID[0])), (int(stringID[ 1])), (int(stringID[2])), (int(stringID[3])), (int(stringID[4])), (int(stringID[5])), (int(stringID[ 6]))) id = stringID - person user3598152; 03.05.2014