在条件为假的时候,可执行:else语句。
如果大于等于3的时候,可执行:elif....else
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函数 左闭右开
默认的步长为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循环
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 = ' '])
欧几里得法(辗转相除法)
这条算法基于一个定理:两个正整数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)