从Python开始:For Loop-之后做什么

时间:2016-09-16 19:45:51

标签: python if-statement for-loop

在网上的教科书中发现了这个练习,并试图通过它来解决问题。我相信他们打算用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")

完全披露:自上次数学课以来已经很长时间了,所以我不相信我的解决方案"对问题的要求甚至是正确的。我更有兴趣解决我面临的两难困境,因为我正试图正确地使用循环。

3 个答案:

答案 0 :(得分:3)

您想检查是否存在root整数root ** pwr == user_input。通过一点点数学,我们可以将上述语句重写为root = user_input ** (1. / pwr)。您可以选择相当少量的pwr值,因此您可以简单地循环显示这些值(看起来您已经找到了这一部分)。您需要做的最后一件事是(对于每个pwr)检查root是否为整数,您可以使用root % 1 == 0int(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.")