我的程序做了它应该做的事情,但它是一个小的messy.It,为每一个input.The生成一个新的行,平均输入量大约是1200。所以我有一个非常长的滚动输入。将所有输入放在同一行看起来会好得多。实际代码如下:
# new.py
import colorama
from colorama import init
init ()
import sys
final_line =[]
line_out=[]
lot_number=[]
number_drawn=[]
def load():
line_out=[]
first=input("enter first lot #: ")
last=input("enter last lot#: ")
for lot_number in range(first,last):
line_out.append(lot_number)
for count in range(1,6):
print(str(lot_number))," ",
sys.stdout.write((str(count)))
number_drawn=input("?: " )
print "\033[A \033[A" # I got this from someone posting
if count!=1: #a similar problem
while number_drawn <= line_out[count-1] or number_drawn>80:
print "error"
number_drawn=input("?: ")
line_out.append(number_drawn)
final_line.append(line_out)
line_out=[]
load()
print(" "*8),
for n in range(1,41):
print n,
for a in final_line:
print"\n",
print a[0],(" ")*5,
if a[1]==1:
sys.stdout.write (str(a[1]))
elif a[1]<10:
sys.stdout.write(" "*(a[1]*2-2))
sys.stdout.write(str(a[1]))
else:
if a[1]<41:
d=(a[1]-10)
sys.stdout.write(" "*(a[1]*2-2+d))
sys.stdout.write( str(a[1]))
for b in range(2,6):
if a[b]<10:
m=(a[b]-a[b-1])*2 -1
sys.stdout.write(" "*m)
sys.stdout.write(str(a[b]))
elif a[b] >9 and a[b-1]<10:
d=(10-a[b-1])*2-1
m=(a[b]-10)*3+d
sys.stdout.write(" "*m)
sys.stdout.write(str(a[b]))
else:
if a[b]<41:
m= (a[b]-a[b-1])*3-2
sys.stdout.write(" "*m)
sys.stdout.write(str(a[b]))
def exp2():
print"\n"
for x in range(1,4):
print " "*8,"x"*119
print " "*8,
for n in range(41,81):
print n,
for k in final_line:
print "\n",
print k[0],(" ")*5,
counter=1
for q in range(1,6):
if k[q]==41:
sys.stdout.write(str(k[q]))
counter=2
if k[q]>41 and counter==1:
m=(k[q]-40)
sys.stdout.write(" "*((k[q]-40)*3 -3))
sys.stdout.write(str(k[q]))
counter=2
elif k[q]>41:
p=(k[q]- k[q-1])*3-2
sys.stdout.write(" "*p)
sys.stdout.write (str(k[q]))
exp2() 输出是这样的:
enter first lot #: 1
enter last lot#: 4
1 1 ?: 1
[A [A
1 2 ?: # I terminated the program myself我尝试过各种变体(我发现"\b“会导致python打印一个空行,然后再打印一个换行符)。感谢那些向我展示了sys.stdout ()和print的人。这个程序没有它就不能工作
发布于 2013-12-14 14:31:57
问题不在于python,而在于shell如何解释control characters。
如果您在shell中尝试以下任何命令(假设您在*nix平台上),您将观察到类似的行为(在您的python代码中观察到):
echo -e "\033[A foobar \033[A"或
echo $'\x1b\x5b\x41 foobar \x1b\x5b\x41'发布于 2013-12-14 17:25:24
问题不在于您的python代码。不同的终端具有不同的能力。终端的术语大写列出了它支持的所有转义序列。
ANSI终端应支持转义序列'\033[A‘。GNOME的终端和xterm也将支持它。
https://stackoverflow.com/questions/20580286
复制相似问题