结果缺少一些数字

时间:2019-06-10 02:52:56

标签: python

当我将数字从120键入1时,结果缺少一些数字,例如:21、27,...

import math
j=[] #list

intInputA=int(input("Nhập khoảng bắt đầu: "))
intInputB=int(input("Nhập khoảng dừng: "))
print("The numbers between",intInputA,"and",intInputB,"are:")

if(intInputA>intInputB):
    print("Sai dữ liệu rồi cậu! ")
else:
    for i in range(intInputA, intInputB + 1): 
        if(i%3==0): 
            a = math.sqrt(i) 
            if(a * a != i): 
                j.append(str(i))
print(','.join(j))

2 个答案:

答案 0 :(得分:0)

我不确定为什么您的方法无法按预期运行,但是您可以尝试以下方法:

import math
j=[] #list

intInputA=int(input("Nhập khoảng bắt đầu: "))
intInputB=int(input("Nhập khoảng dừng: "))
print("The numbers between",intInputA,"and",intInputB,"are:")

if(intInputA>intInputB):
    print("Sai dữ liệu rồi cậu! ")
else:
    for i in range(intInputA, intInputB + 1):
        if(i%3==0):
            a = math.sqrt(i)
            if(math.pow(i,2) != i) and (int(a+0.5) ** 2 != i):
                j.append(str(i))
print(','.join(j))

打印输出:

    ('The numbers between', 1, 'and', 120, 'are:')
3,6,12,15,18,21,24,27,30,33,39,42,45,48,51,54,57,60,63,66,69,72,75,78,84,87,90,93,96,99,102,105,108,111,114,117,120

请注意此处的更改:if(math.pow(i,2) != i) and (int(a+0.5) ** 2 != i)

答案 1 :(得分:0)

我只是更改了我的代码。我将代码从float(for sqrt)转换为int。代码还可以。

import math
j=[] #list

intInputA=int(input("Nhập khoảng bắt đầu: "))
intInputB=int(input("Nhập khoảng dừng: "))
print("The numbers between",intInputA,"and",intInputB,"are:")

if(intInputA>intInputB):
    print("Sai dữ liệu rồi cậu! ")
else:
    for i in range(intInputA, intInputB + 1):
        if(i%3==0): 
            a = int(math.sqrt(i)) 
            if(a * a != i): 
                j.append(str(i))
print(','.join(j))

enter image description here