Python:如何将打印语句和输入放在同一行?

5

如何使用户输入的内容与打印语句在同一行?

例如,对于下面的代码片段,输出结果应该是:

Enter grade for course 1: A
Enter credits for course 1: 4

目前我得到的是这个:

Enter grade for course 1: 
A
Enter credits for course 1:
4

以下是代码片段:

for i in range(1,coursenumber+1):
    print("Enter grade for course ", i,":", end =""),
    grade=str(input())
    print("Enter credits for course", i,":", end =" ")
    credit=int(input())
    totalgpa+=translate(credit,grade)
    totalcredit+=credit

抱歉,各位。我进行了编辑。我认为现在很清楚了。 - Nick Mireri
你是怎么运行你的代码的?我问这个问题是因为我在测试它的时候(在Spyder中的iPython控制台),它打印的方式和你说的一样,但是当我从普通控制台运行它时,它按照你的意图工作。 - Blckknght
第二行有一个逗号。 - Nouman
@Blckknght 我正在使用Spyder。我从下面的答案中得到了解决方案。 - Nick Mireri
是的,这是 iPython 控制台的问题,而不是你的代码(尽管代码可以改进)。 - Blckknght
4个回答

10
您可以在输入函数中编写问题,例如:

您可以在输入函数中编写问题,如下:

for i in range(1,coursenumber+1):
    grade=input(f"Enter grade for course {i}:")
    credit=input(f"Enter credits for course {i}:")
    totalgpa+=translate(credit,grade)
    totalcredit+=credit

然后,输入提示就会出现在问题旁边。


4

不要先使用print(),而是像这样只使用input()

question="Enter grade for course" + str(i)
grade=input(question)

question可以是任何内容,但你不能在input()函数内部组合字符串。


2
那不起作用。input的参数需要是一个单一的字符串,但是你的question变量是一个3元组。你可能需要进行一些字符串格式化才能使其正常工作。 - Blckknght
我同意Blckknght的观点。你可以这样做:question="输入第"+str(i)+"门课程的成绩: " - Nouman
@BlackThunder 是的,意识到了。哎呀。那应该可以工作。 - wispi

1
你可以利用光标移动来实现在同一行上打印和输入。这将使您能够在同一行上进行两个输入。
main.py
-------
print("something")
res = input("\033[1A \033[9C Write something here:")
            
            #\033[<num>A -> move cursor up 'num' lines
            #\033[<num>C -> move cursor up 'num' columns

output
------
> somethingWrite something here:▒

0

你现在所拥有的应该可以工作。如果不能,那是因为你没有使用正常的控制台进行输出。话虽如此,正如其他答案所建议的那样,你可以通过在调用input时包含提示而不是在单独的print调用中实现更好的效果。

唯一的复杂之处在于你需要自己格式化提示,而不是像使用print时可以传递单独的参数那样。幸运的是,字符串格式化并不难。我会做这样的事情:

input("Enter grade for course {}: ".format(i))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接