Python:显示和计算两个整数的除数

时间:2011-02-14 19:27:41

标签: python

编写一个程序,提示用户输入两个整数,每个整数都更大 程序将显示和计算两个整数所具有的除数的数量 共同。 其他要求: 如果整数小于1,告诉用户有问题,然后提示他们 再次整数。

这是我到目前为止所写的内容,但我被困在这里我不知道如何合并这两个数字。基本上我不知道从这里去哪里或者'这里'是否正确???

请帮忙...... [这是我第一次使用python]

integer1 = input("Enter an integer:  ")   
integer2 = input("Enter an integer:  ")

print integer1, ":  "  ,

i = 1
while i <= integer1 and integer2 :

    if integer1 or integer2 < 1 :
        print input("Enter an integer:  ")

    if integer1%i == 0 and integer2%i == 0 :  
        print i , 

    i = i + 1

6 个答案:

答案 0 :(得分:3)

尝试一步一步地做。并尝试将您的任务分解为简单的步骤。在您的示例中,它可能类似于:

  1. 获取第一个号码
  2. 获取第二个号码
  3. 计算
  4. 这可以进一步细分

    1. 获取第一个号码:
      • 从用户处获取号码
      • 循环,而数字不正常
    2. ...

      通过这种方式,您可以看到验证不应该在while循环中。

      另一个提示:分别测试每个步骤。通过这种方式,您会发现if integer1 or integer2 < 1while i <= integer1 and integer2无法按照您的想法运作。

答案 1 :(得分:1)

这不是逻辑运算符在Python或一般编程中的工作方式。

while i <= integer1 and integer2 :

在Python中integer2是一个单独的逻辑语句,始终为true。 尝试改为:  while i <= integer1 and i <= integer2

答案 2 :(得分:0)

  • 你想要移动那些代码 验证你的输入 环。
  • 您的print i不需要 逗号。
  • 您的流程中的语法 控制需要一些工作,因为 示例if integer1 or integer2 < 1:应为if ((integer1 < 1) or (integer2 < 1)):

答案 3 :(得分:0)

首先我们应该用一种简单的方法来获得两个整数;注意到可能存在多个错误。 (更好的是raw_input并检查数字解析为int)。

integer1 = -1
integer2 = -1
while(integer1 < 1):
   integer1 = input("Enter integer 1: ")
while(integer2 < 1):
   integer2 = input("Enter integer 2: ")

factor_list1 = [] # store factor list of first number
double_factor_count = 0

# generate the factor list of the first number
for i in range(1, integer1+1): # range(1,5+1) is the list [1,2,3,4,5]
    if integer1 % i == 0:
        factor_list1.append(i)
for j in range(1, integer2+1):
    if integer2 % j == 0 and j in factor_list1:
         print j,
         double_factor_count += 1
print "\n double count:", double_factor_count

如果你想跳过1并输入以数字输入的整数,你可能想把它改成范围(2,整数1)。

请注意,您的原始代码未缩进(因此未在论坛中显示为代码,andor组合了表达式(例如,TrueFalse)。所以你的意思是if integer1 < 1 or integer2 < 1:

答案 4 :(得分:0)

您的代码实际上非常接近,但您遇到了一些问题:

  1. 您没有正确验证integer1integer2(虽然我怀疑您知道,因为您只是打印替换值)。
  2. 您的循环测试已中断。您撰写的内容意味着“i小于integer1integer2也不为零”。
  3. 您还可以通过以下几种方式改进代码:

    1. 确保您的输入不仅是&gt; = 1,而且还是整数。
    2. 使用for循环代替while循环,使用Python优秀的可迭代支持。
    3. 以下是如何确保用户键入的是整数:

      integer1 = 0
      
      while not integer1:
          try:
              # raw_input() ensures the user can't type arbitrary code
              # int() throws a ValueError if what they typed wasn't an integer
              integer1 = int(raw_input("Enter the first integer:  "))
      
              if integer1 < 1:
                  print "You must enter an integer greater than 0!"
                  integer1 = 0 # so that our while statement loops again
          except ValueError:
              # the user typed something other than an integer
              print "You must enter an integer!"
      

      此处的whiletryif语句可确保在代码继续之前强制用户输入有效的整数。以下是用户看到的示例:

      Enter the first integer:  6.6
      You must enter an integer!
      Enter the first integer:  -5
      You must enter an integer greater than 0!
      Enter the first integer:  sys.exit(0)
      You must enter an integer!
      Enter the first integer:  12
      Enter the second integer:  
      

      这就是我建议你设置循环的方法:

      # min() returns the smallest of its arguments
      # xrange() iterates over a sequence of integers (here, starting with 1 and
      #          stopping at min(integer1, integer2))
      for i in xrange(1, min(integer1, integer2) + 1):
          # magic goes here!
      

      文档链接:

答案 5 :(得分:0)

您的问题与if语句有关。

而不是说:while i <= integer1 and integer2,您需要说while i <= integer1 and i <= integer2

这同样适用于您的其他if语句。 if integer1 or integer2 < 1 :应为if integer1 < 1 or integer2 < 1 :