Python: преобразование чисел в слова

Вопрос: Привет всем, я пытаюсь создать код, который преобразует число в слово в данном словаре. Но, похоже, ничего не печатает. нет ошибок или чего-либо еще. Я пробовал много вещей, чтобы найти проблему, все равно ничего. Когда я вхожу в 6 программа ничего не отталкивает. Он должен выводить [six]. Я думал, что это проблема с интервалом,

Вопрос:

Привет всем, я пытаюсь создать код, который преобразует число в слово в данном словаре. Но, похоже, ничего не печатает. нет ошибок или чего-либо еще. Я пробовал много вещей, чтобы найти проблему, все равно ничего.

Когда я вхожу в 6 программа ничего не отталкивает.

Он должен выводить [six].

Я думал, что это проблема с интервалом, но я не думаю, что это так.

Вот что у меня есть

import string value = input(«Enter a number 1 — 9 separted by commas: «) def user_input(value): numbers = {} user_list = value.split(‘,’) numbers = [(x.strip()) for x in user_list] return numbers print(numbers) user_input(value) numbers = user_input() unit_number = {0: ‘zero’, 1: ‘one’, 2: ‘two’, 3: ‘three’, 4: ‘four’, 5: ‘five’, 6: ‘six’, 7: ‘seven’, 8: ‘eight’, 9: ‘nine’} def convert_n_to_w(numbers): i = len(str(numbers)) if i == 0: return if i == 1: return unit_number[numbers] print(unit_number[numbers])

convert_n_to_w (номера)

Может кто-нибудь, пожалуйста, покажите мне, что я сделал неправильно?

Обновить!!!!!!!

Я добавил convert_n_to_w(numbers) и сказал мне

line 38, in <module> convert_n_to_w(numbers)

NameError: name ‘numbers’ is not defined

Когда я подумал, что я это определил.

Лучший ответ:

В вашем коде есть несколько проблем. Я хотел бы изменить ваш код. Код ниже может работать хорошо, но не pythonic.

value = input(«Enter a number 1 — 9 separted by commas: «) def user_input(value): if isinstance(value, tuple): return list(value) else: user_list = value.split(‘,’) numbers = [(x.strip()) for x in user_list] return numbers unit_number = {0: ‘zero’, 1: ‘one’, 2: ‘two’, 3: ‘three’, 4: ‘four’, 5: ‘five’, 6: ‘six’, 7: ‘seven’, 8: ‘eight’, 9: ‘nine’} def convert_n_to_w(numbers): for n in numbers: print(unit_number[int(n)]) numbers = user_input(value) convert_n_to_w(numbers) Ответ №1

Оператор print, print(unit_number[numbers]) находится в функции convert_n_to_w. Вы не вызываете эту функцию в любой момент, поэтому оператор печати не запускается.

Либо вызовите функцию, либо выведите оператор печати из функции.

Ответ №2

Вы return из user_input перед печатью чисел. Операция print в этой функции никогда не достигается.

Обновить:

И как @Joni указывает, что вы вообще не вызываете функцию convert_n_to_w.

Таким образом, оператор print не выполняется.

Ответ №3#Dictionaries for reference ones = {«1″:»One»,»2″:»Two»,»3″:»Three»,»4″:»Four»,»5″:»Five»,»6″:»Six», «7»:»Seven»,»8″:»Eight»,»9″:»Nine»} afterones = {«10″:»Ten»,»11″:»Eleven»,»12″:»Twelve»,»13″:»Thirteen»,»14″:»Fourteen»,»15″:»Fifteen»,»16″:»Sixteen», «17»:»Seventeen»,»18″:»Eighteen»,»19″:»Nineteen»} tens = {«2″:»Twenty»,»3″:»Thirty»,»4″:»Fourty»,»5″:»Fifty»,»6″:»Sixty», «7»:»Seventy»,»8″:»Eighty»,»9″:»Ninety»} grand={0:» Billion, «,1:» Million, «,2:» Thousand, «,3:»»} #Function converting number to words of 3 digit def num_to_wrds(val): if val != «000»: ans = «» if val[0] in ones: x = val ans = ans + ones[val[0]] + » Hundered and » if val[1:] in afterones: ans = ans + afterones[val[1:]] + » » elif val[1] in tens: ans = ans + tens[val[1]] + » » if val[2] in ones: ans = ans + ones[val[2]] return ans num = input(«Enter the number: «) # Paddiing with zeros pad = 12-len(str(num)) numinwrds = «0»*pad + str(num) final =»» numlis = [numinwrds[0:3],numinwrds[3:6],numinwrds[6:9],numinwrds[9:12]] for key,grp in enumerate(numlis): if grp!=»000″: final = final + num_to_wrds(grp) + grand[key] print final

Это печатает до значений в миллиардах, вы можете добавить больше в великом словаре, он отлично работает. Примечание: не забудьте поставить наивысшее значение в порядке убывания

Ответ №4def n2w(num): unit_number = {0: ‘zero’, 1: ‘one’, 2: ‘two’, 3: ‘three’, 4: ‘four’, 5: ‘five’, 6: ‘six’, 7: ‘seven’, 8: ‘eight’, 9: ‘nine’} st=»» while num>0 : a=num%10 for i,j in unit_number.items(): if i==a: st=unit_number[i]+» «+st num=num//10 st=st.rstrip() return (st)

Оцените статью
Добавить комментарий