一 and 和 or
and 和 or 是python的两个逻辑运算符,可以使用and , or来进行多个条件内容的判断。
and:只要有一个条件为假,其结果为假.
or: 只要有一个条件为真,其结果为真
二 random模块
模块就是 框架,工具,包,插件从random包中引出随机整数的办法
from random import randint
随机获取0到3之间的整数
计算机当中的随机数也成为“伪随机数”
计算机找随机数是根据计算机内部的算法来找的
number = randint(0, 3) # 左右都包含
三 if 条件判断表达式 习题
1.问题一:怎么判断输入的数字是偶数?
number = input('请输入一个整数:') number = int(number) if number % 2 == 0: print('偶数') else: print('奇数')
2.怎么判断一个数字既是3的倍数又是4的倍数
方法1:
if num % 12 == 0: print('既是3的倍数也是4的倍数') else: print('不是3和4的倍数')
方法2:
if num % 3 == 0: if num % 4 == 0: print('是3和4的倍数') else: print('不是倍数') else: print('不是3的倍数')
方法3:
if num % 3 == 0 and num % 4 == 0:
四 for 循环
用途:想要重复执行某件事情
for index in range(1,10,2):
print(index)
1 . range后面的值表示循环的次数,其中,第一个值表示循环开始的位置,第二个值表示循环结束的位置,第三个值表示增量。这里包括左边的值但是不包括右边的值。
2. enumerate的用法:
注意a,b的取值,都是从零开始
for a, b in enumerate(range(3)):
print(a, b)
输出:0 0
1 1
2 2
for a, b in enumerate(range(3)):
print(a+1, b)
输出:
1 0
2 1
3 2
for a, b in enumerate(range(3)):
print(a+1, b+1)
输出:
1 1
2 2
3 3
习题1:或许1到100之间所有数字之和
x = 0 for i in range(101): x += i print(x)
习题2:获取1到100之间,所有奇数之和与5的倍数之和的差
x = 0 z = 0 for i in range(1, 101): if i % 2 == 1: x += i if i % 5 == 0: z += i print(x - z) # 1450
五 两道练习题
1.计算个人所得税
计算方法
扣除标准3500元/月(2011年9月1日起正式执行)(工资、薪金所得适用)
100000
22500
2250 10000
7662 * 0.225 工资100000
7662 * 0.225 工资8000
5000 * 0.225 工资 5000
三险一金 = 工资 * 比例 0.225
7750
扣除三险一金后月收入 = 工资 - 三险一金
7750 - 3500
应纳税所得额=扣除三险一金后月收入-扣除标准
应纳个人所得税税额=全月应纳税所得额×适用税率-速算扣除数
个税 =
养老保险:单位20%,个人8%
医疗保险:单位8%,个人2%
失业保险:单位1%,个人0.5%
生育保险:单位0.6%,个人不用缴费
工伤保险:单位1%,个人不用缴
住房公积金:单位5%-12%,个人5%-12%,按12%算、
三险一金缴纳 的基准工资上限为7662 ;超过,就按照7662缴纳;
2011年9月1日起调整后的7级超额累进税率
全月应纳税所得额 税率 速算扣除数(元)
全月应纳税所得额不超过1500元 3% 0
全月应纳税所得额超过1500元至4500元 10% 105
全月应纳税所得额超过4500元至9000元 20% 555
全月应纳税所得额超过9000元至35000元 25% 1005
全月应纳税所得额超过35000元至55000元 30% 2755
全月应纳税所得额超过55000元至80000元 35% 5505
全月应纳税所得额超过80000元 45% 13505
gongzi = int(input('请输入工资:')) if gongzi < 7662: sanXian = gongzi * 0.225 else: sanXian = 7662 * 0.225 yingNaShui = gongzi - sanXian - 3500 shuiLv = 0 kouChu = 0 if yingNaShui < 0: print('loser') else: if yingNaShui <= 1500: shuiLv = 0.03 kouChu = 0 elif yingNaShui <= 4500: shuiLv = 0.1 kouChu = 105 elif yingNaShui <= 9000: shuiLv = 0.2 kouChu = 555 elif yingNaShui <= 35000: shuiLv = 0.25 kouChu = 1005 elif yingNaShui <= 55000: shuiLv = 0.3 kouChu = 2755 elif yingNaShui <= 80000: shuiLv = 0.35 kouChu = 5505 else: shuiLv = 0.45 kouChu = 13505 geRenNaShui = yingNaShui * shuiLv - kouChu print(geRenNaShui)
2 石头剪子布小程序
先来一个简单版本的,用户输入,电脑随机输出,进行判定
# 0:石头, 1:剪子 2:布 # 3 + 3 + 3 =9种情况 # 1: 0 平局 3次 # 2: 1 输 2次 # 3; -1 赢得 2次 # 4: 2 赢得 1次 # 5: -2 输 1次 wo_de = int(input('输入你的数字:')) computer = randint(0, 2) print(computer) if wo_de - computer == 0: print('平') elif wo_de - computer == 1 or wo_de - computer == -2: print('输') else: print('赢了')
加一点难度:
提示用户输入,电脑随机也随机输出一个,比较两者的输赢。采用三局两胜制。
要求:每玩一局,输出赢家,写明这是第几局,最后判定最终结果。
from random import randint # 0 石头 1 剪子 2 布 # 1: 0 平局 3次 # 2: 1 电脑赢 2次 # 3: 2 电脑赢 1次 # 4: -1 玩家赢 2次 # 5: -2 电脑赢 1次 decue = 0 user_win = 0 computer_win = 0 for index, value in enumerate(range(3)): user_number = int(input("请输入数字")) computer_number = randint(0, 2) if user_number == 0: if computer_number == 0: print('第{}局平'.format(index + 1)) decue +=1 elif computer_number ==1: print('第{}局玩家赢'.format(index + 1)) user_win += 1 else: print('第{}局玩家输'.format(index + 1)) computer_win += 1 elif user_number == 1: if computer_number == 0: print('第{}局玩家输'.format(index + 1)) computer_win += 1 elif computer_number == 1: print('第{}局平'.format(index + 1)) decue += 1 else: print('第{}局玩家赢'.format(index + 1)) user_win += 1 else: if computer_number == 0: print('第{}局玩家赢'.format(index + 1)) user_win += 1 elif computer_number == 1: print('第{}局玩家输'.format(index + 1)) computer_win += 1 else: print('第{}局平'.format(index + 1)) print('---第{}局结束---'.format(index + 1)) # 我这样写比较复杂,代码较多,老师写的是我的简化版的 if user_win >= 2: print('最终玩家赢') elif computer_win >= 2: print('最终电脑赢') elif decue == 1 and user_win ==1 and computer_win == 1: # 一赢一输一平 # 我这个不用加index,因为他两数值都是1 肯定都是运行过的 print('最终平局') # 同样的 我的代码比较长, elif decue == 2 and user_win == 1: print('最终玩家赢') elif decue == 2 and computer_win == 1: print('最终电脑赢') else: # 三个平局 print('最终平局') # 这样写,如果按照这个思路,可以写,但是怎么写第几把谁赢了。 # 可以是实现的,按照老师写的那个.format 可以实现
以上代码有点繁琐,简化一下代码
from random import randint user_win = 0 computer_win = 0 deuce = 0 # index 代表编号, value代表值 # for a, b in enumerate('hello world'): # print(a, b) for index, value in enumerate(range(3)): user_number = input('请输入数字') user_number = int(user_number) computer_number = randint(0, 2) if user_number - computer_number == -1 or user_number - computer_number == 2: print('第{}局玩家胜'.format(value + 1)) user_win += 1 elif user_number - computer_number == 0: print('第{}局平局'.format(value + 1)) deuce += 1 else: print('第{}局电脑胜'.format(value + 1)) # 为什么是index不是value。 # 我试验了一下,发现两个都可以的,不相互影响。 # 直接用一个不行吗? 我试了直接用一个,也不影响 computer_win += 1 print('-----第{}局结束--------'.format(value + 1)) if computer_win == 2: print('电脑胜') break elif user_win == 2: print('玩家胜') else: if deuce == 1 and computer_win - user_win == 0 and value == 2: # # 1:平一局一胜一负 print('平局') elif deuce == 3: # 3:三平 print('平局') elif deuce == 2 and value == 2: # 2:平两局赢一局 if computer_win - user_win == 1: print('电脑胜') else: print('玩家胜') # value == 2 是三场都走一遍,