회로의 저항을 계산하는 코드를 만들었습니다. '직렬'과 '병렬'사이의 각 변경을 '부품'으로 간주 한 다음 부품 수, 각 부품의 저항 수 및 각 저항의 저항을 제공합니다.파이썬 코드가 제대로 작동하지 않습니다.
문제는, 내가 그것을 실행 때마다, 그것은 'P'에 걸립니다def resistance():
p = int(input('Enter number of parts. One "part" is a resistor or sequence of resistors that are in parallel while the rest are in series, or vice versa.'))
for x in range(1, p):
n = input('Enter number of resistors in part' + x)
for y in range(1, n):
w = input('Enter the resistance of resistor #' + y)
q.append(w)
t = str(input('In series or parallel? Enter S for series, P for parallel.'))
if t == 'S':
for z in range(1, len(q)):
s += q[z-1]
elif t == 'P':
for v in range(1, len(q)):
s += (1/q[z-1])
q = []
return s
후 다음과 같은 오류를 제공합니다 :
나는 S의 = 설정하면 할당
전에 참조 된 지역 변수의 ' 0 첫번째 루프가 시작되기 전에 'p'를 취한 다음 0을 반환합니다.
어디에서 잘못 되었습니까?
편집 : 위의 문제는 해결되었지만 이제는 새로운 문제가 있습니다. 다음과 같이 코드는 : 그것은 시리즈에서 작동
def resistance():
s = 0
q = []
p = int(input('Enter number of parts. One "part" is a resistor or sequence of resistors that are in parallel while the rest are in series, or vice versa. '))
p += 1
for x in range(1, p):
n = int(input('Enter number of resistors in part ' + str(x) + ':'))
n += 1
for y in range(1, n):
w = input('Enter the resistance of resistor #' + str(y) + ', in ohms:')
q.append(w)
t = str(input('In series or parallel? Enter S for series, P for parallel. '))
if t == 'S':
for z in range(1, len(q)+1):
s += int(q[z-1])
elif t == 'P':
for v in range(1, len(q)+1):
s += int(1/int(q[z-1]))
q = []
return s
하지만, 동시에 그것은 말합니다 : - 나는 '시리즈의'부분과 거의 같은 일을했고,이 오류가 없다고하지만. 도움을 받으실 수 있습니다.
'if/elif' 조건 중 하나에서'len (q)'를 출력하고 그 조건을 선택하십시오. 's = 0'이 필요합니다 - 그래서 UnboundLocalError를 얻는 것입니다. 변수를 더 나은 이름으로 지정하는 것이 더 쉬울 것입니다. 'q'는 어디에서 오는 것입니까? 게시 한 코드에는 설정되지 않았습니다. –
'p'를 _just_ 가져 가지 않습니다. 또한'TypeError : 4 행에서 'str'과 'int'objects를 연결할 수 없습니다. 주위에'try-catch'가 있습니까? – user58697