python范围和字符串

2024-10-01 13:28:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图定义一个函数CountXSeconds,对于给定的整数值X,它将创建一个字符串,解释在计算秒数时需要大声说出的内容。例如 CountXSeconds(3)应该给出输出 “一千。两千。3一千“ 这是我得到的最接近的一个,但我找不到一种方法来包含字符串“一千”而不出错:

def main():
    CountXSeconds()


def CountXSeconds():
    n = int(input("What is your number?" ))
    if n >= 1:

        print(*range(1,n+1))

if __name__ == "__main__": main()

Tags: 方法函数字符串内容inputif定义is
3条回答

这里有一个解决你的问题的解决方案,但代码足够高明,在这个级别上作为家庭作业的答案看起来很奇怪:

print(' '.join(map(lambda x: "%d one thousand." % x, range(1, n))))

解释!在

  • “lambda函数”只是一种非常小的编写函数的方法,不需要命名它。在本例中,lambda x: "%d one thousand." % x将接受一个数字x,并在x=1时输出字符串"1 one thousand"。在
  • lambda中使用的%运算符是string.format的快捷方式。现在解释起来有点太多了,但这里的意思是“在%d所在的地方插入x的值”。在
  • map函数是在一行中编写完整的for循环的奇特方法。它接受一个函数和一个列表,并将该函数应用于列表中的每个项。在
  • ' '.join是Python的一个特性。它所做的是获取一个列表,并通过在每个项之间放置空格将其转换为字符串。您可能会认为它是在列表中调用的函数,但在Python中,它是字符串上的函数。在

这里有一个更清晰的版本:

^{pr2}$

这里是你可以使用的。根据应该键入的值,最好有更好的用户输入验证和更具信息量的消息。在

def count_x_seconds():
    n = input("What is your number: ")
    assert n.isdigit(), "What you entered is not a digit !"
    n = int(n)
    if n > 1:
        print(' '.join(map(lambda x: "%d one thousand." % x, range(1, n+1))))
for i in range(0,n):
    print(i,"one thousand.",end='')
print()

相关问题 更多 >