python基本数据类型

计算两点间距离

在这里插入图片描述

# -*- coding:utf-8 -*-
'''
This is a python123.io file.
'''
ntxt = input("")  #从键盘上接受输入1 1 2 2,返回字符串"1 1 2 2"赋值给ntxt
nls = ntxt.split(" ")
#使用split(" ")函数分割字符串内容," "中包含了一个英文空格,并返回了一个列表给nls
x1 = eval(nls[0]) #将列表nls中第一个元素被eval函数识别为数字:1
y1 = eval(nls[1]) #将列表nls中第二个元素被eval函数识别为数字:1
x2 = eval(nls[2]) #将列表nls中第三个元素被eval函数识别为数字:2
y2 = eval(nls[3]) #将列表中第四个元素被eval函数识别为数字:2
r = pow(pow(x2-x1, 2) + pow(y2-y1, 2), 0.5)  #根据两点间距离的数学公式求出距离
print("{:.2f}".format(r)) #保留2位小数输出距离1.41

#特别注释:如果输入不符合要求,例如1 1,则会出现SyntaxError: unexpected EOF while parsing
#如果输入的包含字符,例如1 1 a b,则会出现NameError: name 'a' is not defined
#同学们可以考虑一下:如果改进代码,避免出现这样的错误。

计算球体表面积和体积

在这里插入图片描述

PI = 3.14
r = eval(input())
S = 4 * PI * pow(r,2)
V = (4/3) * PI * pow(r,3)
print("{:.2f} {:.2f}".format(S,V))

Unicode字符

在这里插入图片描述

x = eval(input())   #输入为"65",由eval函数转变为数值65
print("{:c}".format(x))  #输出Unicode编码为65,对应的字符为"A"

# 如果输入的是"a",会出现如下错误提示:   
# File "<string>", line 1, in <module>
# NameError: name 'a' is not defined
# 原因:eval函数只能识别数字字符串,对于输入"a",只能被识别为一个变量名称为a,
#       a 这个变量是不存在的,从而出现错误。
#       如果要避免这样的意外出现,请尝试使用try-catch语句完善代码。
# 本题目的考察点在于format函数的格式输出规则。

字符串逆序

在这里插入图片描述

s = input()           #从键盘获取输入,返回字符串
print(s[::-1],end="") #字符串逆序输出,详见代码后说明
print(len(s))         #输出字符串长度

本题考查的是字符串的一些基本知识。
反序字符串的写法是s[::-1]。
[x:y:z]切片索引,x是左端,y是右端,z是步长,在p[x,y)区间从左到右每隔z取值,默认z是1,可以省略参数z,步长为负号就是反向,从右到左取值。

就业人数统计

在这里插入图片描述

#从键盘上获取字符串,按回车键结束输入。形如:计算机 金融 计算机 建筑 土木 土木 计算机
names = input("请输入各个同学行业名称,行业名称之间用英文空格间隔(回车结束输入):")
#str.split()函数可分割从键盘上获取的字符串,返回一个列表,默认缺省分隔符为英文空格。
'''
 |  split(self, /, sep=None, maxsplit=-1)
 |      Return a list of the words in the string, using sep as the delimiter string.
 |      
 |      sep
 |        The delimiter according which to split the string.
 |        None (the default value) means split according to any whitespace,
 |        and discard empty strings from the result.
 |      maxsplit
 |        Maximum number of splits to do.
 |        -1 (the default value) means no limit.
'''
t = names.split()
d = {} #定义一个字典
for c in range(len(t)): #对列表t中每一个元素统计出现次数
    d[t[c]] = d.get(t[c],0)+1  #要掌握字典get方法的具体使用,详见代码后面。
ls = list(d.items()) #将字典的items()转换为列表,形如[("计算机",3),...]
ls.sort(key=lambda x:x[1], reverse=True) # 按照数量排序
for k in range(len(ls)):  #输出排序后的统计结果
    zy,num = ls[k]
    #例如:ls[0]=("计算机",3),执行完该语句后,zy="计算机",num = 3
    print("{}:{}".format(zy,num))#按照格式输出结果

创建字典变量 d,可以利用 “d[键]=值” 方式作为字典在增加新的键值对变量。如下代码格式是最常用的对元素统计的语句:d[w]=d.get(w,0)+1
其作用是增加一次元素 w 出现的次数。使用 .get() 方法获得当前字典 d 中 w 作为键对应的值,即 w 已经出现的次数。如果 w 不存在,则返回 0,反之,则返回值。
key=lambda x: x[1] 为对前面的对象中的第二维数据(即value)的值进行排序。 key=lambda 变量:变量[维数] 。维数可以按照自己的需要进行设置。
参见:对键值进行输出和排序

十六进制转换

在这里插入图片描述

s = input()
print("{:\"^30x}".format(eval(s)))
# 错误写法:print("{:\"30x^}".format(eval(s)))

# 从键盘上输入:63
# 输出为:""""""""""""""3f""""""""""""""

# \" 表示 在""字符串内部显示一个英文单引号的方式,本题中如果没有增加\,显示出错
# ^ 表示s处于输出字符串的中间位置
# 30指字符串设定格式化输出总长度为30
# x表示小写十六进制输出,X表示大写十六进制输出
# 如果换成b,表示二进制方式输出;如果换成o,表示八进制方式输出;
# 如果换成d,表示十进制方式输出。

