牛客网_5个小时学python_01-06

文章介绍了Python的基础知识,包括输入输出、条件语句(如if选择)、函数的使用,以及列表和元组的操作。示例代码展示了如何处理输入数据,进行简单的计算和逻辑判断,以及如何通过map、zip等函数进行数据处理。此外,还强调了列表和元组在数据存储和不可变性方面的差异。
摘要由CSDN通过智能技术生成

01 输入输出

VP1 牛牛最喜欢的语言

import sys
print("Python is the best language!")
for line in sys.stdin:
    a = line.split()
    print(int(a[0]) + int(a[1]))

VP2 冲击offer的牛牛

import sys
grade=88.9
print(type(grade))
print(int(grade))
for line in sys.stdin:
    a = line.split()
    print(int(a[0]) + int(a[1]))

VP3 牛客相亲网

import sys
x=input()
y=input()
print(x,y)
for line in sys.stdin:
    a = line.split()
    print(int(a[0]) + int(a[1]))

VP4 朋友的年龄和

import sys
age=map(int,input().split())
print(sum(list(age)))
for line in sys.stdin:
    a = line.split()
    print(int(a[0]) + int(a[1]))

Tip:
map映射input获得数字split加空格int返回值,list变列表sum求列表数之和陪你听输出

02 条件语句

VP5 牛牛的选择

import sys
Tencent=float(input())
Alibaba=float(input())
if Tencent > Alibaba:
    print("Tencent") 
else:
    print("Alibaba")
for line in sys.stdin:
    a = line.split()
    print(int(a[0]) + int(a[1]))

VP6 多样的选择

import sys
sc=int(input())
if sc==0:
    print("pycharm")
else:
    print("vscode")
for line in sys.stdin:
    a = line.split()
    print(int(a[0]) + int(a[1]))

VP7 牛妹的烦恼

import sys
num=input().split()
niuniu = num[0]
niucola = num[1]
niumei = num[2]
if niuniu > niucola and niuniu> niumei:
    print('Python')
elif niucola > niuniu and niucola > niumei:
    print('Java')
else:
    print('C')
for line in sys.stdin:
    a = line.split()
    print(int(a[0]) + int(a[1]))

03 函数

VP8 网页的生成

import sys
def had(h:int):
    return 2 * h
h1,h2 = map(int,input().split( ))
print (had(h1))
print (had(h2))
for line in sys.stdin:
    a = line.split()
    print(int(a[0]) + int(a[1]))

VP9 牛牛的朋友们

from re import S
import sys
x,y=map(int,input().split())

def day1(x,y):
    s= x+y
    return s
def day2(x,y):
    c= x-y
    return c
s=day1(x,y)
c=day2(x,y)
print(s,c)
print(s*c)
for line in sys.stdin:
    a = line.split()
    print(int(a[0]) + int(a[1]))

04 列表

VP10 单词的字母

import sys
list1=['P', 'y', 't', 'h', 'o', 'n']
print(list1[3])
print(list1[-4:])
for line in sys.stdin:
    a = line.split()
    print(int(a[0]) + int(a[1]))

VP11 改变单词游戏

import sys
a=input().split()
print(a)
a.pop()
print(a)
a.append(input())
print(a)

for line in sys.stdin:
    a = line.split()
    print(int(a[0]) + int(a[1]))

VP12 统计牛客网数据

import sys
list = list(map(int,input().split()))
print(max(list),min(list),sum(list),sep='\n')


for line in sys.stdin:
    a = line.split()
    print(int(a[0]) + int(a[1]))

VP13 统计人次

import sys
list = input().split() 
print(list.count('NiuNiu')) 
for i in list: 
    if i == 'NiuNiu': 
        print(list.index("NiuNiu")) 
        break
for line in sys.stdin:
    a = line.split()
    print(int(a[0]) + int(a[1]))

Tip:

  • 使用“[ ]”进行创建,内部元素可以是任意数据类型:list1=[“Hello”,“world”,True,0.01,12]
  • 列表元素是按照有序顺序进行排序的每个索引对应一个数据列表数据可以重复存储内部元素可以是任意数据类型根据内部元素多少动态分配内存空间:list2=list([“Hello”,“world”,True,0.01,12])
  • 获取列表元素索引:
  • (1)使用index()函数获取元素索引,若列表中有重复元素,只获取第一个位置的索引,元素不存在会抛出错误
