检查数字是否是第二个数字的倍数

Vik*_*nti 3 python numbers

我想检查一个数字是否是秒的倍数.以下代码有什么问题?

def is_multiple(x,y):
    if x!=0 & (y%x)==0 :
       print("true")
    else:
       print("false")
    end
print("A program in python")
x=input("enter a number :")
y=input("enter its multiple :")
is_multiple(x,y)
Run Code Online (Sandbox Code Playgroud)

错误:

TypeError: not all arguments converted during string formatting
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 10

您正在使用二进制AND运算符 & ; 你想要布尔AND运算符,and:

x and (y % x) == 0
Run Code Online (Sandbox Code Playgroud)

接下来,您希望将输入转换为整数:

x = int(input("enter a number :"))
y = int(input("enter its multiple :"))
Run Code Online (Sandbox Code Playgroud)

你会得到一个NameError对于end一行的表情,那滴干脆,Python并不需要这些.

你可以测试一下 x ; 在布尔上下文(如if语句)中,如果为0,则数字被视为false:

if x and y % x == 0:
Run Code Online (Sandbox Code Playgroud)

你的函数is_multiple()应该只返回一个布尔值; 将打印留给程序执行所有其他输入/输出的部分:

def is_multiple(x, y):
    return x and (y % x) == 0

print("A program in python")
x = int(input("enter a number :"))
y = int(input("enter its multiple :"))
if is_multiple(x, y):
    print("true")
else:
    print("false")
Run Code Online (Sandbox Code Playgroud)

如果使用条件表达式,最后一部分可以简化:

print("A program in python")
x = int(input("enter a number :"))
y = int(input("enter its multiple :"))
print("true" if is_multiple(x, y) else "false")
Run Code Online (Sandbox Code Playgroud)