Нужно, чтобы я писал цифру прописью "два", а мне выводилось число "2"
У меня проблема с циклом: не могу написать алгоритм, чтобы он проверял это слово с индексом первого списка, и по индексу первого списка, выдавал из второго:
from tkinter import *
from tkinter import messagebox as mb
def __init__():
b = int
a = entry1.get()
for a in slova:
здесь не могу придумать
#else:
#b = mb.askyesno(
# title="Error",
# message="Ошибка")
root = Tk()
root.geometry('300x300')
label1 = Label(text='Введите ваше число:', width=20)
entry1 = Entry(width=20)
button1 = Button(text='Нажми сюда', command=__init__, bg="#ffccff")
label1.grid(row=0, sticky=E)
entry1.grid(row=0, column = 2)
button1.grid(row=1, column=2, sticky=E)
slova = ['ноль','один','два','три','четыре','пять',
'шесть','семь','восемь','девять','десять']
numbers = ['0','1','2','3','4','5',
'6','7','8','9','10']
Ответы (3 шт):
Автор решения: CrazyElf
→ Ссылка
print(numbers[slova.index('два')])
Можно взять индекс искомого слова в списке слов и потом по этому индексу взять значение в списке цифр. Цикл не нужен. Вернее, можно и с циклом сделать, но смысла нет.
Со словарём хорошая мысль от Jack_oS, словарь этот можно легко сделать из имеющихся у вас списков:
slova_num = {s: n for s, n in zip(slova, numbers)}
print(slova_num['два'])
Автор решения: Jack_oS
→ Ссылка
Или обойтись без индексов, чтоб не переписывать списки, если в них что-то добавиться, тем самым увеличивая вероятность допустить ошибку, а использовать словари:
>>> digits = {'один': 1, 'два': 2, 'три': 3, 'стопятьсот': 100500}
>>> digits.get('один')
1
>>> digits.get('стопятьсот')
100500
>>> print(digits.get('сорок два'))
None
>>> print(digits.get('тринадцать', 'незнакомое число'))
незнакомое число
Автор решения: eri
→ Ссылка
>>> slova = ['ноль','один','два','три','четыре','пять',
... 'шесть','семь','восемь','девять','десять']
>>> numbers = ['0','1','2','3','4','5',
... '6','7','8','9','10']
>>> slovar = dict(zip(numbers,slova))
>>> slovar.update(zip(slova,numbers))
>>> slovar.get('0')
'ноль'
>>> slovar.get('ноль')
'0'
>>>