list1 = ["Hello","Hello",True,0.01,12]
# 索引为 0
print(list1.index("Hello"))
# 索引为 4
print(list1.index(12))
# 索引不存在 ValueError: 100 is not in list
print(list1.index(100))
  • (2)给index()函数设置参数,可以在指定的范围内查找元素的索引位置
list1 = ["Hello", "Hello", True, 0.01, 12]
# 从索引1开始到索引4结束,不包括索引4,查找元素True的索引为2
print(list1.index(True, 1, 4))
  • 获取列表单个元素:
  • (1)对于一个列表,索引从前往后下标是从0N-1,从后往前是-N-1,N表示元素个数:
list1 = ["Hello", "Hello", True, 0.01, 12]
# 获取索引为2的元素 True
print(list1[2])
# 获取索引为-1的元素 12
print(list1[-1])
# IndexError: list index out of range
print(list1[5])
  • 获取列表多个元素:使用索引只能获取一个元素,想要获取列表中多个元素使用切片
  • 公式:列表名[start : stop :step],意思是从哪里开始到哪里结束,可以定义步长(默认步长为1,step不能为0)。
    对于切片的结果就是对原列表的拷贝生成一个新的列表对象,若step为负数则是从后往前开始截取切片。
    切片的用法如下:
list1 = ["Hello", "Hello", True, 0.01, 12, 32, 34]
  
# 取索引1~6,默认步长为1:['Hello', True, 0.01, 12, 32]
print(list1[1:6:])
# 取索引1~6,['Hello', True, 0.01, 12, 32]
print(list1[1:6:1])
# 取索引1~6,步长为2:['Hello', 0.01, 32]
print(list1[1:6:2])
# start不写,默认从0开始:['Hello', True, 12]
print(list1[:6:2])
# ['Hello', True, 12]
print(list1[0:6:2])
# stop不写,
print(list1[0::2])
# step为负数 -1 [34, 32, 12, 0.01, True, 'Hello', 'Hello']
print(list1[::-1])
# [34, 12, True, 'Hello']
print(list1[::-2])
# [32, 12, 0.01, True, 'Hello', 'Hello']
print(list1[5::-1])
# [32, 12, 0.01, True]
print(list1[5:1:-1])
  • 判断元素是否存在于列表:
  • (1)使用in或者not in,输出的是布尔类型的值:
list1 = ["Hello", "Hello", True, 0.01, 12, 32, 34]
  
# True
print("Hello" in list1)
# False
print("Hello" not in list1)
# False
print(True not in list1)
# True
print(12 in list1)
  • (2)遍历列表元素:
list1 = ["Hello", "Hello", True, 0.01, 12, 32, 34]
for i in list1:
    print(i)
  • 列表添加操作:
    在这里插入图片描述
list1=[10,20,30,40,50,60]
# 在列表末尾添加一个元素
list1.append(34)
# [10, 20, 30, 40, 50, 60, 34]
print(list1)
# 在列表末尾添加多个元素
list1.extend([21,12,34])
# [10, 20, 30, 40, 50, 60, 34, 21, 12, 34]
print(list1)
# 在列表任意位置添加一个元素
list1.insert(0,1)
# [1, 10, 20, 30, 40, 50, 60, 34, 21, 12, 34]
print(list1)
# 在列表任意位置添加多个元素,会删除切片的元素,然后添加新元素
list2=["hello",3,40]
list1[5:8:]=list2
# [1, 10, 20, 30, 40, 'hello', 3, 40, 21, 12, 34]
print(list1)
  • 列表删除操作:
    在这里插入图片描述
list1 = [10, 20, 30, 40, 50, 60, 70]
list1.remove(20)
# [10, 30, 40, 50, 60, 70]
print(list1)
# 删除索引为1的元素,不指定删除最后一个元素
list1.pop(1)
# [10, 40, 50, 60, 70]
print(list1)
# 切片删除
list1[1:3] = []
# [10, 60, 70]
print(list1)
  • 修改列表元素:
