浙大版《Python 程序设计》题目集第4章-12——第4章-16

第4章-12 求满足条件的斐波那契数

斐波那契数,亦称之为斐波那契数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……,这个数列从第3项开始,每一项都等于前两项之和。求大于输入数的最小斐波那契数。

输入格式:
在一行输人一个正整数n(n>=10)。

输出格式:
在一行输出大于n的最小斐波那契数。

输入样例:
在这里给出一组输入。例如:

10

输出样例:
在这里给出相应的输出。例如:

13

答案样例:

a = int(input())
x = 13
y = 21
while x < a:# 因为题目说最小就是10,所以直接从13开始就好了
    x,y = y,x+y
print(x)

第4章-13 求误差小于输入值的e的近似值

自然常数e可以用级数1+1/1!+1/2!+⋯+1/n!来近似计算。ei代表前i项求和。输入误差范围error,当ei+1-ei<error,则表示e的近似值满足误差范围。

输入格式:
在一行输入误差范围。

输出格式:
在一行输出e的近似值(保留6位小数)。

输入样例1:
在这里给出一组输入。例如:

0.01

输出样例1:
在这里给出相应的输出。例如:

2.716667

输入样例2:
在这里给出一组输入。例如:

0.000000001

输出样例2:
在这里给出相应的输出。例如:

2.718282

答案样例:

from math import factorial
n = float(input())
s1 = 1
s2 = 2
i = 0
while s2 - s1 > n:
    i += 1
    s1 += 1/factorial(i)
    s2 += 1/factorial(i+1)
print('{:.6f}'.format(s2))

第4章-14 统计字符

本题要求编写程序,输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。

输入格式:
输入为10个字符。最后一个回车表示输入结束,不算在内。

输出格式:
在一行内按照

letter = 英文字母个数, blank = 空格或回车个数, digit = 数字字符个数, other = 其他字符个数

的格式输出。

输入样例:

aZ &
09 Az

输出样例:

letter = 4, blank = 3, digit = 2, other = 1

答案样例:

# 这个题后台检测不好,这样都能过,要是我第二行输入很多字符了或是第一行就输入10以上的个字符,答案就不一样了,不用去较劲,过了就行
s = ''
enter_c = 0
while True:
    b = input()# 输入一次就相当于回车数+1,但最后一个回车数不计入
    enter_c += 1
    s += b
    if len(s)+enter_c > 10:
        enter_c -= 1
        break
alpha_c = space_c = digit_c = other_c = 0
for i in s:# s[:10]
    if i.isalpha():
        alpha_c += 1
    elif i.isspace():
        space_c += 1
    elif i.isdigit():
        digit_c += 1
    else:
        other_c += 1
print('letter = {}, blank = {}, digit = {}, other = {}'.format(alpha_c,space_c+enter_c,digit_c,other_c))

第4章-15 换硬币

将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?

输入格式:
输入在一行中给出待换的零钱数额x∈(8,100)。

输出格式:
要求按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法。每行输出一种换法,格式为:“fen5:5分硬币数量, fen2:2分硬币数量, fen1:1分硬币数量, total:硬币总数量”。最后一行输出“count = 换法个数”。

输入样例:

13

输出样例:

fen5:2, fen2:1, fen1:1, total:4
fen5:1, fen2:3, fen1:2, total:6
fen5:1, fen2:2, fen1:4, total:7
fen5:1, fen2:1, fen1:6, total:8
count = 4

答案样例:

money = int(input())
s = []
for x in range(1,money):# 5分的数量
    for y in range(1,money):# 2分的数量
        for z in range(1,money):# 1分的数量
            if 5*x+2*y+z == money:
                l = [x,y,z,x+y+z]
                s.append(l)
for i in s[::-1]:
    print('fen5:{}, fen2:{}, fen1:{}, total:{}'.format(*i))
print(f'count = {len(s)}')

第4章-16 jmu-python-判断是否构成三角形

输入三角形的三边,判断是否能构成三角形。若能构成输出yes,否则输出no。

输入格式:
在一行中直接输入3个整数,3个整数之间各用一个空格间隔,没有其他任何附加字符。

输出格式:
直接输出yes或no,没有其他任何附加字符。

输入样例1:

3 4 5

输出样例1:

yes

输入样例2:

1 2 3

输出样例2:

no

答案样例:

s = list(map(int,input().split()))
s.sort()# 直接排序判断前面两个之后是否大于第三个数
if s[0]+s[1] > s[-1]:
    print("yes")
else:
    print("no")

猜你喜欢

转载自blog.csdn.net/hmh4640219/article/details/113568407