从零开始的python之旅(day3)
越学python越觉得其功能丰富,而且相对于c语言来说,python可能更适合新手入门,两个都是相通的,看自己对哪方面感兴趣吧
先让我们来对昨天作业收一下尾
BMI
x = float(input('请输入体重(kg)\n'))
y = float(input('请输入身高(m)\n'))
bmi = float(x / y ** 2)
if bmi < 18.5:
print('您的bmi为{0:.2f},国际指标偏瘦,国内指标偏瘦\n'.format(bmi))
elif bmi < 25:
if bmi < 24:
print('您的bmi为{0:.2f},国际指标正常,国内指标正常\n'.format(bmi))
else :
print('您的bmi为{0:.2f},国际指标正常,国内指标偏胖\n'.format(bmi))
elif bmi < 30:
if bmi < 28:
print('您的bmi为{0:.2f},国际指标偏胖,国内指标偏胖\n'.format(bmi))
else :
print('您的bmi为{0:.2f},国际指标偏胖,国内指标肥胖\n'.format(bmi))
else :
print('您的bmi为{0:.2f},国际指标肥胖,国内指标肥胖\n'.format(bmi))
score
score = float(input('请输入成绩\n'))
grade = ''
if score >= 60.00:
grade = 'D'
elif score >= 70.00:
grade = 'C'
elif score >= 80.00:
grade = 'B'
elif score >= 90.00:#这里老师写错了应该
grade = 'A'
print(grade)
#grade为D,因为它满足第一个if,后面就没有elif了
然后今天学的主要内容就是,python中的函数调用以及递归,其实来说,和c语言没多大差距,但是函数调用时还是有点不同的,类似c语言中,如果你要在函数中改传入值时你可能需要指针来做,比如以下代码
#include<stdio.h>
int solve(int a){
a ++;
}
int main(void)
{
int a = 0;
solve(a);
printf("%d",a);
}
并不会改变a的值,所以输出的值还是0,但是我们运用指针,则可以通过地址修改a的值也就是这样
#include<stdio.h>
int solve(int *a){
(*a) ++;
}
int main(void)
{
int a = 0;
solve(&a);
printf("%d",a);
}
我讲这个是为了引入一个概念:地址,指针指向的是改变量储存的地址,直接对地址内容进行操作,会对原来的值起作用,也就是这样就可以修改a的值,这样以后输出就是1了,那这和python有什么关系呢?看看这段python代码吧
def addInterest(balances,rate):
balances = balances *(1+rate)
def main():
amounts = 1000
rate = 0.05
addInterest(amounts,rate)
print(amounts)
main()
以上代码输出还是1000,函数内的值没改变,那有人就会问了,那我用和c语言类似方法指针可不可以?
而python中并没有指针这个概念好像,day3目前没学到以后学到了我再回来改,也就是说永远无法像c那样做到函数内修改,函数外就没用吗提裤不认人?NoNoNONO,在python中有些类型是可以修改的,比如列表类型,上代码
def addInterest(balances,rate):
for i in range(len(balances)):
balances[i] = balances[i]*(1 + rate)
def main():
amounts = [1000,200]
rate = 0.05
addInterest(amounts,rate)
print(amounts)
main()
在这段代码中,值居然改变了,为什么int不行,列表可以呢?个人理解哈,主要是python的性质,对于int类型重新赋值,你以为是重新赋值,其实是搬家了,储存位置发生了改变,也就是c语言中的地址发生改变了,也就是给你创出来一个新的int类型了,你在那个上面做的操作并不会影响原地址,而列表就不一样了,列表是可变的数据类型,也就是说,重新赋值也是在原地址上的操作,储存位置不会改变。ok差不多是这些,下面还是些作业
reverse
def reverse(s):
if s == '':
return s
return reverse(s[1:])+s[0]
print(reverse('hello'))
makeTree
import turtle
from turtle import Turtle
def tree(plist,l,a,f):
if l >= 5:
list = []
for p in plist:
p.fd(l)
q = p.clone()
q.right(a)
p.left(a)
list.append(p)
list.append(q)
tree(list,l * f,a,f)
def maketree(x,y):
p = Turtle()
p.color('green')
p.getscreen().tracer(3,0)
p.pensize(5)
p.left(90)
p.penup()
p.speed(1)
p.hideturtle()
p.goto(x,y)
p.pendown()
tree([p],200,65,0.5)
print(len(p.getscreen().turtles()))
def main():
maketree(-200,-200)
maketree(0,0)
maketree(200,-200)
turtle.done()
main()
这大概就是我今日所学,才疏学浅,如果有错误的地方,请不吝赐教。
标签:python,bmi,day3,int,rate,从零开始,print,def From: https://www.cnblogs.com/Liyukio/p/18671765