是否可以将输入查询保留为1行(Python 3)

问题描述:

只需在Python 3中学习,即可进行函数构建。我有一组函数可以接受来自用户的多个元素并输出唯一的元素。我想知道是否可以改进程序外观,因为如果有大量的输入,它们会连成一个,一个接一个,一个接一个,一个接一个。理想情况下,每次用户点击输入时,输入行都会将元素和同一行重置为下一个值。是否可以将输入查询保留为1行(Python 3)

这是我有:

userlist = [] 
uniquelist = [] 

def make_list(list): #function to assign only unique list values 
    for u in userlist: 
     if u not in uniquelist: #only append element if it already appears 
      uniquelist.append(u) 
     else: 
      pass 
    print("The unique elements in the list you provided are:", uniquelist) 


def get_list(): #get list elements from user 
    i = 0 
    while 1: 
     i += 1 #start loop in get values from user 
     value = input("Please input some things: ") 
     if value == "": #exit inputs if user just presses enter 
      break 
     userlist.append(value) #add each input to the list 
    make_list(userlist) 

get_list() 

输出(在Jupyter笔记本)增加了一个请输入一些事情:行对每个元素的用户输入。 50路输入,50路;看起来马虎。我无法找到让函数多次使用单行的方法。

+1

只是省略提示。你可以使用'iter'函数来替换'while'循环来获取iter中的值(input,“”):userlist.append(value)',或者简单地'userlist = list(iter(input,“”) )' – chepner

您只需要使用map函数在一行中输入数据,然后拆分每个数据,然后对它进行类型转换以形成一个map对象,然后将其传递给list函数,该函数将返回变量中的列表这个:

var = list(map(int,input().split())) 
+0

它是Python 3:'raw_input'不存在,'map'创建一个迭代器而不是返回一个列表(当然不是一个数组)。 – chepner

+0

对不起,我没有看到它被要求为python3,我纠正它,所以现在它在python 3.x工作 – EX0MAK3R

+0

也许我没有解释(问)正确。用户输入内容并按下回车键。然后给他们另一个提示。按空格键输入循环。我希望找到一种方法让Python不要再呈现新行 - 而是每次都提供相同的行。 – Idleness

你想在每次输入后清除控制台中的文本吗?然后,你可以在Unix系统上使用的Windows os.system('CLS')os.system('clear')

import os 

os.system('CLS') 
user_input = '' 
while user_input != 'quit': 
    user_input = input('Input something:') 
    os.system('CLS') # Clear the console. 
    # On Unix systems you have to use 'clear' instead of 'CLS'. 
    # os.system('clear') 

另外,我想你可以使用curses