В тази тема ще научим как да преобразуваме низ в цяло число с и без използване на вграден тип данни. Знаем, че низът е колекция от символи, подредени последователно затворени в кавички, а цяло число е число без никакви десетични точки и не е затворено с какъвто и да е тип кавички.
Но когато възникне въпросът как да конвертираме един тип данни в друг, Python предоставя лесен начин да конвертирате един в друг. В този случай виждаме как можем да преобразуваме низ в цяло число в следния ред:
Използване на вградени типове данни
Да предположим, че когато по някаква причина приемам вход от потребителя, Python го взема и връща като самия низ. С други думи, дори ако някой напише число като вход, Python го връща като низ.
name = input ('What is your name:') print (name) print (type (name)) age = input ('What is your age:') print (age) print (type (age))
Изход:
Как се казваш: Тайра
Тайра
На каква възраст сте: 20
двайсет
Виждате ли, видът на името и възрастта, взети като вход, е „String“.
Сега, да предположим, че ако искаме да добавим 5 към възрастта, ще направим следното:
name = input ('What is your name:') print (name) print (type (name)) age = input ('What is your age:') print (age) print (type (age)) print (age + 5)
Изход:
Как се казваш: Тайра
Тайра
На каква възраст сте: 20
двайсет
Traceback (последно последно обаждане):
Файл „C: /Users/prac.py“, ред 9, в
печат (възраст + 5)
TypeError: трябва да е str, а не int
Не можем да добавим 5 към възрастта, защото възрастта е от тип String и не можем да правим директна математика с низове. Така че трябва да променим възрастта на цяло число, защото сме взели възрастта като вход и Python я връща като String.
Следователно.
name = input ('What is your name:') print (name) print (type (name)) age = input ('What is your age:') print (age) print (type (age)) age = int ( възраст) печат (възраст + 5)
Изход:
Как се казваш: Тайра
Тайра
На каква възраст сте: 20
двайсет
25
Конвенционален начин
Да предположим, че не искаме да използваме вградената функция int (), за да преобразуваме низ в цяло число.Така че трябва да използваме конвенционален начин превръщам.
Ето един прост начин да преминете към конверсия, без да използвате int ().
'' '' 123 '-> 123' -12332 '-> -12332' '' def str_to_int (input_str): output_int = 0, ако input_str [0] == '-': start_idx = 1 is_negative = True else: start_idx = 0 is_negative = Невярно за i в обхват (start_idx, len (input_str)): място = 10 ** (len (input_str) - (i + 1)) цифра = ord (input_str [i]) - ord ('0') output_int + = място * цифра, ако е_отрицателно: return -1 * output_int else: return output_int s = '554' x = str_to_int (s) print (type (x)) s = '123' print (str_to_int (s)) s = '-123' печат (str_to_int (s))
Изход:
123
-123
Първо ще проверим дали номерът, предоставен от потребителя, съдържа някакъв знак минус или не, т.е. дали е отрицателно число или не.Ако съдържа на първа позиция в знак минус, започваме преобразуването си от втората позиция, която съдържа числа.
Всяко число, да речем 123, може да бъде записано във формата -10 ** 2 * 1 + 10 ** 1 * 2 + 10 ** 0 * 3
По същия начин разделяме всеки от входния номер, използвайки думи (аргумент) .
goto команда c ++
ord (‘0’) ще върне 48, ord (‘1’) връща 49 и т.н.
Тук използваме логиката, че ord ('1') - ord ('0) = 1, ord (' 2 ') - ord (' 0 ') = 2 и т.н., което ни дава значителния брой, който трябва да бъде извлечен от даденото входен номер.
Накрая изходът, който получаваме от функцията, е законно цяло число, което преобразувахме от дадения входен низ.
Така че, както можете да видите, можем да преобразуваме всеки низ в цяло число, използвайки функцията int () или по конвенционалния начин.
Надявам се, че сте научили добре понятията и затова го изпробвайте, за да бъде по-точен и с това стигнахме до края на тази статия за Преобразуване на низ в int с помощта на Python.
Имате въпрос към нас? Моля, споменете го в раздела за коментари в този урок за низ към цяло число и ние ще се свържем с вас възможно най-скоро.
За да получите задълбочени познания за Python заедно с различните му приложения, можете да се регистрирате за живо с 24/7 поддръжка и доживотен достъп.