Я работаю над книгой, которая учит принципам компьютерного программирования с помощью Python. В одном из упражнений с пальцами мне предлагается: Написать программу, которая просит пользователя ввести целое число и выводит два целых числа, root и pwr, такие, что 0 ‹ pwr ‹ 6 и root^pwr равно целому числу, введенному командой Пользователь. Если такой пары целых чисел не существует, она должна вывести соответствующее сообщение. Я написал программу, которая делает то, о чем она просит. У меня только один вопрос о проверке уравнения с числами списка. Вот мой код:
x = int(raw_input('Enter an integer: '))
root = 0
pwr = [1,2,3,4,5]
listnum = 0
for root in range(0, x + 1):
while pow(root, pwr[listnum]) < x:
root += 1
if pow(root, pwr[listnum]) == x:
print str(root) + '^' + str(pwr[listnum]) + ' = ' + str(x)
break
listnum += 1
if pow(root, pwr[listnum]) == x:
print str(root) + '^' + str(pwr[listnum]) + ' = ' + str(x)
break
listnum += 1
if pow(root, pwr[listnum]) == x:
print str(root) + '^' + str(pwr[listnum]) + ' = ' + str(x)
break
listnum += 1
if pow(root, pwr[listnum]) == x:
print str(root) + '^' + str(pwr[listnum]) + ' = ' + str(x)
break
listnum += 1
if pow(root, pwr[listnum]) == x:
print str(root) + '^' + str(pwr[listnum]) + ' = ' + str(x)
break
listnum = 0
if pow(root, pwr[listnum]) == x:
break
else:
print 'No combinations within parameters exist'
Я хотел бы знать, как проверить if pow(root, pwr[listnum]) ‹ x для всех 5 приращений без повторения listnum += 1...if... ломать несколько раз. Если вопрос не ясен, я могу попытаться уточнить больше. Я видел вопрос, касающийся именно этой проблемы, но ни один из них не дает четкого ответа на конкретный вопрос, который у меня есть, поэтому я не собираюсь повторно публиковать вопрос. Если будут сделаны какие-либо другие предложения, они будут высоко оценены. Спасибо!
pwr[listnum] == listnum + 1
, поэтому в спискеpwr
нет необходимости. Вместо этого вы можете перебратьrange(1, 6)
(то есть[1, 2, 3, 4, 5]
). - person Tim Peters   schedule 27.10.2013