自用Python学习总结

import random
Xing=['孙','张','李']
Ming=['三']
studentname=[]
for i in range(10):
    name=random.choice(Xing)+random.choice(Ming)
    studentname.append(name)
print(studentname)

location=[]
start=0
while True:
        try:
            location.append(studentname.index('张三',start))
            start=studentname.index('张三',start)+1
        except:
            break
print(location)

一、数据类型

1.运算符:

a.算数运算符:加减乘除,除法中%取模,

b.比较运算符==,!=,>,<

c.逻辑运算符

2.常用数据类型

a.字符串''

b.列表[],列表可以有很多处理,如升序降序,增加,在列表索引等

c.元组()

d.字典{}

二、流程控制

1.选择结构if

a.单分支

b.双分支

c.多分支

例题思路:

2.循环结构

a.for(for循环嵌套编写九九乘法表)

b.while

c.break 和 continue

例题思路:关于累加

三、函数与模块

1.函数

a.函数内置

b.自定义函数

 再看一遍也是没有思路的程度:

注意:已知列表那,定义中的形参并不只是刻板印象中的一个数,可以是一个列表,从变量定义就可以看出来a=range(100)

后面一直变化值的变量需要初始化

def A(x):
    B=[]
    s=0
    for i in x:
        s=s+i
        B.append(s)
    return B
a=range(101)
A(a)

2.模块

a.直接调用

第一章课后思路总结:

 第一题思路:不同的阶段有不同的税率,且使用累进超额计税。

最简单的写法,每一个if都可以拥有一个相应的return

def A(income):
    if  income>=1 and income<=5000:
        taxrate=0.00
        return (income-1)*0
    
    elif income>5000 and income<=8000:
        taxrate=0.03
        return (income-5000)*taxrate+(5000-1)*0
    
    elif income>8000 and income<=17000:
        taxrate=0.10
        return (income-8000)*0.1+(8000-5000)*0.03+(5000-1)*0
    
    elif income>17000 and income<=30000:
        taxrate=0.20
        return (income-17000)*0.2+(170000-8000)*0.1+(8000-5000)*0.03+(5000-1)*0
        
    elif income>30000 and income<=40000:
        taxrate=0.25
        return (income-30000)*0.25+(30000-17000)*0.2+(170000-8000)*0.1+(8000-5000)*0.03+(5000-1)*0
        
    elif income>40000 and income<=60000:
        taxrate=0.30
        return (income-40000)*0.3+(40000-30000)*0.25+(30000-17000)*0.2+(170000-8000)*0.1+(8000-5000)*0.03+(5000-1)*0
        
    elif income>60000 and income<=85000:
        taxrate=0.35
        return (income-60000)*0.35+(60000-40000)*0.3+(40000-30000)*0.25+(30000-17000)*0.2+(170000-8000)*0.1+(8000-5000)*0.03+(5000-1)*0
    
    else:
        taxrate=0.45
        return (income-85000)*0.45+(85000-60000)*0.35+(60000-40000)*0.3+(40000-30000)*0.25+(30000-17000)*0.2+(170000-8000)*0.1+(8000-5000)*0.03+(5000-1)*0
print(A(660000))

第二题

#1.随机生成一个随机数
import random
a=random.randint(1,100)
print('程序已就绪,随机数已生成')
#2.用户自己要输入一个数,且这个过程要循环6次
#3.比较输入的数与生成的随机数大小,且这个过程要循环6次
#4.猜对了需要终止
#5.每次循环后需要提示剩余次数,六次猜错后需要展示正确答案
for i in range(1,7):
    s=int(input('请输入您猜测的数'))
    if s>a:
        print('该猜测数偏大')
    elif s==a:
        print('恭喜您,猜对了')
        break
    else:
        print('该猜测数偏小')
    print('您还有',6-i,'次机会')
if 6-i==0:
    print('正确答案为',a) 

除了for循环,也可以用while True(一直循环,可以回到起始位置,需要与break配合使用) 

import random
while True:
    target = random.randint(0, 100)
    x = int(input('贴纸,你认为这个数是:'))
    while True:
        if x < target:
            x = int(input('小了帖子再猜:'))
        elif x > target:
            x = int(input('大了贴纸再猜:'))
        else:
            break

    choice = input('帖子你还想猜猜看吗?(哟西/哒咩)')
    if choice == '哒咩':
        break

print('欢迎好帖子下次来玩')
————————————————
版权声明:本文为CSDN博主「Neroiiey」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Python_XTyyds/article/details/121410962

第三题:注意数学思想,先判断有无根,if结构,return

import math
def B(a,b,c):
    delta=b**2-4*a*c
    if delta==0:
        print('此方程有一个实数根')
        return -b/(2*a)
        
    elif delta>0:
        print('此方程有两个实数根')
        X1=(-b+math.sqrt(delta))/(2*a)
        X2=(-b-math.sqrt(delta))/(2*a)
        return X1,X2
    else:
        print('此方程无解')
        return False
        
print(B(1,3,1))

 第四题:

a=int(input('请输入年份'))
if a%400==0:
    print(a,'年是闰年')
elif a%4==0 and a%100!=0:
    print(a,'年是闰年')
else:
    print(a,'年不是闰年')

第五题:

#生成随机人名列表
#找到张三,查找索引,list.index
#相同元素怎么查位置
import random
Xing=['孙','张','李']#随机的姓
Ming=['三']#随机的名
studentname=[]#随机产生的姓名准备的空列表,因为会产生多个值

for i in range(3):
    name=random.choice(Xing)+random.choice(Ming)
    studentname.append(name)
print(studentname)#随机姓名列表产生完毕

#以下开始查找位置索引,由于随机姓名可能会重复,
#索引只能读取第一个元素的位置,由于需要找出所有位置,则可能会出现多个数
#准备好空列表。注意list.index(值,起始位,终止位),在读完第一个元素后
#利用判断,跳过该数继续索引

#使用try和except是为了处理如果随机列表中并未出现张三
location=[]
start=0#规定这个是因为之后start的值会不断变化

#注意此处循环,A---B----B----B可以转换为if判断下的AB---AB----AB-----AB
while True:
    if len(location)==0:
        try:
            location.append(studentname.index('张三',start))
            start=studentname.index('张三',start)+1
        except:
            break
       
    else:
            try:
                location.append(studentname.index('张三',start))
                start=studentname.index('张三',start)+1
            except:
                break

print(location)

其中try except是异常处理方法,参考的处理方式来源于qq_491078787:http://t.csdn.cn/SPASJ

import random
Xing=['孙','张','李']
Ming=['三']
studentname=[]
for i in range(10):
    name=random.choice(Xing)+random.choice(Ming)
    studentname.append(name)
print(studentname)

location=[]
start=0
while True:
        try:
            location.append(studentname.index('张三',start))
            start=studentname.index('张三',start)+1
        except:
            break
print(location)

似乎此处不用if判断也是可以达到执行目标的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值