我是编程新手,目前处理问题#269 from r/dailyprogrammer.我想添加读取文件的能力,并根据给定的缩进格式对其进行格式化。我目前的代码:
import sys
filename=input("What file would you like to reformat?")
f=open(filename,"r")
n_lines= int(f.readline())
indents=(f.readline())
block=0
for line in f:
line=line.lstrip('·» \t')
if line.startswith('ENDIF') or line.startswith('NEXT'):
block-=1
print(indents*block+line)
if line.startswith('FOR') or line.startswith('IF'):
block+=1
给了我这个
VAR I
FOR I=1 TO 31
····
IF !(I MOD 3) THEN
····
····
PRINT "FIZZ"
····
ENDIF
····
IF !(I MOD 5) THEN
····
····
PRINT "BUZZ"
····
ENDIF
····
IF (I MOD 3) && (I MOD 5) THEN
····
····
PRINT "FIZZBUZZ"
····
ENDIF
NEXT
,但我希望它在同一行上打印伪缩进+行。
答案 0 :(得分:1)
您的indents
字符串以换行符结尾,如下所示:" \n"
。你想摆脱它。
indents=f.readline().strip('\n')
从文本文件中读取时,每行末尾都会有换行符,直到您到达文件末尾。
默认情况下, print()
也会在其输出中添加一个换行符。如果您不想这样,可以传递end
参数。
print('this line doesn't need another newline.\n', end='')
答案 1 :(得分:0)
你的陈述print(indents*block+line)
固有地在最后添加了一个新的行字符。由于python“print”语句添加了换行符,无论print命令中有什么内容。
在print语句的末尾添加一个逗号,如print(indents*block+line,)
,它不会打印换行符。
答案 2 :(得分:-1)
只需在程序中使用多行字符串作为输入。
inputBasicCode =“”“
...
“ “”“
这是一种更简单明了的程序输入方式。非常适合调试。只需专注于目标。