首页 > 编程语言 >Python学习笔记5(循环2)

Python学习笔记5(循环2)

时间:2022-09-30 06:22:41浏览次数:59  
标签:输出 Python 样例 笔记 int 循环 print input 输入

problem 1

编写一个程序把输入整数颠倒后存入另一个变量并输出。例如:输入\(1230\),输出\(321\)
输入样例:

12345

输出样例:

54321

解题思路:就把元组里面元素反转就好了,循环就能解决,注意一下前导\(0\)的去除就可以了,我这里是用了一个标记\(f\),\(len\)函数和\(continue\)语句用法可以在上一篇中找到,这里不再赘述了。

代码:

s=input();
l=len(s);
f=1;
for i in range(l-1,-1,-1) :
    if(f==1 and s[i]=='0') :
        continue;
    f=0;
    print(s[i],end='');

problme 2

自然常数\(e\)可以用级数:\(1+1/1!+1/2!+...+1/n!\)来近似计算。输入一个小于\(1\)的正数作为阈值\(x\),用该公式计算\(e\)的近似值,直到最后一项\((1/n!)\)小于给定的阈值为止。

输入样例:

0.00001	

输出样例:

2.71827876984127

解题思路:这题跟上篇那个题目很像,上个题目会了,这个肯定也会了,没啥好说的。
代码:

from math import *
def f(n) :
    return 1/factorial(n);
x=float(input())
e=js=0;
while("我真牛") :
    o=f(js);
    if(o<x) :
        break;
    e+=o;
    js+=1;
print(e);

problem 3

角谷猜想。输入一个正整数\(n\),
1)若为偶数,则将\(n\)变换为\(n=n/2\)
2)若为奇数,则将\(n\)变换为\(n=3*n+1\)
3)重复上述步骤,直到\(n\)为\(1\)(经过上述两步的多次变换,总会变为\(1\),这就是角谷猜想)
4)若输入的\(n\)小于\(1\),则输出'\(data error\)'
5) 若输入的数据是非数字的字符串,如:\(abc\),则输出'非法输入'(提示:使用异常处理)
输出重复运算的次数

输入样例:

3

输出样例:

7

解题思路:注意一下使用异常处理就好了,也就是\(try\),\(except\),\(else\)语句,可以百度一下,不难理解,\(try\)是前提,所有情况都要执行\(try\)里面的语句,\(except\)是出错时执行,\(else\)自然就是正常情况下。

代码:

try :
    n=int(input());
except ValueError :                    # 意思是出现了非法输入的错误。
    print("非法输入");
else :
    if(n<1) :
        print("data error");
        exit(0);
    if(n==1) :
        print("0");
        exit(0);
    js=0;
    while(233) :
        if(n==1):
            break;
        if(n&1) :
            n=3*n+1;
            js+=1;
        else :
            n>>=1;                     # 像上篇讲的右移,这个是左移,也就是除2,等同于n/=2。
            js+=1;
    print(js);

problem 4

编写程序,输入一个大于\(0\)的正整数,分解质因数并输出。例如,当输入\(90\)后,输出为\(1*2*3*3*5\).

输入样例:

90	

输出样例:

90=1*2*3*3*5	

解题思路:最小的质数是\(2\),挨个数除就好了,不用担心被合数除,因为\(4\),\(6\),\(8\)都是\(2\)的倍数,在\(2\)的时候就已经除完了,所以每次除的必是质数,\(1\)特判一下就行,理论上这个题是错的,因为\(1\)不是质数,也不是合数,题面描述有误,不过不影响大家做题,至于\(sep\)和\(end\)的使用,一个是分离,一个是不换行,老师都讲过。

代码:

n=int(input());
if(n==1) :
    print("1=1");
    exit(0);
print(n,"=1*",sep='',end='');
i=2;
while("你好厉害") :
    if(n==1) :
        break;
    while(n%i==0) :
        if(n/i==1) :
            print(i);
            n/=i;
            break;
        else :
            print(i,"*",sep='',end='');
            n/=i;
    i+=1;

problem 5

绘制如下图案:
1
222
33333
4444444
输入一个正整数\(n(1<=n<=9)\),输出\(n\)行。

输入样例:

4

输出样例:

   1
  222
 33333
4444444  

解题思路:我的评价是,题目越来越傻了。。。循环的时候注意一下空格还有数字的个数就可以了,也没什么好说的,就是循环套循环呗。

代码:

n=int(input());
k=n-1;
for i in range(1,n+1) :
    for j in range(1,k+1) :
        print(" ",end='');
    for j in range(1,2*(i-1)+2) :
        print(i,end='');
    k-=1;
    print('\n');             # 这个是换行符。

problem 6

我国古代数学家张丘建在《张丘建算经》一书中提出一个数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,如果要求鸡翁、鸡母、鸡雏都不为零,问鸡翁、鸡母、鸡雏各几何?
在同一行内输入用空格分隔的两个正整数,分别表示鸡的总数量和总钱数,计算鸡翁、鸡母、鸡雏各为多少?
如果有多个解,则输出多行,并按鸡翁数量由少到多的顺序输出;每行输出3个空格分开的数,分别代表鸡翁、鸡母、鸡雏的数量。
如果无解则输出"无解"。
输入样例:

99 99

输出样例:

1 23 75
5 16 78
9 9 81
13 2 84	

