python习题(循环结构的程序设计)

一、角谷猜想

【题目描述】

谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。如,假定初始整数为5,计算过程分别为16、8、4、2、1、0。程序要求输入一个整数,将经过处理得到1的过程输出来。

【输入】

一个正整数𝑛(𝑛≤2,000,000)。

【输出】

从输入整数到11的步骤,每一步为一行,每一部中描述计算过程。最后一行输出"End"。如果输入为11,直接输出"End"。

【输入样例】

5

【输出样例】

5*3+1=16
16/2=8
8/2=4
4/2=2
2/2=1
1/2=0
End

【代码】

n = int(input("请输入一个正整数:"))
if n>0 and n<2000000:
    while n!=1:
            if n % 2 != 0:
                n = n * 3 + 1
                print("%d*3+1=%d" % (n, (n * 3 + 1)))
            else:
                n = n / 2
                print("%d/2=%d" % (n, n / 2))
    print("end")

 【运行结果】

 

二、求小数的某一位

【题目描述】

分数\frac{a}{b}化为小数后,小数点后第𝑛位的数字是多少?

【输入】

三个正整数𝑎,𝑏,𝑛,相邻两个数之间用单个空格隔开。0<𝑎<𝑏<100,1<=𝑛<=10000。

【输出】

一个数字。

【输入样例】

1 2 1

【输出样例】

5

【代码】

a,b,n = map(int , input(">>").split())
if (a>0 and a<100) and (b>0 and b<100) and (n>=1 and n<=1000):
    ustr = str(a/b)
    if "." not in ustr:
        print("error")
    else:
        # 以.分割
        past = ustr.split(".")
        # 分割.之前的
        a_past = past[0]
        # 分割.之后的
        b_past = past[1]
        if n<=len(past):
            print(b_past[n-1])
        else:
            print("error..")

 【运行结果】

三、计算星期几

【题目描述】

假设今天是星期日,那么过a^{b}天之后是星期几?

【输入】

两个正整数𝑎,𝑏,中间用单个空格隔开。0<𝑎≤100,0<𝑏≤10000。

【输出】

一个字符串,代表过a^{b}天之后是星期几。

其中,Monday是星期一,Tuesday是星期二,Wednesday是星期三,Thursday是星期四,Friday是星期五,Saturday是星期六,Sunday是星期日。

【输入样例】

3 2000

【输出样例】

Tuesday

【代码】

a,b = map(int, input(">>").split())
if (a>0 and a<100) and (b>0 and b>1000):
    sum = a**b%7
    days = [ 'Sunday','Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
    /*对sum得到结果取余得到days数组对应的内容*/
    print(days[sum%7])

  【运行结果】

四、最大公约数

【题目描述】

求两个正整数𝑚,𝑛的最大公约数。

【输入】

输入𝑚,𝑛。

【输出】

𝑚,𝑛的最大公约数。

【输入样例】

4 6

【输出样例】

2

【提示】

【数据范围】

对于全部数据:𝑚,𝑛<4000000。

【代码】

# 更相减损术
def gcd(m, n):
    while m!= n:
        if m > n:
            m = m - n
        else:
            n = n - m
    return abs(m)
print(gcd(4, 6))

  【运行结果】

五、菲波那契数

【题目描述】

菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。给出一个正整数k,要求菲波那契数列中第k个数是多少。

【输入】

输入一行,包含一个正整数k。(1 ≤ k ≤ 46)

【输出】

输出一行,包含一个正整数,表示菲波那契数列中第k个数的大小。

【输入样例】

19

【输出样例】

4181

【代码】

k = int(input("输出第几位"))
for i in range(1,k+1):
    # 递归函数套用
    def fun(i):
        if i == 1:
            return 1
        elif i == 2:
            return 1
        elif i >2 and i<47:
            return fun(i-1)+fun(i-2)
        else:
            print("输入有误")
print(fun(k))

【运行结果】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值