在网上的教科书中发现了这个练习,并试图通过它来解决问题。我相信他们打算用while循环来回答它,但我使用的是for循环,这可能是我的问题。
"编写一个程序,提示用户输入一个整数并返回两个整数 pwr 和 root ,这样0< pwr< 6和root ** pwr等于用户输入的整数。如果不存在这样的整数对,则应该打印"不存在这样的整数。"
我如何测试以查看是否有#s符合标准,如果没有符合标准,那么?
u_i = int(input("input a #:"))
root = u_i**.5
for pwr in range(1,6):
ans = root**pwr
if ans == u_i:
print(pwr)
print(int(root))
#here is where the problem comes in as it will do this every time and I'm\ failing to discover what I should do instead.
if ans!= u_i:
print("No such integer exists")
完全披露:自上次数学课以来已经很长时间了,所以我不相信我的解决方案"对问题的要求甚至是正确的。我更有兴趣解决我面临的两难困境,因为我正试图正确地使用循环。
答案 0 :(得分:3)
您想检查是否存在root
整数root ** pwr == user_input
。通过一点点数学,我们可以将上述语句重写为root = user_input ** (1. / pwr)
。您可以选择相当少量的pwr
值,因此您可以简单地循环显示这些值(看起来您已经找到了这一部分)。您需要做的最后一件事是(对于每个pwr
)检查root
是否为整数,您可以使用root % 1 == 0
或int(root) == root
。
如果你想看"幻想"你可以使用python' s来实现... else语法。只有在循环结束而没有中断的情况下,for循环中的else
块才会被执行。例如:
def has_dogs(pets):
# This functions check to see if "dog" is one of the pets
for p in pets:
if p == "dog":
print "found a dog!"
break
else:
# This block only gets run if the loop finishes
# without hitting "break"
print "did not find any dogs :("
for ... else语法基本上是一种奇特的方法:
def has_dogs(pets):
# This functions check to see if "dog" is one of the pets
dog_found = False
for p in pets:
if p == "dog":
print "found a dog!"
dog_found = True
break
if not dog_found:
print "did not find any dogs :("
答案 1 :(得分:0)
我的解决方案是使用@ BiRico的while
策略和内部root
循环来提高效率。当然,因为root = number, pwr = 1
没有界限而且我们只寻找一个解决方案,所以它只能找到一个简单的案例(number = int(input("Choose a number: "))
for pwr in range(1,6):
root = 1
guess = root ** pwr
# We can stop guessing once it's too big
while guess < number:
root += 1
guess = root ** pwr
if guess == number:
print('root = {}, pwr = {}'.format(root, pwr))
break
else: # nobreak
print('No such integers exist')
)。
#version 3.7;
#include "colors.inc" // The include files contain
#include "textures.inc" // pre-defined scene elements
#include "shapes.inc"
global_settings { assumed_gamma 1.0 }
background { color White }
camera {
orthographic
location <0,0,20>
look_at <0, 0, 0>
sky <0, 0, 1>
right <-1, 0, 0>
angle 50
}
#declare plate = disc {
<0,0,0.99>, <0,0,1>,6
texture { pigment { color White }}
finish { diffuse albedo 1. }
}
#declare my_light = light_source {
<0,0, 1>
color rgb <0.3,0.3,0.3>
area_light <5,0, 0>, <0,5,0>, 5, 5
}
light_group {
light_source {my_light}
plate
global_lights off
}
答案 2 :(得分:-1)
这个怎么样?
userNum = int(input("Choose a number: "))
for i in range(1,6):
for j in range(userNum):
if j ** i == userNum:
pwr = i
root = j
if pwr:
print('pwr = {}, root = {}'.format(pwr, root))
print("No such integers exist.")