非计算机专业同学的Python自我修养
记录本科大一下的学习过程
WEEK-3例题
Q1:猜数一把提示偏大偏小
【问题描述】编写“猜数游戏”程序,功能是:
如果用户输入的数等于程序选定的数(该数设定为20),则输出“you win”,
否则如果大于选定的数,则输出“too big”,反之输出“too small”。
【输入形式】
输入一个整数。
【输出形式】
根据与选定值的大小关系,做相应的输出(大小写一致)。
【样例输入】
9
【样例输出】
too small
a=int(input())
if a>20:
print('too big')
elif a==20:
print('you win')
else:
print('too small')
挺简单的,考点几乎只有if语句
Q2: 判断字符类型
【问题描述】
编写程序,输入一个字符ch,判断并输出字符的类型,即字母(alpha)、数字(numeric)或其他字符(other)。
【输入形式】一个字符ch
【输出形式】字母(alpha)、数字(numeric)或其他字符(other)
【样例输入】!
【样例输出】other
str=input()
a=str.isalpha() #所有字符都是字母
b=str.isdigit() #所有字符都是数字
if a== True:
print('alpha')
elif b== True:
print('numeric')
else:
print('other')
这里可以学习一下str.isalpha的用法
Q3. 求一元二次方程的解
【问题描述】一元二次方程:ax2+bx+c=0 (a ╪ 0)
【输入形式】输入a、b和c的值(有理数)
【输出形式】输出x的两个值,或者No(即没有有理数的解)
【样例输入】1 2.5 3
【样例输出】No
【样例输入】1 -2 1
【样例输出】1.00 1.00
【样例输入说明】输入的值以空格分割,可以使用 以下语句:
a,b,c=input().split()
获取三个字符串数值后,再使用函数float进行数据类型转换。
【样例输出说明】输出的两个解保留两位小数,大的在前。
a,b,c=input().split(" ")
a=float(a)
b=float(b)
c=float(c)
d=(b**2-4*a*c)
if d<0:
print('No')
else:
x1=(-b+d**0.5)/(2*a)
x2=(-b-d**0.5)/(2*a)
x1=float("%.2f" % x1)
x2=float("%.2f" % x2)
print(x1,x2)
代码繁琐,以后要找到简便方法
Q4. BMI
【问题描述】(健康应用程序: BMI国际国内)体重指数(BMI)是衡量体重健康程度的指标。它可以通过以体重(千克)为单位除以身高(以米为单位)的平方来计算。16岁或以上人士的国际BMI值解释如下:BMI<18.5,超轻(Underweight);18.5<=BMI<25.0标准(Normal);25.0<=BMI<30.0,超重(Overweight);30.0<=BMI,肥胖(obese)。国内BMI值解释为:BMI<18.5,超轻(Underweight);18.5<=BMI<24.0标准(Normal);24.0<=BMI<28.0,超重(Overweight);28.0<=BMI,肥胖(obese)。 编写程序,提示让用户输入以千克为单位的体重以及以米为单位的身高,然后显示国际和国内BMI值(显示2位小数)和解释。
【输入形式】以千克为单位的体重以及以米为单位的身高
【输出形式】国际和国内BMI值(显示2位小数)和解释
【样例输入】
Enter weight in kg:60
Enter height in meter:1.65
【样例输出】
BMI is 22.04
BMI’s international interpretations is Normal
BMI’s domestic interpretations is Normal
a=eval(input('Enter weight in kg:'))
b=eval(input('Enter height in meter:'))
BMI=a/(b**2)
print ('BMI is',"%.2f" %BMI)
c="BMI's international interpretations is "#国际解释
if BMI<18.5 :
print(c+'Underweight')
elif 18.5<=BMI<25.0:
print(c+'Normal')
elif 25.0<=BMI<30.0:
print(c+'Overweight')
elif 30.0<=BMI:
print(c+'obese')
d="BMI's domestic interpretations is "#国内解释
if BMI<18.5 :
print(d+'Underweight')
elif 18.5<=BMI<24.0:
print(d+'Normal')
elif 24.0<=BMI<28.0:
print(d+'Overweight')
elif 28.0<=BMI:
print(d+'obese')
依旧麻烦。。不知道考试的时候能不能做完
Q5. 三类商品总价排序输出
【问题描述】
【输入形式】
num1:20
num2:18
num3:17
price1:2.95
price2:1.49
price3:1.99
【输出形式】
values:$26.82,$33.83,$59.00(保留两位小数)
num1=eval(input('num1:'))
num2=eval(input('num2:'))
num3=eval(input('num3:'))
price1=eval(input('price1:'))
price2=eval(input('price2:'))
price3=eval(input('price3:'))
a=num1*price1
b=num2*price2
c=num3*price3
if a>b>c:
print('values:$',"%.2f" %c,',$',"%.2f" %b,',$',"%.2f" %a,sep='')
elif a>c and c>b :
print('values:$',"%.2f" %b,',$',"%.2f" %c,',$',"%.2f" %a,sep='')
elif c>a>b :
print('values:$',"%.2f" %b,',$',"%.2f" %a,',$',"%.2f" %c,sep='')
elif b>a>c :
print('values:$',"%.2f" %c,',$',"%.2f" %a,',$',"%.2f" %b,sep='')
elif b>c>a :
print('values:$',"%.2f" %a,',$',"%.2f" %c,',$',"%.2f" %b,sep='')
elif c>b>a :
print('values:$',"%.2f" %a,',$',"%.2f" %b,',$',"%.2f" %c,sep='')
elif a>b and b==c:
print('values:$',"%.2f" %b,',$',"%.2f" %c,',$',"%.2f" %a,sep='')
elif b>a and a==c:
print('values:$',"%.2f" %c,',$',"%.2f" %a,',$',"%.2f" %b,sep='')
elif c>a and a==b:
print('values:$',"%.2f" %a,',$',"%.2f" %b,',$',"%.2f" %c,sep='')
刚开始是用了重叠的if语句,后来总有两个数据不对,也没做
这个题目测试的时候,没有三个完全相同的数据,所以没有后续的a=b=c
Q6. 百分制转五分制
-
百分制转五分制
【问题描述】
给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。90分以上为A,8089分为B,7079分为C,60~69分为D,60分以下为E。如果输入小于0或大于100的分数,则输出“Not valid”(注意大小写须一致)。
【输入形式】
输入一个可能带小数点的分数。
【输出形式】
根据对应关系,输出输入分数所对应的五分制分数档。
【样例输入1】
91
【样例输出1】
A
【样例输入2】
901
【样例输出2】
Not valid
a=eval(input())
if a<0 or a>100 :
print('Not valid')
elif a>=90:
print('A')
elif a<90 and a>=80:
print('B')
elif a<80 and a>=70:
print('C')
elif a<70 and a>=60:
print('D')
elif a<60 :
print('E')
有手就行的水题
总结
本来想把上两周的一块弄过来,结果题目要求看不到了,只有代码就没有意义了。
2021.3.18