Python:显示并计数两个整数的因子
写一个程序,让用户输入两个整数,这两个整数都要大于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)。
注意你原来的代码没有缩进(所以在论坛上没有显示为代码),而且and
和or
是用来组合表达式的(比如,判断某些东西是True
还是False
)。所以你应该是想写if integer1 < 1 or integer2 < 1:
。
1
这不是逻辑运算符在Python或编程中一般是怎么工作的。
while i <= integer1 and integer2 :
在Python中,integer2
是一个独立的逻辑表达式,它总是为真。你可以试试这样写:while i <= integer1 and i <= integer2
3
试着一步一步来,把你的任务拆分成简单的步骤。在你的例子中,可以这样做:
- 获取第一个数字
- 获取第二个数字
- 进行计算
这些步骤还可以进一步拆分:
- 获取第一个数字:
- 从用户那里获取数字
- 如果数字不合适,就重复这个过程
...
这样你就能明白,验证的过程不应该放在重复的循环里面。
还有一个小建议:单独测试每一步。这样你会发现 if integer1 or integer2 < 1
或者 while i <= integer1 and integer2
的效果可能和你想的不一样。