2017-10-05 1 views
0
a = input('Enter a number: ') 
b = input('Enter a digit between 0 and 9: ') 
p = int(0) 
t = int(0) 
while p <=len(a): 
    if a[p] == b: 
    t += 1 
    p += 1 
else: 
    p +=1 

print ('The number', b, 'appears', t, 'times') 

수치가 숫자로 표시되는 횟수를 계산해야합니다. 이 코드는 문자열 인덱스가 범위를 벗어났다는 것을 알았다면 while 루프를 벗어 났음을 의미하지만 범위 내에서 만드는 방법을 알지 못합니다.숫자 문자열에서 숫자 계산하기

+0

그래서이 경우 : 그 자리 b에서 제공하는 자리가 일치하는 경우는 TrueFalse 요소를 포함하는 목록을 반환합니다 확실히 : 나는 이것이 클래스 할당이라고 가정하고 있으므로,'count' 메소드를 사용하는 것은 제한이 없다? 그렇지 않기 때문에't = a.count (b)'가 전체를 해결할 것이다. – ShadowRanger

답변

0

먼저 들여 쓰기가 약간 깨졌습니다. 잘하면 그것은 단지 복사/붙여 넣기 문제 일뿐입니다.

"범위를 벗어남"문제는 while 상태에서 발생합니다. while p <=len(a) 대신 while p < len(a)을 시도하십시오.

0

들여 쓰기가 약간 벗어났습니다.

a = input('Enter a number: ') 
b = input('Enter a digit between 0 and 9: ') 
p = int(0) 
t = int(0) 
while p < len(a): 
    if a[p] == b: 
    t += 1 
    p += 1 
else: 
    p +=1 

print ('The number', b, 'appears', t, 'times') 

을하고 원하는 동작을 수행 : 나는 while 루프 내부에 들여 쓰기를 수정하고 < (길이 n 배열 0에서 n - 1로 이동)에 <=를 변경하는 경우, 프로그램이된다.

코드에 대한주의 사항 : 어셈블리가 아니라 파이썬을 작성하고 있습니다. 당신은 훨씬 더 간결 문자열의 발생을 계산하는 for 루프를 사용할 수 있습니다 무슨 일이 일어나고 있는지 풀기

a = input('Enter a number: ') 
b = input('Enter a digit between 0 and 9: ') 

count = sum([digit == b for digit in a]) 
print('The number', b, 'appears', count, 'times') 

:

a = input('Enter a number: ') 
b = input('Enter a digit between 0 and 9: ') 
t = 0 
for d in a: 
    if d == b: 
     t += 1 

print ('The number', b, 'appears', t, 'times') 
0

나는이 문제를 이런 식으로 접근하는 것

이의이 a = '155628' 말을하자 b = '5'

  • [digit == b for digit in a]은 숫자 a의 모든 숫자 (문자열)를 반복하는 목록 이해입니다. 목록에서 비 falsey 값의 [False, True, True, False, False, False]
  • sum() 카운트 수 만에, 2