2020-02-20 2.1条件,2.2range函数 2.3循环

image.png

在条件为假的时候,可执行:else语句。


image.png

如果大于等于3的时候,可执行:elif....else


image.png
x = int(input("input x: "))
if x <= 10:
    result = x * 0.1
elif x < 20:
    result = x * 10
print(result)
#等价于
x = int(input("input x: "))
if x <= 10:
    result = x * 0.1
elif x > 10 and x < 20:
    result = x * 10
print(result)

x if E else y
如果条件为真,则E赋值给x
如果条件为假,则y赋值给x

2.2range函数 左闭右开


image.png

默认的步长为1,则可以写成range(start,end)
默认的步长为1,起始值为0,可以写成range(end)

>>> list(range(3,11,2))
[3, 5, 7, 9]
>>> list(range(3,11))
[3, 4, 5, 6, 7, 8, 9, 10]
>>> list(range(11))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

2.3循环


image.png

image.png
for i in range(3,11,2):
    print(i,end = '')
3579
for i in range(3,11,2):
    print(i,end = ' ')
3 5 7 9
for i in range(3,11,2):
    print(i)
3
5
7
9

for循环在遍历序列类型对象时有两种遍历的方式:
一种就是这样直接遍历每一个序列项,称为序列项迭代。
第二种是遍历序列中每一个元素的索引,通过索引访问元素,称为索引迭代。序列索引从0开始。通过索引访问元素的方式是sequence[index]

>>> s = 'python'
>>> for i in range(lens(s)):
             print(s[i],end = ' '])
image.png

image.png

欧几里得法(辗转相除法)
这条算法基于一个定理:两个正整数a和b(a>b),它们的最大公约数等于a除以b的余数c和b之间的最大公约数。比如10和25,25除以10商2余5,那么10和25的最大公约数,等同于10和5的最大公约数。

基于这条定理:

首先,我们先计算出a除以b的余数c,把问题转化成求出b和c的最大公约数;然后计算出b除以c的余数d,把问题转化成求出c和d的最大公约数;再然后计算出c除以d的余数e,把问题转化成求出d和e的最大公约数……以此类推,逐渐把两个较大整数之间的运算简化成两个较小整数之间的运算,直到两个数可以整除,或者其中一个数减小到1为止。

x = int(input("输入第一个数字x: "))
y = int(input("输入第二个数字y: ")) 
if x < y:
   x, y = y, x
while  x % y !=0:  
   r = x % y
   x = y
   y = r
print(x, ',' , y,  ',', r)
print('result is' ,y)
'''
输入第一个数字x: 15
输入第二个数字y: 25
10 , 5 , 5
result is 5
'''

或者

def second_way(x, y):
    """
    第一种方法:欧几里得算法----辗转相除法
    :param x: 第一个数
    :param y: 第二个数
    :return: 最大公约数
    """
    # 如果最终余数为0 公约数就计算出来了
    while y!=0:
        r = x % y
        x = y
        y = r
    return x
# 用户输入两个数字
x = int(input("输入第一个数字x: "))
y = int(input("输入第二个数字y: ")) 
print(x, ',' , y,  ',', r)
print( x,"和", y,"的最大公约数为", second_way(x, y))
'''
输入第一个数字x: 15
输入第二个数字y: 25
15 , 25 , 5
15 和 25 的最大公约数为 5
'''

或者 穷举法(一个一个除)
这个比较好理解。因为a,b两个数的最大公因数肯定小于等于相对更小的那个数,所以从两个数中较小数开始由大到小列举,直到找到公约数立即中断列举,得到的公约数便是最大公约数 。
def third_way(x, y):
"""
第三种方法:一个一个除
:param x: 第一个数
:param y: 第二个数
:return: 最大公约数
"""
# 保证x>y
if x < y:
x, y = y, x
for i in range(1,y+1):
if (x%i==0) and (y%i==0):
value = i;
return value

用户输入两个数字

x = int(input("输入第一个数字x: "))
y = int(input("输入第二个数字y: "))
print(x, ',' , y, ',', r)
print( x,"和", y,"的最大公约数为", third_way(x, y))
'''
编程统计1元人民币兑换为1分,2分,5分的所有兑换方案个数
1元可以兑换成20个5分, 以i表示
1元可以兑换成50个2分,以j表示
1元可以兑换成100个1分,以k表示

i, j, k = 0, 0, 0
count = 0
for i in range(21):
    for j in range(51):
        k = 100-5*i-2*j
        if k >= 0:
            count +=1
print(' count = ', count)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 小学奥数的知识点约 80个,总体上可以分为五大类。数论和行程问题是小 学奥数学习中的重点也是难点。 一、 计算能力...
    ADolphin阅读 8,379评论 1 3
  • 小学奥数其实很简单,以下是这六个部分的知识点! 1 第一部分(知识点1-6) 2、年龄问题的三个基本特征: ①两个...
    小一哥阅读 1,374评论 0 3
  • 小升初的过程中,竞赛成绩能起到相当大的作用,谈到竞赛就离不开奥数。以下是小学奥数题知识点大汇总: 1.和差倍问题 ...
    沪江中小幼阅读 1,152评论 0 7
  • 逝者如斯夫,不舍昼夜。不知不觉,宝宝已经两周五了。看着她一天天懂事我心里倍感欣慰,看着她一天天长大,我倍感自豪...
    大雨落在横山上阅读 319评论 0 0
  • 上学的时候,总是等着放假。 现在上班了,也总是等着放假。 我这样懒惰的人,为什么要出现在这种困难的生活里? 小时候...
    与乱阅读 234评论 0 0