gpt4 book ai didi

python - 用英文打印数字数字的递归函数

转载 作者:太空宇宙 更新时间:2023-11-04 09:16:48 25 4
gpt4 key购买 nike

我正在开发一个程序,该程序使用递归函数以英文打印数字的数字(即 456 将显示“四五六”。)我注意到最近有人问过这个问题,但我无法得到任何答案从中得到帮助。该程序还要求用户输入多个数字,每个数字都应显示相应的英文数字。我尝试在列表中这样做,但不确定这是否正确。

现在我很困惑。我已经为此工作了几个小时,并没有太多可以展示的东西。我不是在寻找任何人为我编写这个程序,只是提供一些帮助。理论上我知道需要做什么,但我很难将其转化为代码。

def main():
List = createList()
print(createList())

def listValue(prompt):
try:
number = eval(input(prompt))
if type(number) == type(0) or type(number) == type(0.0):
return number
else:
print("\nYou did not enter a number. Try again.")
except NameError:
print("\nYou did not enter a number. Try again.")
except SyntaxError:
print("\nYou did not enter a number. Try again.")
except:
print("\nAn exception occured. Try again.")
if number != "":
return number
else:
return None

def createList():
#Create a blank list
newList = []
item = listValue("Enter a list of numbers (<Enter> to quit): ")
while item != None:
#Add user input to the end of the created list
newList.append(item)
item = listValue("Enter a list of numbers (<Enter> to quit): ")
return newList


def displayEnglishDigits(number):
numEnglish = {0: "Zero", 1: "One", 2: "Two", 3: "Three", 4: "Four",
5: "Five", 6: "Six", 7: "Seven", 8: "Eight", 9: "Nine"}
digit = Number % 10


main()

这是我的代码的更新版本……有什么想法吗?

    def getNumbers():
n = []
xStr = input("Enter first digit of number (negative to quit) >> ")
integer = int(xStr)
while integer >= 0:
while xStr != "":
x = eval(xStr)
n.append(x)
xStr = input("Enter next digit of number (negative to quit) >> ")
return n

def displayEnglishDigits(number):
numEnglish = {0: "Zero", 1: "One", 2: "Two", 3: "Three", 4: "Four",
5: "Five", 6: "Six", 7: "Seven", 8: "Eight", 9: "Nine"}
number = getNumbers()
if len(number) == 0:
return None
if len(number) == 1:
return number[0]
else:
value = displayEnglishDigits(number[1:])
return value

def display(values):
print(displayEnglishDigits(number))

def main():
numb = getNumbers()
nums = displayEnglishDigits(numb)
display(nums)

main()

最佳答案

让我们关注递归函数,因为这是标题。

numEnglish 词典已经有了一个良好的开端。

要完成它,为什么不尝试:将数字转换为字符串(字符列表),并编写一个处理该列表的递归函数。

numEnglish = {0: "Zero", 1: "One", 2: "Two", 3: "Three", 4: "Four",
5: "Five", 6: "Six", 7: "Seven", 8: "Eight", 9: "Nine"}

def recursiveDisplay(stringOfNumber):
if len(stringOfNumber) == 0: # base case: empty string
return
first = int(stringOfNumber[0]) # otherwise, grab the first element
english = numEnglish[first] # look it up in the dictionary
print english # print it
recursiveDisplay(stringOfNumber[1:]) # and recurse on the rest of the list

递归函数有两种情况:

  • 1) 字符串为空:已完成处理。这是基本情况
  • 2) 字符串不为空:处理第一个元素,然后对第一个元素以外的所有元素发出递归调用。这是归纳/递归情况。

请注意,字典 numEnglish 现在定义在递归函数的外部


当你调用 recursiveDisplay 时,确保传递给它一个字符串!

recursiveDisplay(str(myNumber))

免责声明:使用递归进行列表处理不是标准的 python!

关于python - 用英文打印数字数字的递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8421582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com