Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在一条生产线中有来自两个不同功能的两个输出?_Python - Fatal编程技术网

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)
我有几个问题:

  • 如何使我的输出看起来更好

  • 有没有办法摆脱那些if语句并使用更有效的方法?像开关/箱子之类的东西


  • 我怀疑有一个用于此的库,但我会重构以使用以下模式

    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'