我正在写一个简单的程序,计算一个随机加法数学问题,并要求用户输入答案。在
当用户输入答案时,计算机从左到右输入输入输入的键。我希望输入的结果正好相反:从右到左。在
http://euclidmagazine.com/2010/12/why-do-we-carry-in-addition/
当然,加法的工作方式是先在最右边添加列—个位数,然后是十位数和一百位数,等等。在
例如,如果我在上面(635)输入这个加法问题的答案,然后我按这个顺序(6然后3,然后5),我希望6出现在9+6下面,那么当我键入3时,我希望它将6(向左)移动到5+7下面,3将出现在9+6下面,然后当我输入5时,它将6移到3+2下,将3移到5+7下,然后将5放到9+6下。在
是否有其他输入函数或模块可用于此目的?或者你的绝密技术?谢谢。在
这是我的代码:
# MAIN
def main():
keepGoing = "Y"
while keepGoing == "Y":
keepGoing = "N"
entranceMessage()
number1, number2 = calculateProblem()
userInput = getInput(number1, number2)
calculateResults(userInput, number1, number2)
keepGoing = input("Would you like to try another problem? \
(Enter \"Y\" for \"Yes\", or any other key for \"No\".): ")
exitMessage()
# DISPLAY OPENING MESSAGE
def entranceMessage():
print()
print("2. Math Quiz (Page 235)")
print("This program will prompt you to answer a series of random mathematical problems.")
# INPUT
def getInput(number1, number2):
print("Answer the following math problem: ")
print("")
if (number1 < 10):
print(" ", number1)
else:
print(" ", number1)
if (number2 < 10):
print("+ ", number2)
else:
print("+", number2)
print("_____")
print(" ")
result = (number1 + number2)
if (result >= 100):
userInput = float(input(" "))
elif ((result >= 10) and (result < 100)):
userInput = float(input(" "))
elif ((result >= 0) and (result < 10)):
userInput = float(input(" "))
return userInput
# PROCESS
def calculateProblem():
import random
number1 = random.randint(1, 100)
number2 = random.randint(1, 100)
return number1, number2
# OUTPUT
def calculateResults(userInput, number1, number2):
result = (number1 + number2)
if (userInput == result):
print()
print("Correct!")
else:
print()
print("Sorry, the answer is:", result)
# DISPLAY CLOSING MESSAGE
def exitMessage():
print("Thank you. Exiting the program..")
# CALL THE MAIN FUNCTION
main()
如果你注意到我在函数“getInput”(最后一个If elif)中的代码中,在最后一个方法中,我有一个方法,将初始光标放在与答案相关的正确对齐处,但是(a)这类方法给出了答案是什么的线索,(B)它不是我想要的。在
如果您在基于Unix的系统上,一种方法是使用curses库。Curses通常用于高级终端操作,它可以在终端中的任何地方写入文本、更改字体颜色等,并且变体也可用于Python(包括C)以外的语言。它也常用于基于文本的游戏,如流氓。在
Here's a link to the official documentation。在
Here's a good tutorial。在
这对我在UNIX系统上有效,使用getch fromthis answer从输入中读取一个字符。在
有关在xterm上移动光标的控制序列,请参见this page。在
或者,根据您使用的操作系统或shell,您可以在最后几个字符上退格并每次重新打印它们?在
另请参见this chart of control characters。尝试使用ASCII 8(退格)、ASCII 127(删除)或ASCII 10(换行;如果执行换行但没有换行,则可能允许您在某些系统上重新键入同一行。)
您可以打印
chr(8)
,例如,打印ASCII字符8(退格)。在请参阅this answer,了解如何一次从用户读取单个字符。在
如果在运行getch时遇到错误,下面的代码可能仍然有效;在UNIX系统上,它对我很有用;但是它要求用户在每个数字后按enter键。它假设用户一次只输入一个数字。在
^{pr2}$相关问题 更多 >
编程相关推荐