1. if判断表达式
昨天简单的了解了if条件判断表达式的使用,然而,在解决复杂的判断问题时,很容易出现条件表达式使用错误的情况,因此有必要花点时间来巩固一下。举个例子,当出现如下代码时:
price = 150000 if price < 400000: print('普通车') if price < 1200000: print('豪华车') if price < 25000000000: print('超跑')
很多入门者会以为运行结果是 普通车,但是运行结果却是:
普通车 豪华车 超跑 Process finished with exit code 0
这是对if判断语句的理解不全面导致的,只有出现if...else...或者if...elif...亦或是if...elif...else...结构,各判断条件是互斥关系时,才会只出现一个运行结果。上述代码各个if语句之间,仅仅是看着类似,其实毫无关系,程序正常由上到下依次执行。我们可以通过编写一个计算个人所得税的小程序,来加深对其的理解。
要求:扣除三险一金后月收入 = 工资 - 三险一金。应纳税所得额=扣除三险一金后月收入-扣除标准。应纳个人所得税税额=全月应纳税所得额×适用税率-速算扣除数。扣除标准3500元/月,五险一金缴纳的基准工资上限为7662 ,超过就按照7662缴纳,每个月个人应缴22.5%的五险一金。
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
salary = input('请输入您的工资金额')
if salary.isdigit():
salary = int(salary)
if salary >= 7662:
a = 7662 * 0.225
else:
a = salary * 0.225
b = salary - a
if b > 3500:
c = b - 3500
# a 为三险一金金额
# b 为扣除三险一金后的月收入
# c 为应纳税所得额
if c <= 1500:
d = c * 0.03
elif c <= 4500:
d = c * 0.1 - 105
elif c <= 9000:
d = c * 0.2 - 555
elif c <= 35000:
d = c * 0.25 - 1005
elif c <= 55000:
d = c * 0.3 - 2755
elif c <= 80000:
d = c * 0.35 - 5505
else:
d = c * 0.45 - 13505
print('您应该缴纳的税额为%s' % d)
else:
print('您不需要缴税')
else:
print('您的输入有误')
2. 简单的数字操作
1. 判断操作
怎么判断一个数为奇数或偶数?
num = input('请输入一个整数') num = int(num) if num % 2 == 0: print('这是一个偶数') else: print('这是一个奇数')
怎么判断一个数既是3的倍数又是4的倍数?
num1 = input('请输入一个整数') num1 = int(num1) if num1 % 3 == 0 and num1 % 4 == 0: print('这个数字既是3的倍数也是4的倍数') else: print('这个数字不符合要求')
怎么判断一个数是5或者6的倍数?
num2 = input('请输入一个整数') num2 = int(num2) if num2 % 5 == 0 or num2 % 6 == 0: print('这个数字是5或6的倍数') else: print('这个数字不符合要求')从上述代码中看出,可以用and/or以 “if+条件1 and/or 条件2“的形式进行判断语句的编写,不难看出and表示"而且"的意思,or表示"或者"的意思。在使用and时,两个条件只要有一个为假,结果便为假,而使用or时,两个条件只要有一个为真,则结果即为真。
2. 随机数
在使用随机数前,我们需要先了解一下框架/工具包的概念。简单来说,我们可以通过使用某个框架或者导入某个工具包来方便我们实现某个功能,省去大量时间和代码量(在Python中通过from...import...来实现)。比如我们可以通过导入随机整数包randint达到使用几行代码便可以产生随机整数的目的。比如要产生一个0-100之间的随机整数,我们可以编写如下代码:
from random import randint num1 = randint(0, 101) print('产生的随机整数为 %s ' % num1)
接下来通过写一个猜拳游戏对if语句和随机数进行练习,代码如下:
from random import randint computer_num = randint(1, 3) user_num = input('请输入您的数字') user_num = int(user_num) print(computer_num) if user_num - computer_num == -1 or user_num - computer_num == 2: print('你赢了') elif user_num - computer_num == 0: print('平局') else: print('你输了')
值得注意的是,计算机中的随机数都是伪随机数,是由计算机内部的算法计算出来的。不清楚什么是伪随机数的小伙伴可以点击以下链接进行查看。
伪随机数:https://baike.baidu.com/item/%E4%BC%AA%E9%9A%8F%E6%9C%BA%E6%95%B0/104358?fr=aladdin
3. for循环
for循环一般写为 for + 变量名 + in + 可迭代对象:,比如常见的 for index in range(10): 就表示循环十次。for循环最简单的应用便是统计,比如,统计我们要统计一串字符串中数字的个数,可以这样写:
count = 0 content = "abc123def01ght456" for x in content: if x.isdigit(): count += 1 print("总共有{}个数字".format(count))
通过完成一个人机小游戏来进行for循环和if语句的练习:
要求:100以内(包括100)的猜数字游戏:三局两胜。最多比赛三次,谁先胜利2次就输出 ***胜利,不再进行第三次比试,三次都比完,没人胜利则平局。规则:谁的数字大谁胜利,相同则平手。
from random import randint user_win = 0 computer_win = 0 tied = 0 for idx, x in enumerate(range(3)): print("---------------第{}局开始---------------".format(idx+1)) user_num = input("请用户输入一个数字") user_num = int(user_num) computer_num = randint(1, 100) if user_num > computer_num: result = "用户胜利了" user_win += 1 elif user_num == computer_num: result = "平局" tied += 1 else: result = "电脑胜利了" computer_win += 1 print("电脑的数是{},用户的数是{},{}".format(computer_num, user_num, result)) print("---------------第{}局结束---------------\n\n".format(idx + 1)) if user_win == 2: print("*" * 30+"\n最终结果:用户赢了两次!Game Over\n"+"*" * 30) break elif computer_win == 2: print("*" * 30+"\n最终结果:电脑赢了两次!Game Over\n"+"*" * 30) break elif tied == 3: print("*" * 30+"\n最终结果:平局\n"+"*" * 30) elif tied + user_win == 3: print("*" * 30+"\n最终结果:用户赢了,平局{}次\n".format(tied)+"*" * 30) elif tied + computer_win == 3: print("*" * 30+"\n最终结果:电脑赢了,平局{}次\n".format(tied)+"*" * 30)