Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.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_Python 3.x - Fatal编程技术网

Python 为什么我会得到多个输出?

Python 为什么我会得到多个输出?,python,python-3.x,Python,Python 3.x,我目前正在尝试将数字写入文本文件,并将数字作为字符串输出,但例如,当我将数字150作为输入时,我会得到多个输出 将数字150作为输入时的输出: 将数字150作为输入时的期望输出: 一百五十 我的代码: 这是我的txt文件的值: 话虽如此,我们还是要提前感谢每一位能够提供帮助或就如何解决此问题提出建议的人:问题: 是150分之5->是的 这会导致函数为行中找到的每个数字触发。 看起来你把答案硬编码了,在这种情况下,我会用字典简化代码,减少重复 NumbertStringPairs={1:1,2:2

我目前正在尝试将数字写入文本文件,并将数字作为字符串输出,但例如,当我将数字150作为输入时,我会得到多个输出

将数字150作为输入时的输出:

将数字150作为输入时的期望输出:

一百五十

我的代码:

这是我的txt文件的值:

话虽如此,我们还是要提前感谢每一位能够提供帮助或就如何解决此问题提出建议的人:

问题: 是150分之5->是的

这会导致函数为行中找到的每个数字触发。 看起来你把答案硬编码了,在这种情况下,我会用字典简化代码,减少重复

NumbertStringPairs={1:1,2:2,…,150:一百五十} 对于数据文件中的行: printnumberToStringPairs.getline.strip 这遵循您使用的硬编码解决方案样式。我首先去掉了线,让1也和1匹配。 如果您使用if-elif链接条件,并使用==进行直接比较,那么您的解决方案就会起作用


如果您有任何问题,只需在以下答案下进行评论:

您所有的陈述都是正确的,因为例如“1”、“5”、“150”都是您行的一部分。您必须使用==而不是in进行严格匹配,它才能工作

此外,如果您希望一次只执行一条if语句,则必须使用else

最佳代码如下所示:

... 如果line.strip==“1”: .strip以从末端删除\n 打印件 elif line.strip==“5”: .strip以从末端删除\n 第五版 其他: 打印100和50 ... @编剧1 嘿,这个问题之所以会发生,是因为你设定了if条件的方式。 您需要了解不同类型的条件语句:

如果-当您仅使用If条件时,编译器将检查它是否为True或False-如果为True,则它将执行其中定义的代码块并继续执行

如果-Else-在本例中,如果条件为True,则它将执行内部代码,否则将执行Else内部的代码块

If-Elif-Else-这是一个If-Else梯形图,您在其中定义了多个条件,每个条件都将根据您提到的顺序进行检查。如果所有条件都是错误的,那么将执行else代码块

这里,如果您在代码中看到。由于'150'有'1','5','15'以及'150',这就是为什么你得到多个输出

因为,按照您编写条件的方式,我建议从更高的数字降序开始,将条件设置为Elif Else而不是If,因为即使您按降序声明条件,您也会得到多个输出,因为编译器将执行每个If语句

main_file=open'test.txt',w' x=输入您的号码 main_file.writex main_file.close 将openmain_文件作为f: 数据文件=f.readlines1 对于数据文件中的行: 如果行中有“150”: 打印150张 . . . . . 行中的elif“50”: 打印50 . . . . . 行中的elif“15”: 打印15 . . . . . 行中的elif“5”: 第五版 . . . . . 其他: 打印件 但是,您也可以用更好的方式编写此代码,它将减少包含的条件语句的数量。只需查看模运算符,以及如何使用它来减少条件的数量。
所有if语句都为true,因此它们都在打印各自的打印结果。您可以使用模块num2word。通过pip3安装num2word安装。像这样使用:import num2word printm2word.word1234567
one
five
fifteen
fifty
one hundret and fifty
main_file = open('test.txt','w')
x = input("input your number")
                
main_file.write(x)
main_file.close()

with open(main_file) as f:
    datafile = f.readlines(1)
for line in datafile:
    if '1' in line:
        print("one")
    .
    .
    .
    .
    .
    if '5' in line:
        print("five")
    .
    .
    .
    .
    .
    if '15' in line:
        print("fifteen")
    .
    .
    .
    .
    .
    if '50' in line:
        print("fifty")
    .
    .
    .
    .
    .
    if '150' in line:
        print("one hundret and fifty")
150