牛客网Python在线编程练习--知识点总结

本文详细解析了Python中sys.stdin.readline()与raw_input()的区别,重点介绍了如何处理输入数据,包括去除换行符、字符串操作、数据类型转换及列表处理。此外,还对比了sort与sorted函数的用法,并提供了函数调用的实例。

sys.stdin.readline()和raw_input()的区别:

sys.stdin.readline()会将标准的输入全部获取,包括末尾的'\n';

raw_input()获取的输入不包括换行符'\n'。

因此如果在平时使用sys.stdin.readline( )获取输入的话,不要忘了去掉末尾的换行符,可以用strip( )函数去掉(sys.stdin.readline( ).strip('\n')),这样处理一下就行了。

#coding=utf-8 (平安科技)

# 本题为考试多行输入输出规范示例,无需提交,不计分。

import sys

if __name__ == "__main__":

    # 读取第一行的n

    n = int(sys.stdin.readline().strip())

    ans = 0

    for i in range(n):

        # 读取每一行

        line = sys.stdin.readline().strip()

        # 把每一行的数字分隔后转化成int列表

        values = list(map(int, line.split()))

        for v in values:

            ans += v

    print(ans)

程序代码:

#coding=utf-8
import sys

#  strip()方法只能用于移除字符串 开头和结尾 指定的字符(默认为空格或换行符)或字符序列。

# split(" ")--按空格切分
aa=sys.stdin.readline().strip().split(" ")  #这种方法好些
 for i in range(len(aa)-1,-1,-1):    # 逆序打印
#for i in range(len(aa)):
    print(aa[i],end=' ')  #以空格间隔
# S.join(iterable): 用于把字符串用指定的符号链接起来,返回字符串格式
# S:需要的分隔符
# iterable:被分割对象
# print(" ".join(sys.stdin.readline().strip().split(" ")[::-1]))  #可以

*********************************************************************

join() 方法:用于将序列中的元素以指定的字符连接生成一个新的字符串。

str = "-";

seq = ("a", "b", "c");    #字符串序列

print str.join( seq );

结果:a-b-c

str.join(sequence)

list=['1','2','3','4','5']

print(''.join(list))         # ‘’表示无空格

结果:12345

*********************************************************************

#map(func,list) 有两个参数,前面一个是函数,后面一个是序列。该函数的意义是对一个序列进行前面参数函数的操作,然后返回一个新的list。
# line= map(int,input("enter character:").split())  # 把一个字符串分割成字符串数组

line= map(int,input().split())  # map类型,要转换为list, 或者用for循环,才能打印出数字,或者字符
line= list(line)
# line= [i for i in line]        # 和上面相同效果 ,<class 'list'>

print((line))

*******************************************************************

# length = len(character)
# print(length)
# print(character[length-1])

# print(character[-1])    #和上面效果相同

*******************************************************************
string = sys.stdin.readline().strip().split()   # <class 'list'>
num = 0

方法一:
for i in string[0]:
    # print("序号:%s 值:%s" % (string[0].index(i)+1,i))
    if i==string[1]:
        num=num+1

elif chr(ord(val)-32)==string[1]:  #大小写转换
        num=num+1
    elif chr(ord(val)+32)==string[1]:  #大小写转换
        num=num+1

print(num)

方法二:

for i, val in enumerate(string):
   print("序号:%s  值:%s" % (i + 1, val))
   if val==string[1]:
      num=num+1
print(num)

方法三:

for i in range(len(string[0])):  
     if string[0][i]==(string[1]):  
         num=num+1  

chr(x )      将一个整数转换为一个字符    

ord(x )      将一个字符转换为它的整数值    

chr(65)='A'

ord('A')=65

# upper() 方法将字符串中的小写字母转为大写字母;
# lower() 方法转换字符串中所有大写字符为小写字母;

# capitalize()将字符串的第一个字母变成大写,其他字母变小写;
# title() 方法返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写。

*******************************************************************

sort 与 sorted 区别:

sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。

list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。

sorted(students, reverse=True) # 按降序 False-升序(默认)

while True:
    try:
        n=int(input())
        r=[]
        for i in range(n):
            r.append(int(input()))
            print(r)
        for i in sorted(set(r),reverse=False):    # sorted(r,reverse=True), set()可以去掉重复的数字
            print(i)
    except:
        break

*****************************************************************************

函数调用:把b.py中的代码封装成一个函数,在文件夹下新建c.py,通过c.py来调用b.py中封装的函数,目录如下:

├── a

│   ├── a.py

│   └── __init__.py

├── b

│   ├── b.py

│   └── __init__.py

└── c.py

a.py文件:

# coding=utf-8
def a():
    print("I am apple")
if __name__ == "__main__":
    a()

b.py文件:

# coding=utf-8
from a import a
def b():
    print("I am bob")
    a()
if __name__ == "__main__":
    b()

c.py文件:

# coding=utf-8
import sys

# b的路径(绝对路径),当c与a和b在不同路径下时使用。
sys.path.append("C:/Users/Administrator/Desktop/Python程序")  

from b import b
b()
print("I am cc")

# sys添加路径
# 将想要用的文件所在目录path添加到系统路径(绝对路径)
# import sys
# sys.path.append(path)

***************************************************************

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值