내 파일의 줄 수가 2의 제곱 수가 아니라 64를 넘지 않으면 마지막 줄에 '-'를 추가하고 싶습니다. 라인 수는 2의 가장 가까운 제곱이됩니다.파이썬, 섬유에 추가하지만 줄에 특정 값이있는 경우에만
이것은 내가 지금까지 생각 해낸 것인데, 나에게는 효과가 없지만 숫자를 확인하기 위해 다른 모든 기능이 필요할 지 모르겠습니다.
def name():
j=open('file.txt', 'r', encoding='utf-8')
numbers=sum(1 for line in j)
if numbers != 2 or 4 or 8 or 16 or 32 or 64:
j.append('-')
의견이 있으십니까? 그것이 내가 추가 라인을 볼 수 없습니다 인쇄 할 때 지금이이
, 여전히 모든 방법을 작동하지 않습니다
def name():
with open('file.txt', 'r+', encoding='utf-8') as j:
numbers=sum(1 for line in j)
if numbers < 64:
lower2 = round(2**math.log(numbers, 2))
if numbers > lower2:
missing = 2*lower2 - numbers
j.write('-\n' * missing)
j=open('file.txt', 'r', encoding='utf-8')
for i in j.readlines():
print (i)
j.close()
, 당신은 내 코드를 잘못 복사됩니다. 'round (2 ** int (math.log (numbers, 2)))'대신'round (2 ** math.log (numbers, 2))'를 사용했습니다. 예를 들어, 숫자가 '6'이라면, 'math.log (6,2)'는 약 2.58이므로'int (math.log (6, 2))'는 2이고'round (2 ** math.log (6, 2))'는'4', 즉 누락 된 행이 2 개 있다는 것을 의미합니다 ... 그러나'round (2 ** math.log (6, 2))'는 당연히'6'입니다. . – abarnert
로그가 어떻게 작동하는지 이해하지 못한다면 이해하는 방식으로 수학을 써야합니다. (비록 조금 덜 효율적이거나 장황하다해도 누가 신경 써야할까요? 가장 순진한 알고리즘이라 할지라도 몇 초가 걸리며 마이크로 초 안에 낭비 될 것입니다 ...) 또한, 기본적인 디버깅 방법을 배우는 것이 필요합니다. 중간 값을 출력하십시오 어떤 일이 잘못되고 있는지를 알아보기 위해 컴퓨팅을하고 있기 때문에 더 많은 정보를 얻을 수 있습니다. – abarnert
이제 작동합니다. 정말 고마워요! – jmanikolina