解题思路:看到这个题不由得想起了高中竞赛学习的贪心算法,百万钱买百万鸡,不过这个题跟那个肯定没法比,这题轻轻松松,看上去需要三重循环,实则两重就可以了,因为知道了两种鸡的个数,另一种一减就出来了。

代码:

n,m=map(int,input().split())
f=1;
for i in range(1,n+1) :
    for j in range(1,n-i+1) :
        k=n-i-j;
        if(k==0) :
            continue;
        if(5*i+3*j+k/3==m) :
            print(i,j,k,sep=' ');
            f=0;
if(f==1) :
    print("无解");

problem 7

一个正整数,如果等于组成它的各位数字的阶乘之和,则该正整数称为阶乘和数。例
如正整数\(145\),\(1!+4!+5!\)等于\(145\),因此\(145\)是一个阶乘和数。输入一个正整数,计算它的
各位数字的阶乘之和,判断它是否是一个阶乘和数。当输入的数字为阶乘和数时,输出
“YES”,否则输出“NO”。

输入样例:

145

输出样例:

YES	

解题思路:可以先把输入的东西当作字符串,然后一个一个转化累加,定义俩变量,一个用阶乘,一个正常加,最后看看俩是不是相等就可以了,没啥难度。

代码:

from math import *
s=input();
l=len(s);
n=m=0;
js=l-1;
for i in range(0,l) :
    o=int(s[i]);
    m+=factorial(o);
    n+=o*10**js;
    js-=1;
if(n^m) :                     # 这里我还是用了位运算异或,等同于n!=m,不过我喜欢位运算,习惯了。
    print("NO");
else :
    print("YES");

problem 8

用户输入一个数据,判断用户输入的是复数(\(complex\))、浮点数(\(float\))、整数(\(int\)),还是字符串(\(string\)),输出括号中与之匹配的数据类型。如果输入数据不是上述\(4\)种类型,如\(tuple\)、\(list\)等数据,则输出:其它类型

提示:利用\(eval()\)、\(type()\)、\(str()\)函数,以及异常处理
输入样例1:

145      

输出样例1:

int  	

输入样例2:

(1,2)    

输出样例2:

其它类型

解题思路:也是不难,题目让你干啥你干啥就行了,直接啊对对对,你说的都对,跟循环一点关系都没有,还是异常处理,跟上面那个题一样,因为异常处理的肯定都是字符串,所以直接输出\(string\)类型就好了,别的就按部就班判断着来就可以了。

代码:

try:
    n=eval(input());
except :
    print("string");
    exit(0);
else :
    if(type(n)==int) :
        print("int");
    elif(type(n)==float) :
        print("float");
    elif(type(n)==complex) :
        print("complex");
    elif(type(n)==str) :
        print("str");
    else :
        print("其它类型");

标签:输出,Python,样例,笔记,int,循环,print,input,输入
From: https://www.cnblogs.com/grcyh/p/16743652.html

相关文章

  • 借用python的flask库写一个mock实现一个自定义接口服务
    mock在接口测试中可以发挥很大的作用,其中之一便是实现自定义接口服务。python中可以使用flask库实现mock,写一个简单的登录接口,以及调用,直接上代码:第一部分:实现登录接口im......
  • Python实验报告——第4章 序列的应用
    实验报告实例01:输出每日一贴代码如下:importdatetime#导入日期时间类#定义一个时间表mot=['今天星期一:\n坚持下去不是因为我很强,而是因为我别无选择。',......
  • Python第四章实验
    importdatetime#导入日期时间类#定义一个列表mot=["今天星期一:\n坚持下去不是因为我很坚强,而是因为我别无选择。","今天星期二:\n含泪播种......
  • Effective Python pdf
    高清扫描版下载链接:https://pan.baidu.com/s/1EsEfj690uy-s5LrkVYyIIQ点击这里获取提取码 ......
  • python 连接 sqlite3 文件
     #0.pipinstallpymysql#1.导入pymysqlimportpymsql#2.创建一个数据库连接对象#3.创建游标cursor=conn.cursor()#4.SQL执行cursor.execute(sql)......
  • 程序员修炼之道:从小工到专家 阅读笔记1
     读书笔记:通过这个月对《程序员修炼之道——从小工到专家》的阅读,有以下体会:注重实效的哲学1.负责,主动担负责任,对结果负责。2.发现一个问题就修复一个问题,不能修复采......
  • 《程序员修炼之道:从小工到专家》第一章读书笔记
     最近我读了《程序员修炼之道:从小工到专家》这本书的第一章:注重实效的哲学 注重实效的程序员的特征是它们处理问题、寻求解决方式时的态度、风格、哲学。 在第一个......
  • 使用python——matplotlib绘制的图表
    #绘制饼状图importmatplotlib.pyplotaspltimportnumpyasnpman=2245505woman=3254584man_prec=man/(man+woman)woman_prec=woman/(man+woman)labels=['男','女']col......
  • python如何依次打印出列表中的元素
    list1=[]forjinrange(1,100):list1.append(j)list2=[]sum1=int(input("输入一个数字:"))#定义一个int类型i=0while(i<=len(list1)):#对输入......
  • python今日分享(内置方法)
    目录一、习题详解二、数据类型的内置方法理论三、整型相关操作四、浮点型相关操作五、字符串相关操作六、列表相关操作今日详解一、习题详解1.计算1-100所有......