PYTHON3:如何打印出用户输入的字符串并以逗号分隔打印出来?

时间:2018-06-20 05:40:19

标签: python python-3.x function input printing

我当前的代码是:

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)

但是我知道那是不正确的,然后我如何打印出用逗号分隔的输入并在上面显示的所需输出之间添加一个“和”呢?

3 个答案:

答案 0 :(得分:1)

首先,您的猜测是正确的,在打印输出时必须添加字符串var query2 = from data in query group data by new { data.Key, data.Country } into averageGroup select new { type = averageGroup.Key.Key, country = averageGroup.Key.Country, average = averageGroup.Average(el => el.Value) };

此外,在for循环中使用了"Important ions are"(所有离子输入),这就是为什么多次打印“ Na K Ca Mg Mn”的原因。

您需要的东西看起来像这样

'my_string'

输出:

def my_input(): 
    my_string = input("Important ions are: ")
    ions = my_string.split(' ')
    print("Important ions are: ", end='')
    for j, i in enumerate(ions):
        if j == 0:
            print(i, end='')
        if j == (len(ions) - 1):
            print(' and ' + i)
        else:
            print(', ' + i, end='')

my_input()

答案 1 :(得分:1)

这是替代版本

def my_input(): 
    my_string = input("Important ions are: ")
    ions = my_string.split() # Split input by whitespace characters
    print('Important ions are:', ', '.join(ions))

my_input()
  • ions存储了输入离子的列表。
  • ', '.join(ions)返回一串离子,并用逗号分隔,后跟一个空格。
  • print用于打印前缀Important ions are:和连接的字符串。请注意,print使用空格分隔给定的参数。

要在最后两个项目之间显示and,应单独打印最后一个项目。这是更新的版本。

def my_input(): 
    my_string = input("Important ions are: ")
    ions = my_string.split() # Split input by whitespace characters
    print('Important ions are:', ', '.join(ions[:-1]), 'and', ions[-1]))

my_input()
  • ions[:-1]:将ions列表切至倒数第二个项目。
  • ions[-1]:最后一项。

请参见slicing on Python tutorial

但是,如果分别输入一个离子或不输入离子,该代码将产生奇怪的结果或错误。要解决此问题,应评估ions的长度:

def my_input(): 
    my_string = input("Important ions are: ")
    ions = my_string.split() # Split input by whitespace characters
    if len(ions) > 1:
        print('Important ions are:', ', '.join(ions[:-1]), 'and', ions[-1]))
    elif lrn(ions) == 1:
        print('Important ion is:', ions[0])
    else:
        print('No ions are important')
my_input()

答案 2 :(得分:1)

您可以尝试以下方法:

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 =“,”不会循环工作。