python中的and、or和for循环

本文介绍了Python中的逻辑运算符and和or的用法,以及random模块的使用。讲解了如何利用and和or进行多条件判断,并给出了if条件判断表达式的习题。接着详细阐述了for循环的原理,包括range函数和enumerate的使用,并提供了两个for循环习题。最后,提到了两个编程练习,涉及个人所得税计算和石头剪子布小游戏的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 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('不是34的倍数')

方法2:

if num % 3 == 0:
    if num % 4 == 0:
        print('34的倍数')
    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  电脑赢  1decue = 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  是三场都走一遍,


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值