python刷题第一周

第一题

第2章-2 计算分段函数[1] (10 分) 本题目要求计算下列分段函数f(x)的值:

在这里插入图片描述

代码:

x=float(input())
if x==0:
    print('f(%.1f) = %.1f'%(x,x))
else:
    print('f(%.1f) = %.1f' % (x, 1/x))

我学到了:

输出
print('f(%.1f) = %.1f ’ % (x, 1/x))
保留一位小数;在句子中插入值。

第二题

第2章-4 特殊a串数列求和 (20 分)

给定两个均不超过9的正整数a和n,要求编写程序求a+aa+aaa++⋯+aa⋯a(n个a)之和。

输入格式:
输入在一行中给出不超过9的正整数a和n。

输出格式:
在一行中按照“s = 对应的和”的格式输出。

代码:

a, n = map(int, input().split())
s = 0
num = 0
holder = 0
for i in range(n):
    for x in range(0, i + 1, 1):
        num = holder + a * pow(10, x)
        holder = num
    s += num
    num = 0
    holder = 0
print("s = %d" % s)

我学到了:

语法知识:

1.在一行中输入以空格为间隔的数:
a,b,c,d = map(int, input().split())
2.次方:
x的y次方 pow(x, y)

出错点:

  1. num 和 holder每次循环都要初始化!
  2. python的for和c++不一样,要注意第二个循环里为i+1.

第三题

第2章-6 求交错序列前N项和 (15 分)

本题要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+… 的前N项之和。

输入格式:
输入在一行中给出一个正整数N。

输出格式:
在一行中输出部分和的值,结果保留三位小数。

我的代码:

s = 0
son = 0
mom = 1
flag = -1
for x in range(n):
    son += 1
    num = son / mom
    mom += 2
    flag *= -1
    num *= flag
    s += num
print("%0.3f" % s)

别人的代码:

a = float(input())
sum = 0
for i in range(int(a)):
    sum += (-1)**i*(i+1)/(2*i+1)
print(f"{sum:.3f}")

我学到了:

算术运算符:**
a**b = a的b次方

第四题

第2章-8 转换函数使用 (30 分)

输入一个整数和进制,转换成十进制输出

输入格式:
在一行输入整数和进制

输出格式:
在一行十进制输出结果

代码:

a,b=input().split(",")#赋值完成之后,变量a和变量b都是字符串类型。
b = eval(b)#将字符串b,如果是单引号或双引号的话,则解析成int类型,三引号的话,解析成str类型。eval(string)
c=int(a,b)#int(string,number),进制转换;
print(c)

我学到了:

1.eval()函数:
eval() 函数用来执行一个字符串表达式,并返回表达式的值。
2.进制转换:
int(a,b) (string,number)
将b进制的数a转换为十进制

第五题

第2章-9 比较大小 (10 分)

本题要求将输入的任意3个整数从小到大输出。

输入格式:
输入在一行中给出3个整数,其间以空格分隔。

输出格式:
在一行中将3个整数从小到大输出,其间以“->”相连。

我的代码:

ls = input().split()
ls = sorted(ls)
print("%d->%d->%d" % (int(ls[0]), int(ls[1]), int(ls[2])))

但是有两个测试点出现错误:
在这里插入图片描述

别人的代码:

1.

print(*sorted(map(int,input().split())),sep="->")

2.

a,b,c=input().split()
a=int(a)
b=int(b)
c=int(c)
if a>b:
    a,b=b,a
if a>c:
    a,c=c,a
if b>c:
    b,c=c,b
print("%d->%d->%d"%(a,b,c))

第六题

第2章-10 输出华氏-摄氏温度转换表 (15 分)

输入2个正整数lower和upper(lower≤upper≤100),请输出一张取值范围为[lower,upper]、且每次增加2华氏度的华氏-摄氏温度转换表。

温度转换的计算公式:C=5×(F−32)/9,其中:C表示摄氏温度,F表示华氏温度。

输入格式:
在一行中输入2个整数,分别表示lower和upper的值,中间用空格分开。

输出格式:
第一行输出:“fahr celsius”

接着每行输出一个华氏温度fahr(整型)与一个摄氏温度celsius(占据6个字符宽度,靠右对齐,保留1位小数)。

若输入的范围不合法,则输出"Invalid."。

代码:

lower, upper = map(int, input().split())
if lower <= upper <= 100:
    print("fahr celsius")
    while lower <= upper:
        F = lower
        C = 5 * (F - 32) / 9
        print("%d%6.1f" % (F, C))
        lower += 2
else:
    print("Invalid.")

我学到了:

题目要求输出celsius占据六个字符宽度,而我一开始输出为%0.1f,不能满足要求,
当改为%6.1f后,格式就正确了。

知识:

%n.mf 中n为占据的字符长度,m为输出到小数点后几位。

第七题

第2章-12 输出三角形面积和周长 (15 分)

本题要求编写程序,根据输入的三角形的三条边a、b、c,计算并输出面积和周长。注意:在一个三角形中, 任意两边之和大于第三边。三角形面积计算公式:area=√
​s(s−a)(s−b)(s−c)

​​ ,其中s=(a+b+c)/2。

输入格式:
输入为3个正整数,分别代表三角形的3条边a、b、c。

输出格式:
如果输入的边能构成一个三角形,则在一行内,按照

area = 面积; perimeter = 周长

的格式输出,保留两位小数。否则,输出

These sides do not correspond to a valid triangle

代码:

import math

a, b, c = map(float, input().split())
if a + b > c > abs(a - b):
    s = (a + b + c) / 2
    area = math.sqrt(s*(s-a)*(s-b)*(s-c))
    per = a + b + c
    print("area = %0.2f; perimeter = %0.2f" % (area, per))
else:
    print("These sides do not correspond to a valid triangle")

我学到了:

  1. 判断三条边能否组成三角形的较简单条件:a+b>c and |a-b|<c
  2. 如果import cmath 来调用sqrt()函数,产生的值为complex(复数),且无法转换为float。 而import math 来调用sqrt()函数,则可以产生float类型的数。

一周刷题情况:

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值