list1 = [10, 20, 30, 40, 50, 60, 70]
list1[3]="Hello"
# [10, 20, 30, 'Hello', 50, 60, 70]
print(list1)
# 切片方式
list1[3:6]=[1,1,1,1]
# [10, 20, 30, 1, 1, 1, 1, 70]
print(list1)
  • 列表排序操作
    有常见的两种方式可以对列表中的元素进行排序,使用sort(),或者sorted()的方式进行排序。
    两者区别就是前者排序后不会生成新的列表对象,而后者会生成一个新的列表对象:
list1 = [10, 30, 20, 40, 80, 60]
# 原来list1: 1738929360704
print("原来list1:", id(list1))
# [10, 20, 30, 40, 60, 80] 默认升序
list1.sort()
print(list1)
# 后来list1: 1738929360704
print("后来list1:", id(list1))
# 指定reverse=True为降序
list1.sort(reverse=True)
# [80, 60, 40, 30, 20, 10]
print(list1)
###################################
list2 = [10, 30, 67, 100, 80, 32]
# 原来list2:  2357934175872
print("原来list2: ", id(list2))
list2 = sorted(list2)
# # [10, 30, 32, 67, 80, 100]
print(list2)
# 后来list2:  2357931224384
print("后来list2: ", id(list2))
# 降序
list2 = sorted(list2, reverse=True)
# [100, 80, 67, 32, 30, 10]
print(list2)

还可以使用循环生成列表,称为列表生成式:

[ i*i for i in range(a,b) ]

通过一个for循环生成列表,i*i指的是计算公式
# 生成1-9的列表式子,并通过i+i计算
list1 = [i + i for i in range(1, 10)]
# [2, 4, 6, 8, 10, 12, 14, 16, 18]
print(list1)

05 元组

VP14 无法更改的信息

import sys
one = tuple(map(str,input().split()))
two = tuple(map(str,input().split()))
print(one)
print(two)
three = []
three.extend(list(one[:3]))
#这行代码从元组 one 中取出前3个元素(如果存在的话),将这些元素转换为一个列表,然后将这个列表添加到列表 three 的末尾
three.extend((list(two[-3:])))
#这行代码从元组 two 中取出最后3个元素(如果存在的话),将这些元素转换为一个列表,然后将这个列表添加到列表 three 的末尾
print(tuple(three))
#这个元组应该包含元组 one 的前3个元素和元组 two 的最后3个元素(如果这些元素存在的话)
for line in sys.stdin:
    a = line.split()
    print(int(a[0]) + int(a[1]))

Tips:

  • [ : ],:的左边是开始的位置,右边是结束的位置,没有就是从头开始/结束于末尾。

  • [:3] 这个操作是获取列表的前三个元素。:
    两侧的数字表示切片的开始和结束的位置,左边的数字(这里省略了)表示开始的位置,默认为0,也就是从列表的开始进行切片;右边的数字3表示结束的位置,切片会包含这个位置之前的元素,但不包括这个位置的元素。所以
    [:3] 就表示从列表开始到位置3之前的元素,也就是列表的前三个元素。

  • [-3:] 这个操作是获取列表的最后三个元素。在Python中,负数索引表示从列表的尾部开始计数。-3
    就表示从列表尾部向前数的第三个位置。这里右边的数字(省略了)表示切片结束的位置,默认为列表的长度,也就是一直切到列表的尾部。所以
    [-3:] 就表示从列表的倒数第三个元素到列表尾部的所有元素,也就是列表的最后三个元素。

  • 元组(tuple) 不可变是指当你创建了 tuple 时候,它就不能改变了,也就是说它也没有 append(),
    insert() 这样的方法,但它也有获取某个索引值的方法,但是不能赋值, tuple 是不可变的,所以代码更安全。

  • 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可

tuple1=('两','twowter','liangdianshui',123,456) 
tuple2='两','twowter','liangdianshui',123,456
  • 元组下标索引也是从 0 开始,元组(tuple)可以使用下标索引来访问元组中的值。
    在这里插入图片描述
    在这里插入图片描述

VP15 牛客的伙伴们

import sys
a = ['NiuMei', 'NiuKele', 'NiuNeng'] 
b = [3, 4, 5, 8] 
c = list(zip(a,b)) 
print(c)
for line in sys.stdin:
    a = line.split()
    print(int(a[0]) + int(a[1]))

Tips:

  • zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。我们可以使用 list() 转换来输出列表。
  • 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值