编写一个程序,提示用户输入两个整数,每个整数都更大 程序将显示和计算两个整数所具有的除数的数量 共同。 其他要求: 如果整数小于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
答案 0 :(得分:3)
尝试一步一步地做。并尝试将您的任务分解为简单的步骤。在您的示例中,它可能类似于:
这可以进一步细分
...
通过这种方式,您可以看到验证不应该在while循环中。
另一个提示:分别测试每个步骤。通过这种方式,您会发现if integer1 or integer2 < 1
或while 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)。
请注意,您的原始代码未缩进(因此未在论坛中显示为代码,and
和or
组合了表达式(例如,True
或False
)。所以你的意思是if integer1 < 1 or integer2 < 1:
。
答案 4 :(得分:0)
您的代码实际上非常接近,但您遇到了一些问题:
integer1
和integer2
(虽然我怀疑您知道,因为您只是打印替换值)。i
小于integer1
,integer2
也不为零”。您还可以通过以下几种方式改进代码:
for
循环代替while
循环,使用Python优秀的可迭代支持。以下是如何确保用户键入的是整数:
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!"
此处的while
,try
和if
语句可确保在代码继续之前强制用户输入有效的整数。以下是用户看到的示例:
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 :