“实现了在字符串”"中显示一个 " 双引号的功能 ,特殊格式控制字符使用反斜杠(\)开头,例如\r表示回车,光标移动到本行首,\n表示换行,光标移动到下行行首。
^ 表示居中对齐,^前面的内容表示使用"填充字符串。
30 是宽度,指当前槽的设定输出字符宽度为30

信息输出

在这里插入图片描述

ls= input().split(',') #将从键盘上输入的用逗号隔开的字符串转换为列表
                       #例如输入:10,@  
                       #ls为['10', '@']
                       #ls[0]为'10' ,eval(ls[0])*2+len(ls[0])表达式值为22   
                       #ls[1]为'@'
print(ls[0].center(eval(ls[0])*2+len(ls[0]),ls[1]))
                       #'10'.center(22,"@")即为输出结果,考察字符串的center方法
#str.center(x,y) 会用字符串str构造一个新的字符串,
#新的字符串长度是x, 两边填充y。此处的x是数字,y是填充字符
# str:'10'
#   x:22
#   y:"@"
#输出结果为"@@@@@@@@@@10@@@@@@@@@@"
  1. 理解 input 的结果是返回一个字符串
  2. split 是字符串的方法,能够以逗号把字符串分割成列表,但列表的元素都是字符串
  3. 用 ls[0] 和 ls[1] 分别取得输入的数字和后面的符号
  4. 题目要求用一行表达式来解决这个问题,所以增加了难度
  5. 此时要想起来用字符串的操作方法 center,问题就迎刃而解了,这个方法 str.center(x,y) 会用字符串 str 构造一个新的字符串,新的字符串长度是 x , 两边填充 y。此处的 x 是数字,y 是字符
  6. 要记得 ls[0] 里的 10 是一个字符串,所以要记得用 eval 把它变成数字,乘 2,加上 10 自己的长度,就得到了所需的 x;y 就是 ls[1] 里的字符
  7. 这道题关键是深入理解,并灵活运用 center

进制转换

在这里插入图片描述

#请输入一个十进制整数
Tempstr = eval(input())
print("0x{0:x},0o{0:o},0b{0:b}".format(Tempstr))

字符串输出

在这里插入图片描述

#"请输入一个字符串,由逗号隔开每个字符:"
ls= input().split(',')
print(''.join(ls))
  1. 用 split(’,’) 来从字符串里提取所输入的字符,split() 函数返回列表
  2. 字符串方法 str.join(ls) ,把列表里的各个元素,用 str 的内容连接起来。利用了空字符串‘ ’,来调用这个函数,将带有逗号的字符串变换成了没有逗号的字符串

八进制转换

在这里插入图片描述

s = input() # 请输入一个由1和0组成的二进制数字串
d = 0
while s:
    d = d*2 + (ord(s[0]) -ord('0'))
    s = s[1:]
print("转换成八进制数是:{:o}".format(d))

英文单引号统计

在这里插入图片描述

st = input()
pair = 0
count = 0
for s in st:
    if s == "'":
        pair += 1
        if pair % 2 == 0:
            count += 1
if pair == 0:
    pro = "没有单引号"
elif pair % 2 == 0:
    pro = "有{}对单引号".format(count)
else:
    pro = "有{}对配对单引号,存在没有配对的单引号".format(count)
print(pro)

多分支结构,分支语句的嵌套
利用对2求模运算,来判断单引号是否配对
利用pro变量来记录不同情况下的输出内容,最后只用一个print来输出显示
利用字符串的format操作,把合成要输出的变量和提示字符串

首字母大写

在这里插入图片描述

ls = eval(input())
for i in range(len(ls)):
    ls[i] = ls[i].capitalize()        #将所有的字符串首字母转换成大写capitalize()函数
print(ls)

字符串填充

在这里插入图片描述

a = input()  # 请输入填充符号
c = input()  # 请输入要显示的字符串
flag = 1

while flag:
   try:
       b = eval(input()) # 请输入字符串总长度
   except:
       flag = 1
       print("请输入一个正整数")
   else:
       if type(b)== int and b>0:
            flag = 0
       else:
            flag = 1
            print("请输入一个正整数")

print('{0:{1}^{2}}'.format(c,a,b))

数字求和

在这里插入图片描述

n = input()              #1,2,3,4
nums = n.split(",")        #["1","2","3","4"]
s = 0
for i in nums:
    s += eval(i)
print(s)

十进制转换

在这里插入图片描述

s = input() # 请输入一个由1和0组成的二进制数字串:
d = 0
while s:
   d = d*2 + (ord(s[0]) -ord('0'))
   s = s[1:]
print("转换成十进制数是:{}".format(d))

字符串长度对比

在这里插入图片描述

def Percentage(str1,str2):
    n = 0
    for s1,s2 in zip(str1,str2):
        if s1 == s2:
            n += 1
    return  n/len(str1)

s1 = "我爱你中国"

print(s1)
s2 = input()

if len(s1) != len(s2):
    print("输入字符串长度不一致,请重新运行本程序!")
else:
    print("{:.2%}".format(Percentage(s1,s2)))
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值