Python 如何在一条生产线中有来自两个不同功能的两个输出?
所以程序应该取一个数字,然后用文本打印这个数字Python 如何在一条生产线中有来自两个不同功能的两个输出?,python,Python,所以程序应该取一个数字,然后用文本打印这个数字 print("Enter your number") Number = int(input()) def number_to_text_ones(ones): if ones == 1: print("one") elif ones == 2: print("two") elif ones == 3: print("three") elif ones == 4:
print("Enter your number")
Number = int(input())
def number_to_text_ones(ones):
if ones == 1:
print("one")
elif ones == 2:
print("two")
elif ones == 3:
print("three")
elif ones == 4:
print("four")
elif ones == 5:
print("five")
elif ones == 6:
print("six")
elif ones == 7:
print("seven")
elif ones == 8:
print("eight")
elif ones == 9:
print("nine")
def number_to_text_tens(tens):
if tens == 2:
print("twenty ")
elif tens == 3:
print("thirty ")
elif tens == 4:
print("fourry ")
elif tens == 5:
print("fifty ")
elif tens == 6:
print("sixty ")
elif tens == 7:
print("seventy ")
elif tens == 8:
print("eighty ")
elif tens == 9:
print("ninety ")
def number_to_text_hundreds(hundreds):
if hundreds == 1:
print("one hundred")
elif hundreds == 2:
print("two hundreds")
elif hundreds == 3:
print("three hundreds")
elif hundreds == 4:
print("four hundreds")
elif hundreds == 5:
print("five hundreds")
elif hundreds == 6:
print("six hundreds")
elif hundreds == 7:
print("seven hundreds")
elif hundreds == 8:
print("eight hundreds")
elif hundreds == 9:
print("nine hundreds")
if Number == 0:
print("zero")
elif Number == 10:
print("ten")
elif Number == 11:
print("eleven")
elif Number == 12:
print("twelve")
elif Number == 13:
print("thirteen")
elif Number == 14:
print("fourteen")
elif Number == 15:
print("fifteen")
elif Number == 16:
print("sixteen")
elif Number == 17:
print("seventeen")
elif Number == 18:
print("eighteen")
elif Number == 19:
print("nineteen")
if Number < 10:
Result = Number % 10
number_to_text_ones(Result)
elif (Number >= 20 and Number < 100):
First = Number // 10
Second = (Number - (First * 10)) % 10
Result = First * 10 + Second
number_to_text_tens(First)
number_to_text_ones(Second)
elif (Number >= 100 and Number < 1000):
First = Number // 100
Second = (Number - (First * 100)) // 10
Third = (Number - (First * 100) - (Second * 10)) % 10
Result = First * 100 + Second * 10 + Third
number_to_text_hundreds(First)
number_to_text_tens(Second)
number_to_text_ones(Third)
我有几个问题:
我怀疑有一个用于此的库,但我会重构以使用以下模式
ones_text = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
def number_to_text_ones(number):
return ones_text[number - 1]
以下是答案:
print
函数有一个可选参数end
,该参数指定将在正在打印的字符串末尾写入的内容。默认值为新行('\n'
)。您想使用
print('something', end=' ')
比这更好的方法是首先构建一个名为整数的字符串,并且在末尾只使用print一次name = {1: "one hundred",
2: "two hundreds",
3: "three hundreds"}[hundreds]
您应该使用字典,因为它将减少代码行数(如果else条件不再存在,则只需返回语句就足够了),并将使您的代码看起来更好,执行时间也将减少,因为使用if else条件程序将检查指定的每个条件,所以字典会对你有很大帮助 对于在一行中打印输出,这是一个更好的方法
print(number_to_text_hundreds(First) + number_to_text_tens(Second) + number_to_text_ones(Third))
number_to_text_hundreds、number_to_text_tens和number_to_text_ones返回一个与传递给函数的值相对应的值。我建议您使用以下字符串列表:
print("Enter your number")
Number = int(input())
units = ['', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
teens = ["ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"]
tens = ['', '', "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"]
h = Number // 100
t = (Number % 100) // 10
u = (Number % 10)
result = []
if h == 0:
pass
elif h == 1:
result.append('one hundred')
else:
result.append(units[h] + ' hundreds')
if (t == 0):
if (u != 0):
result.append(units[u])
elif (h == 0):
result = ['zero']
elif (t == 1):
result.append(teens[u])
else:
result.append(tens[t])
if (u != 0):
result.append(units[u])
result = ' '.join(result)
print(result)
# input = 895 : result = 'eight hundreds ninety five'
# input = 507 : result = 'five hundreds seven'
# input = 120 : result = 'one hundred twenty'
# input = 071 : result = 'seventy one'
# input = 16 : result = 'sixteen'
# input = 0 : result = 'zero'
您应该使用字典来代替python中的开关用例,如下所述。如果你正在使用python3,你应该使用print with end参数来打印文本,而不在末尾加换行符。虽然这个重构很合理,但它实际上与所问的问题无关,也无法解决OP提出的问题。@Zinki我使用了^this和mabac的答案,现在效果很好
print("Enter your number")
Number = int(input())
units = ['', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
teens = ["ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"]
tens = ['', '', "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"]
h = Number // 100
t = (Number % 100) // 10
u = (Number % 10)
result = []
if h == 0:
pass
elif h == 1:
result.append('one hundred')
else:
result.append(units[h] + ' hundreds')
if (t == 0):
if (u != 0):
result.append(units[u])
elif (h == 0):
result = ['zero']
elif (t == 1):
result.append(teens[u])
else:
result.append(tens[t])
if (u != 0):
result.append(units[u])
result = ' '.join(result)
print(result)
# input = 895 : result = 'eight hundreds ninety five'
# input = 507 : result = 'five hundreds seven'
# input = 120 : result = 'one hundred twenty'
# input = 071 : result = 'seventy one'
# input = 16 : result = 'sixteen'
# input = 0 : result = 'zero'