V tomto tématu bychom se dozvěděli, jak převést řetězec na celé číslo sa bez použití vestavěného datového typu. Víme, že řetězec je kolekce znaků uspořádaných postupně uzavřených v uvozovkách a celé číslo je číslo bez desetinných míst a není uzavřeno žádným typem uvozovek.
Ale když přijde otázka, jak převést jeden datový typ na jiný, Python poskytuje snadný způsob převodu do druhého. V tomto případě vidíme, jak můžeme převést řetězec na celé číslo v následujícím pořadí:
Používání vestavěných datových typů
Předpokládejme, že když z nějakého důvodu vezmu vstup od uživatele, Python ho vezme a vrátí jej jako samotný řetězec. Jinými slovy, i když někdo zadá číslo jako vstup, Python jej vrátí jako řetězec.
name = input ('What is your name:') print (name) print (type (name)) age = input ('What is your age:') print (age) print (type (age))
Výstup:
Jak se jmenuješ: Tyra
Tyra
Jaký je váš věk: 20
dvacet
Jak vidíte, typ jména a věk, který se jako vstup použije, je „Řetězec“.
Nyní předpokládejme, že pokud chceme k věku přidat 5, uděláme následující:
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)
Výstup:
Jak se jmenuješ: Tyra
Tyra
Jaký je váš věk: 20
dvacet
Traceback (poslední hovor poslední):
Soubor 'C: /Users/prac.py', řádek 9, v
tisk (věk + 5)
TypeError: musí být str, ne int
K věku nemůžeme přidat 5, protože věk je typu String a nemůžeme dělat přímou matematiku s řetězci. Musíme tedy změnit věk na celé číslo, protože jsme jako vstup vzali věk a Python jej vrací jako řetězec.
Proto.
name = input ('What is your name:') print (name) print (type (name)) age = input ('What is your age:') print (age) print (type (age)) age = int ( věk) tisk (věk + 5)
Výstup:
Jak se jmenuješ: Tyra
Tyra
Jaký je váš věk: 20
dvacet
25
Konvenčním způsobem
Předpokládejme, že nechceme použít integrovanou funkci int () k převodu řetězce na celé číslo.Musíme tedy použít konvenčním způsobem převést.
co tostring znamená v Javě
Zde je jednoduchý způsob, jak přejít na převod bez použití int ().
'' '' 123 '-> 123' -12332 '-> -12332' '' def str_to_int (input_str): output_int = 0 if input_str [0] == '-': start_idx = 1 is_negative = True else: start_idx = 0 is_negative = False for i in range (start_idx, len (input_str)): place = 10 ** (len (input_str) - (i + 1)) digit = ord (input_str [i]) - ord ('0') output_int + = place * digit if is_negative: 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' tisk (str_to_int (s))
Výstup:
123
-123
Nejprve zkontrolujeme, zda číslo poskytnuté uživatelem obsahuje znaménko minus, či nikoli, tj. Zda je to záporné číslo nebo ne.Pokud obsahuje na první pozici znaménko minus, začneme náš převod z druhé pozice, která obsahuje čísla.
Ve formuláři lze napsat libovolné číslo, řekněme 123.10 ** 2 * 1 + 10 ** 1 * 2 + 10 ** 0 * 3
Podobně rozdělíme každé ze vstupních čísel pomocí slovo (argument) .
ord („0“) vrátí 48, ord („1“) vrátí 49 atd.
Zde používáme logiku, která ord ('1') - ord ('0) = 1, ord (' 2 ') - ord (' 0 ') = 2 atd., Což nám dává významné číslo, které má být načteno z daného číslo vstupu.
Nakonec výstup, který získáme z funkce, je legitimní celé číslo, které jsme převedli z daného vstupního řetězce.
Jak tedy vidíte, můžeme libovolný řetězec převést na celé číslo pomocí funkce int () nebo konvenčním způsobem.
Doufám, že jste se koncepty dobře naučili, a proto to vyzkoušíte, aby byly přesnější, a tímto se dostáváme ke konci tohoto článku o převodu řetězce na int pomocí Pythonu.
Máte na nás dotaz? Uveďte to prosím v sekci komentářů v tomto výukovém programu String to Integer a my se vám ozveme co nejdříve.
Chcete-li získat podrobné znalosti o Pythonu a jeho různých aplikacích, můžete se zaregistrovat naživo s nepřetržitou podporou a doživotním přístupem.