问题描述
所以我制作了这段代码来检查整数是否可以不经休息地进行划分,以及它的工作原理。 但我需要做出改变才能让它发挥作用。我真的只是想了解为什么这个小小的变化完全颠倒了我的代码的结果。这是工作代码
x = input("Erster Teiler")
y = input("Zweiter Teiler")
z = int(x)%int(y)
z1 =int(y)%int(x)
if z == 0 or z1 == 0:
print("teilbar")
else:
print("nicht teilbar")
我在这个练习中的第一次尝试是完全相反的。如果我输入两个不能相除的数字,它 说它们是可分的。 我只想知道是什么让这些代码有所不同。 正如你所看到的,我所做的只是改变了我的第一个 if 条件的前提。
x = input("Erster Teiler")
y = input("Zweiter Teiler")
z = int(x)%int(y)
z1 =int(y)%int(x)
if z or z1 == 0:
print("teilbar")
else:
print("nicht teilbar")
解决方法
查看 python 文档中关于真值测试的部分
https://docs.python.org/3/library/stdtypes.html
复制一些文档
真值测试
可以测试任何对象的真值,用于 if 或 while 条件或作为以下布尔运算的操作数。
默认情况下,一个对象被视为真,除非它的类定义了一个返回 False 的 __bool__()
方法或一个返回零的 __len__()
方法,当与对象一起调用时。以下是大多数被认为是错误的内置对象:
-
常量定义为假:无和假。
-
任何数字类型的零:0,0.0,0j,Decimal(0),Fraction(0,1)
-
空序列和集合:''、()、[]、{}、set()、range(0)
除非另有说明,否则具有布尔结果的运算和内置函数总是返回 0 或 False 表示假,返回 1 或 True 表示真。 (重要的例外:布尔运算 or 和 and 总是返回其操作数之一。)
if z or z1 == 0:
正在测试 z
数字类型是否除 0
之外的任何值都被评估为真。
我认为你的第一个代码是正确的。在第二个代码中 z 没有任何条件,因此我无法返回 true 或 false 来执行 if 语句。语法错误