首页 > 解决方案 > 这里有什么不同?我只是不支持它

问题描述

所以我做了这个代码来检查整数是否可以在没有休息的情况下被分割,并且它的工作。但我需要做出改变,这样才能奏效。我真的只是想了解为什么这个小改动完全颠倒了我的代码的结果。这是工作代码

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")

我对这个练习的第一次尝试是做完全相反的。如果我输入 2 个不能除的数字,则表示它们是可除的。我只想知道这些代码有什么不同。正如你所看到的,我所做的只是改变了我的第一个 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")

标签: pythonif-statementintegerdivision

解决方案


查看 python 文档中关于真值测试的部分

https://docs.python.org/3/library/stdtypes.html

复制一些文档

真值测试

可以测试任何对象的真值,用于 if 或 while 条件或作为以下布尔运算的操作数。

默认情况下,一个对象被认为是真,除非它的类定义了一个__bool__()返回 False 的__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被评估为真。


推荐阅读