Python:显示并计数两个整数的因子

1 投票
6 回答
1136 浏览
提问于 2025-04-16 11:49

写一个程序,让用户输入两个整数,这两个整数都要大于0。程序会显示这两个整数的共同因子,并计算它们的数量。

还有一些额外的要求:如果用户输入的整数小于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

首先,我们应该用一种简单的方法来获取两个整数;要注意可能会有多个错误。(更好的方法是使用raw_input,并检查输入的内容是否能转换为整数)。

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和输入的整数,可以把它改成range(2, integer1)。

注意你原来的代码没有缩进(所以在论坛上没有显示为代码),而且andor是用来组合表达式的(比如,判断某些东西是True还是False)。所以你应该是想写if integer1 < 1 or integer2 < 1:

1

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

while i <= integer1 and integer2 :

在Python中,integer2是一个独立的逻辑表达式,它总是为真。你可以试试这样写:while i <= integer1 and i <= integer2

3

试着一步一步来,把你的任务拆分成简单的步骤。在你的例子中,可以这样做:

  1. 获取第一个数字
  2. 获取第二个数字
  3. 进行计算

这些步骤还可以进一步拆分:

  1. 获取第一个数字:
    • 从用户那里获取数字
    • 如果数字不合适,就重复这个过程

...

这样你就能明白,验证的过程不应该放在重复的循环里面。

还有一个小建议:单独测试每一步。这样你会发现 if integer1 or integer2 < 1 或者 while i <= integer1 and integer2 的效果可能和你想的不一样。

撰写回答