파이썬에서 문자와 숫자를 번갈아가며 출력하고 싶습니다.
조회수 2687회
1 #!/usr/bin/env python
2
3 import os
4 import subprocess
5 import sys
6 import shlex
7 import matplotlib.pyplot as plt
8 import re
9
10 def runCommand(command):
11 popenArgs = shlex.split(command)
12 process = subprocess.Popen(popenArgs, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
13 out, err = process.communicate()
14 return [out.rstrip(), err.rstrip()]
15
16 if __name__ == '__main__':
17 nTimes = input("Enter nTimes: ")
18 values = [ [], [], [], [], [], [], [], [], [] ]
19 for index in xrange(nTimes):
20 output, errorOutput = runCommand('./getMultipleHits.sh')
21 outputSplit = re.split(' : |\n', output)
22 #split up the output
23 i = 2
24 j = 0
25 for ggg in outputSplit:
26 if j == 9: break
27 values[j].append(outputSplit[i])
28 i += 3
29 j += 1
30 sumValues = []
31 averages = []
32 k = 0
33 sumValue = 0
34 for index in values:
35 for value in values[k]:
36 sumValue += float(value)
37 sumValues.append(sumValue)
38 averages.append(sumValue/nTimes)
39 k += 1
40 l = 0
41 while l < 9:
42 print('Sum of values of tsf' + str(l) + str(sumValues[l]))
43 print('Average of values of tsf' + str(l) + str(averages[l]))
44 m = 1
45 plt.figure()
46 for value in values[l]:
47 plt.plot(m, value, 'ro')
48 m += 1
49 plt.axis([0, nTimes+1, 0, 2147500000])
50 l += 1
51 plt.show()
일단 제가 작성한 코드입니다. 42번째 줄과 43번째 줄에 출력함수가 있는데 현재 다음과 같이 출력됩니다.
Sum of values of tsf02078497898.0
Average of values of tsf01039248949.0
Sum of values of tsf16028065745.0
Average of values of tsf13014032872.5
Sum of values of tsf28631865954.0
Average of values of tsf24315932977.0
Sum of values of tsf311328958215.0
Average of values of tsf35664479107.5
Sum of values of tsf414357615824.0
Average of values of tsf47178807912.0
Sum of values of tsf516788316306.0
Average of values of tsf58394158153.0
Sum of values of tsf619636037707.0
Average of values of tsf69818018853.5
Sum of values of tsf721343543817.0
Average of values of tsf710671771908.5
Sum of values of tsf823736480671.0
Average of values of tsf811868240335.5
아래와 같이 출력되도록 하고 싶습니다. 숫자는 결과로 나오는 값인데 지금은 임의로 적었습니다.
Sum of values of tsf0: 16516131315
Average of values of tsf0: 15615631851
Sum of values of tsf1: 16516131315
Average of values of tsf1: 15615631851
...
Sum of values of tsf8: 16516131315
Average of values of tsf8: 15615631851
지금 문제가 문자와 숫자를 번갈아가며 출력해야 되는 점과 띄어쓰기를 해야 한다는 점 두 가지가 있습니다. 즉
tsf58394158153.0
에서 5와(5는 바뀌는 값입니다) 뒤의 숫자 사이에 공백이 있어야 한다는 거죠. 그리고 그 사이에 ':'를 끼워넣고 싶습니다.
도와주세요
-
(•́ ✖ •̀)
알 수 없는 사용자
2 답변
-
너무 열공하셔서 피곤해서 코드가 눈에 잘 안들어오시는거 같은데 이미 답을 알고계십니다.
42, 43번째 줄의
print('Sum of values of tsf' + str(l) + str(sumValues[l])) print('Average of values of tsf' + str(l) + str(averages[l]))
를
print('Sum of values of tsf' + str(l) + ':\t' + str(sumValues[l])) print('Average of values of tsf' + str(l) + ':\t' + str(averages[l]))
로 바꿔보세요
참고로 \t는 tab이고 원하시는만큼 쓰시면 됩니다
hashcode 코드 실행기로 해봤을 땐 42번째 줄에 \t 두번, 43번째 줄에 한번 하니까 이쁘게 나오네요
-
파이썬은 문자열에 대해 format 기능을 지원합니다.
일종의 템플릿 같은 기능입니다.
'{}-{}:{}'.format('one', 'two', 'three') 'one-two:three' 'Sum of values of {}:{}'.format('tsf0', '8394158153.0') 'Sum of values of tsf0:8394158153.0'
https://docs.python.org/3.4/library/string.html
파이썬 도움말도 참고해보세요.
그럼 한번 수정해보세요.
댓글 입력