首页 > 解决方案 > PYTHON3:如何打印出用户输入字符串并用逗号分隔打印出来?

问题描述

我目前的代码是:

def my_input(): 
    my_string = input("Important ions are: ")
    for i in my_string:
        print(my_string, sep=",")

my_input()

所以我正在尝试编写一个程序,提示用户“重要元素是:”并预计输入:

Na K Ca Mg Mn(都在一行上,由单个空格分隔):

然后,我希望我的代码打印出以下内容:

Important ions are: Na, K, Ca, Mg and Mn

相反,使用我当前的代码,我得到以下输出:

Na K Ca Mg Mn
Na K Ca Mg Mn
Na K Ca Mg Mn
Na K Ca Mg Mn
Na K Ca Mg Mn
Na K Ca Mg Mn
Na K Ca Mg Mn
Na K Ca Mg Mn
Na K Ca Mg Mn
Na K Ca Mg Mn
Na K Ca Mg Mn
Na K Ca Mg Mn
Na K Ca Mg Mn

我对为什么/如何多次打印输出感到困惑。我想我明白为什么它没有用逗号分隔,是因为它将输入视为 1 个字符串吗?而且我想为了打印出我想要的输出,我必须这样做

print("Important ions are" + my_string)

但我知道这不可能是正确的,然后我怎么能打印出输入,用逗号分隔并在它们之间添加一个“和”作为上面显示的所需输出?

标签: pythonpython-3.xfunctioninputprinting

解决方案


你可以试试这个:

import re
def my_input(): 
    my_string = input("Important ions are: ").split()   # storing the input as elements of a list
    w = " ".join(my_string)                                     # joining all the elements in the list  
    print("Important ions are: ", re.sub(" ",", ",w[0:-2]) +'and '+ my_string[-1])  # appending the last element after inserting ', ' and 'and'

my_input()

这应该完全按照您想要的方式为您提供输出。您的代码重复打印输入的原因是因为这一行:

 print(my_string, sep=",")

它只是打印整个输入的次数与输入中的元素一样多。此外, sep="," 不会在循环中工作。


推荐阅读