python 整除及余数_跟我一起学python | 探究09

55e5eb4b6e5896f3febf9648690c36f1.png

好友和我说,编程的核心目标是解决问题。只有把解决问题作为编程学习的动力,才能保持编程学习的长久兴趣。

好,我们先确定一个简单的问题。这个问题是:如果我输入一个整数,如何让程序判断这个整数是奇数还是偶数?如果是奇数,最后输出:i是奇数;如果是偶数,最后输出:i是偶数。

这个问题,让我们借助人脑来解决,方法便是将这个整数除以2,如果没有余数,即能够整除,那么该整数就是偶数,如果有余数,不能整除,该数就是奇数。

这个解决问题的思考过程,用图来表示:

510be32f4d317fba8fab92e2da23740b.png

可以看出解决问题的过程,经过“判断”,然后依据判断的结果选择不同执行方向。这就是编程结构中的分支结构(判断后选择)。

在python的分支结构中,代码书写的基本范式如下图:

8009ec3fc79ea7391614de0338595fd7.png
i=input()
i=int(i)
if i能被2整除 :
    print(i,"是偶数")

那如何用数学公式来表示“i能被2整除”呢?在python中,能不能整除,用“取模运算”。它的运算符为%,形式为a%b,其中a和b都是整数。计算规则为,计算a除以b,得到的余数就是取模的结果。如果能被2整除,余数就是0,取模的结果也为0;如果不能被2整除,余数就不等于0,取模的结果也不为0。(整除的数学符号是"%",“i能被2整除”就是“i % 2”后的结果“等于”“0”,——这段表述有问题,删除。)在程序编写中“=”表示赋值,“等于”则用符号“==”表示。“i能被2整除”就应该写成:“i % 2== 0”。

好,我们可以完整地来编写这个代码了。
【尝试】

i=input() #输入数字
i=int(i)  #将输入的字符串型转换成整数型
if i % 2 == 0:
   print(i,"是偶数")

运行程序,我输入6,输出“6 是偶数”

但是如果我输入7,则没有输出。这个程序只完成了初定的一半任务。奇数是不能被2整除,我们可以理解为:“i % 2 不等于 0”。不等于用"!="符号表示,写成:“i % 2 != 0”
【尝试】

i=input()
i=int(i)
if i % 2 == 0:
   print(i,"是偶数")
if i % 2 != 0:
   print(i,"是奇数")

运行程序,输入7,输出“7 是奇数”;输入6,输出“6 是偶数”完全正确!
对于正整数而言,偶数和奇数之间是“矛盾关系”。

f8f163fe3990a54d3dfa8b3c7bc2081a.png

我们可以运用python中的“if……else……”来编写这个程序。

7d74427848a7b85bcd5ae439fd0fc26c.png

只用一个单词else就行,这个else在这段程序里的意思就是:“i不能被2整除”。
【尝试】

i=input()
i=int(i)
if i % 2 == 0:
    print(i,"是偶数")
else:
    print(i,"是奇数")

如果我们输入一个整数,需要判断输入的整数是正整数还是负整数,下面程序的编写是否正确呢?

i=int(input())
if i>0:
    print(i,"是正整数")
else:
    print(i,"是负整数")

运行程序,输入233,输出“233 是正整数”;输入-278,输出“-278 是负整数”;这个程序有没有问题?有!当然有!因为如果我们输入0,输出的结果是“0 是负整数”,这个结果在数学上显然是错误的。正整数和负整数之间不是“矛盾关系”,而是“反对关系”。

ede5bffa9fd5239d4343255e4e3c7d19.png

正因为正整数和负整数之间是反对关系,不是矛盾关系,所以不能简单地使用else来编写程序。我们可以修改一下这个程序。

i=input()
i=int(i)
if i > 0:
   print(i,"是正整数")
if i == 0:
   print(i,"是0")
if i < 0:
    print(i,"是负整数")

从上面的两个例子可以看出,如果概念之间是矛盾关系,在判断以后一般形成“两分支”,在程序编写中使用“if……else……”编写范式;如果概念之间是反对关系、并列关系等,一般形成“多分支”,就不能运用“if……else……”编写范式,而要使用:“if……elif……elif……elif……”编写范式。

多路分支

if 条件1:
语句
elif 条件2:
语句
elif 条件3:
语句

【尝试】

i=input()
i=int(i)
if i > 0: #条件1
   print(i,"是正整数")
elif i == 0: #条件2
   print(i,"是0")
elif i < 0: #条件3
    print(i,"是负整数")

运行结果,完全正确!

如果,我输入一个数,可能是整数,也可能是小数,然后判断输入的数是正数、负数,还是0,这个程序如何编写?

这个问题的关键在于输入的不只是整数,所以我们在数据类型上要选择浮点数(float)
【尝试】

i=input()
i=float(i) #将输入的值转换成浮点数型
if i > 0: #条件1
   print(i,"是正数")
elif i == 0: #条件2
   print(i,"是0")
elif i < 0: #条件3
    print(i,"是负数")

运行,完全正确!

下面这段尝试程序,也是“多路分支”。

i=input()
i=float(i)
if i>=90:
    print(i,"优秀")
elif i>=80:
    print(i,"良好")
elif i>=70:
    print(i,"中等")
elif i>=60:
    print(i,"及格")
else:
    print(i,"不及格")

版权声明:本文为weixin_39791349原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。