Python学习之-题目练习

目录

本篇博客只要记录自己在Python学习过程中遇到的一些问题,方便自己复习查阅,也分享一些自己的理解。

题目1:Hello World的条件输出(简单)

    题目描述:
    获得用户输入的一个整数,参考该整数值,打印输出"Hello World",要求:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬
    如果输入值是0,直接输出"Hello World"‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬
    如果输入值大于0,以两个字符一行方式输出"Hello World"(空格也是字符)‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬
    如果输入值小于0,以垂直方式输出"Hello World"
    输入输出样例:
       0
       Hello World
参考答案:
n=eval(input())
if n==0:
    # TODO: 正常输出Hello World
    print('Hello World')
elif n>0:
    # TODO: 每行输出两个字符
    print('He\nll\n0 \nWo\nrl\nd')
else:
    for c in 'Hello World':
        print(c) 
题目分析:

这个题目主要考察的是输入输出语句分支语句以及eval()函数的使用,都是很简单的知识点,需要注意的主要有:

1. input()函数: 从控制台获得用户的输入,用户输入的信息以字符串类型保存在<变量>中,其使用格式为:

<变量>=input(<提示信息字符串 >)
>>>str=input("请输入")
>>>str
'8'

切记: input() 函数的输入是以字符串的格式进行保存的,如果输入的是数字,则需要将字符串类型的数字转换成int或者float等其他数据类型,在不知道输入数据类型的情况下,可以用eval()函数直接将输入的字符串型数据直接转换成输入的数据类型。
2.eval()函数: 具有去掉参数最外侧的引号并执行余下语句的功能,其基本使用格式为:

eval(<字符串或字符串变量>)
>>>eval('print("hello")')
hello

因此,可以使用eval()函数将从控制台获得的输入字符串转换成输入的数据格式,不必再次进行强制类型转换。
3.print()函数: 以字符形式向控制台输出结果,需要注意的是,默认输出结束会自动换行,其基本使用格式为:

print(<拟输出的字符串或字符串变量>)
>>>s=["Hello","World"]
>>>for i in range(len(s)):
       print(s[i])
Hello
World

字符串类型的一对引号仅在程序内部使用,输出则无引号,具体可参考上面代码块。
print()中增加**end=""**参数表示输出后不增加换行,多个print()可以连续输出。

>>>for i in range(len(s)):
       print(s[i],end="")
Hello World

print()函数在输出的时候可以用**format()**对输出的字符串进行格式化

>>>print("此时的温度是{:.2f}C".format(C))
123.45C

其中,{}表示槽,format()的参数为后续变量,填充到槽中。槽中的 :.2f 表示取小数点后2位。

题目2:数值运算

题目描述:
获得用户输入的一个字符串,格式如下:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬
M OP N‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭
其中,M和N是任何数字,OP代表一种操作,表示为如下四种:+, -, *, /(加减乘除)‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬
根据OP,输出M OP N的运算结果,统一保存小数点后2位。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬
注意:M和OP、OP和N之间可以存在多个空格,不考虑输入错误情况。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬
输入输出示例:
    10 + 100              110.00
    1 / 20                0.05
参考答案:
s=eval(input())
print('{:.2f}'.format(s))
题目分析:

题目主要考察**eval()函数**和print()输出函数的==格式化==,具体的介绍请参看题目一中的题目分析。
当然,使用eva()函数来处理输入的字符串是最简单的,但是对于未接触eval()函数的初学者来说,典型的做法应该是对输入的字符串进行处理。对于题目1中的注意事项1中大家很容易忽略 input()从控制台获得的输入其实是字符串,需要进行字符串的处理才可以对输入数据继续进行使用,所以在这里再次强调一下。

不使用eval()函数:
s=input()
#对输入的字符传进行处理
op=['+','-','*','/']
for i in range(len(s)):
    #查找运算符的位置
    if s[i] in op:
        list=s.split(s[i])
        #找到运算符后,对数据强制类型转换称float型后处理
        if s[i]==op[0]:
            res=float(list[0])+float(list[1])
        elif s[i]==op[1]:
            res=float(list[0])-float(list[1])
        elif s[i]==op[2]:
            res=float(list[0])*float(list[1])
        elif s[i]==op[3]:
            res=float(list[0])/float(list[1])
        print("{:.2f}".format(res))

题目三:凯撒密码加密

  题目描述:
  恺撒密码是古罗马恺撒大帝用来对军事情报进行加解密的算法,
  它采用了替换方法对信息中的每一个英文字符循环替换为字母表
  序列中该字符后面的第三个字符,即,字母表的对应关系如下:
  原文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬
  密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
  
  对于原文字符P,其密文字符C满足如下条件:C=(P+3) mod 26‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬
  上述是凯撒密码的加密方法,解密方法反之,即:P=(C-3) mod 26‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬
  
  假设用户可能使用的输入包含大小写字母a~zA~Z、空格和特殊符号,请编
  写一个程序,对输入字符串进行恺撒密码加密,直接输出结果,其中空格不
  用进行加密处理。使用input()获得输入。
  输入输出示例:
  python is good
  sbwkrq lv jrrg

参考答案:

pstr=input()
for c in pstr:
    if c in "abcdefghijklmnopqrstuvwxyz":
        if ord(c)+3>ord('z'):
            cstr=ord(c)+3-26
            print(chr(cstr), end='')
        elif c ==' ':
            print(' ',end='')
        else:
            cstr = ord(c)+3
            print(chr(cstr), end='')
    elif c in "ABCDEFGHIJKLMNOPQRSTUVWXYZ":
        if ord(c)+3>ord('Z'):
            cstr=ord(c)+3-26
            print(chr(cstr), end='')
        elif c ==' ':
            print(' ',end='')
        else:
            cstr = ord(c)+3
            print(chr(cstr), end='')
    else:
        print(c,end='')
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值