01 输入输出
NP1 Hello World!
将字符串 'Hello World!' 存储到变量str中,再使用print语句将其打印出来
str='Hello World!'
print(str)
NP2 多行输出
将字符串 'Hello World!' 存储到变量str1中,再将字符串 'Hello Nowcoder!' 存储到变量str2中,再使用print语句将其打印出来(一行一个变量)
str1='Hello World!'
str2='Hello Nowcoder!'
print(str1,str2,sep=('\n')) #1 sep
print(str1 + "\n" + str2) #2 字符串拼接加\n
NP3 读入字符串
请使用input函数读入一个字符串,然后将其输出
str=input()
print(str)
NP4 读入整数数字
请你使用input函数读入数字并输出数字与变量类型
a=int(input())
print(a,type(a),sep='\n')
NP5 格式化输出(一)
给定某一个名字name,假设输入的name为Niuniu,则输出 I am Niuniu and I am studying Python in Nowcoder! 请按以上句式输出相应的英文句子
name=input()
print(f'I am {name} and I am studying Python in Nowcoder!') #f.'{a}'
print('I am {} and I am studying Python in Nowcoder!'.format(name)) #'{}'.format(a)
f.'{a}'
'{}'.format(a)
NP6 牛牛的小数输出
使用print函数控制小数的位数,把所有读入的数据都保留两位小数输出吗?
a=float(input())
print("{:.2f}".format(a)) # 使用{:.nf} n表示取小数点后n位
print('%.2f'%a) # 使用%.nf n表示小数位数
round()
返回浮点数x的四舍五入值n位小数
round( x , n )
format() 格式化输出
使用大括号‘{}’作为特殊字符代替‘%’
1、位置
- 不带编号
- 带数字编号
- 带关键字
print('{} {}'.format('H','J')) # 不带字段
H J
print('{1} {1} {0}'.format('H','J')) # 带数字编号
J J H
print('{a} {b} {a}'.format(a='H',b='J')) # 带关键字
H J H
2、取位数
- < (默认)左对齐、> 右对齐、^ 中间对齐、= (只用于数字)在小数点后进行补齐
- 取位数“{:4s}”、"{:.2f}"等
print('{} and {}'.format('H','J')) # 默认左对齐
H and J
print('{:10s} and {:>10s}'.format('H','J')) # 取10位左对齐,取10位右对齐
H and J
print('{:^10s} and {:^10s}'.format('H','J')) # 取10位中间对齐
H and J
print('{:.2f}'.format(1.123)) # 取2位小数
1.12
print('{0} is {0:>10.2f}'.format(1.123)) # 取2位小数,右对齐,取10位
1.123 is 1.12
3、多个格式化
'b' - 二进制
>>> print('{0:b}'.format(3))
11
'c' - 字符。在打印之前将整数转换成对应的Unicode字符串。
>>> print('{:c}'.format(20))
4
'd' - 十进制整数
>>> print('{:d}'.format(20))
20
'o' - 八进制
>>> print('{:o}'.format(20))
24
'x' - 十六进制
>>> print('{:x}'.format(20))
14
'e' - 幂符号。用科学计数法打印数字。用'e'表示幂。
>>> print('{:e}'.format(20))
2.000000e+01
'g' - 一般格式。将数值以fixed-point格式输出。当数值特别大的时候,用幂形式打印。
>>> print('{:g}'.format(20.1))
20.1
'n' - 数字。当值为整数时和'd'相同,值为浮点数时和'g'相同。不同的是它会根据区域设置插入数字分隔符。
>>> print('{:f}'.format(20))
20.000000
>>> print('{:n}'.format(20))
20
'%' - 百分数。将数值乘以100然后以fixed-point('f')格式打印,值后面会有一个百分号
>>> print('{:%}'.format(20))
2000.000000%
4、通过名字匹配参数
>>> 'Coordinates: {latitude}, {longitude}'.format(latitude='37.24N', longitude='-115.81W')
'Coordinates: 37.24N, -115.81W'
>>> coord = {'latitude': '37.24N', 'longitude': '-115.81W'}
>>> 'Coordinates: {latitude}, {longitude}'.format(**coord)
'Coordinates: 37.24N, -115.81W'
可在字符串前加f以达到格式化的目的,在{}里加入对象,此为format的另一种形式:
name = 'H'
age = 18
sex = 'man'
job = "IT"
salary = 9999.99
print(f'my name is {name.capitalize()}.')
print(f'I am {age:*^10} years old.')
print(f'I am a {sex}')
print(f'My salary is {salary:10.3f}')
# 结果
my name is H.
I am ****18**** years old.
I am a man
My salary is 9999.990
02 类型转换
NP7 小数化整数
利用强制类型转换将小数转变成整数
print(int(float(input())))
# input输入的是str类型数据,需要强转成float,然后输出的时候强转成int类型
NP8 为整数增加小数点
使用强制类型转换为输入的整数增加小数点,并输出改变类型后的变量类型
num=float(input())
print('{:.1f}'.format(num),type(num),sep='\n')
NP9 十六进制数字的大小
输入描述:input读入一个十六进制数字,按照字符串的形式包括数字0-9、字母A-F
输出描述:输出读入数字的十进制大小
num=int(input(),16)
print(num)
int(x, base)
x -- 字符串或数字
base -- 进制数,默认十进制
实例:
>>> int(3) # 输入整数的时候,默认10进制
3
>>> int(3.6) # 浮点数向下取值
3
>>> int('12',16) # 如果是带参数base的话,12要以字符串的形式进行输入,12 为 16进制
18
>>> int('0xa',16) # 16进制 转10进制
10
>>> int('10',8) # 8进制转10进制
8
03 字符串
NP10 牛牛最好的朋友们
两个名字分别用input读入记录在两个字符串中,请使用字符串连接将两个名字依次连接在一个字符串中
a=input()
b=input()
print(a+b) #连接符
print(a,b,sep='') #间隔符
print(''.join([a,b]))
NP11 单词的长度
根据输入的单词,快速得到单词的长度
print(len(input()))
NP12 格式化输出(二)
输入描述:一行一个字符串表示名字
输出描述:请分别按全小写、全大写和首字母大写的方式对name进行格式化输出(注:每种格式独占一行)
word=input()
print(word.lower(),word.upper(),word.title(),sep='\n')
大小写
.lower() --- 全部小写
.upper() --- 全部大写
.title() --- 各个字符的首字母大写
.capitalize() --- 首字母大写
.swapcase() ---大小写对调
NP13 格式化输出(三)
输入描述:一行一个字符串表示名字name(注:name两边带有一些多余的空白符)
输出描述:一行输出name去掉两边的空白符后的原本的内容
name = input()
print(name.strip())
删除空格
.strip() --- 删除两边空格
.lstrip() --- 删除左边空格
.rstrip() --- 删除右边空格
.replace(" ","") --- 删除所有空格
-- 拼接
NP14 不用循环语句的重复输出
输入描述:输入一个字符串
输出描述:输出重复100次之后的字符串,字符串之间没有间隔
a=input()
print(a*100)
NP15 截取用户名前10位
输入描述:输入一个字符串,长度一定不低于10
输出描述:输出截取前10个字符后的子串
word=input()
print(word[0:10])
strname[start : end : step]
strname:要截取的字符串;
start:表示要截取的第一个字符所在的索引(截取时包含该字符)默认为 0
end:表示要截取的最后一个字符所在的索引(截取时不包含该字符)默认为字符串的长度
step:默认为 1
04 列表
NP16 发送offer
创建了一个依次包含字符串 'Allen' 和 'Tom' 的列表offer_list,作为通过面试的名单
请你依次对列表中的名字发送类似 'Allen, you have passed our interview and will soon become a member of our company.' 的句子
但由于Tom有了其他的选择,没有确认这个offer,HR选择了正好能够确认这个offer的Andy,所以请把列表offer_list中 'Tom' 的名字换成 'Andy' ,
再依次发送类似 'Andy, welcome to join us!' 的句子
offer_list=['Allen','Tom']
for i in offer_list:
print( f'{i}, you have passed our interview and will soon become a member of our company.')
offer_list[1]='Andy'
for j in offer_list:
print( f'{j}, welcome to join us!')
NP17 生成列表
输入描述:输入一串字符串,它们之间通过空格间隔开
输出描述:输出封装后的列表
a=list(input().split(' '))
print(a)
字符串的搜索
a.count('x',n) 统计从第n位开始x出现的次数
a.startwith('x',beg,end) 检查a从起始位置beg到结束位置end是否是以x开头,如果是则返回 True,否则返回 False
a.find('x',beg,end) 从起始位置beg到结束位置end查找x,包含则返回索引值,否则返回-1
a.replace('x','y','2) 返回x替换成y后生成的新字符串替换不超过2次
填充或剔除
str.rjust(5,'*') 原字符串右对齐,使用*填充至长度5的新字符串
如果指定的长度小于字符串的长度则返回原字符串
str.strip('x') 移除str头尾指定的字符x
str.center(10,'x')返回一个原字符串居中,并使用'x'填充至长度 width 的新字符串
分割与合并
str.replace
text.split(str=' ',num) 通过分隔符对字符串切片,分隔 num+1 个子字符串
text.partition(str) 根据指定的分隔符str将text进行分割,返回一个3元的元组,第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串
symbol.join(seq) 将序列seq中的元素以指定的字符symbol连接生成一个新的字符串
NP18 生成数字列表
系统录入了一连串数字,数字之间依靠逗号隔开,将这些数字存储在列表中,列表元素以int的形式。
输入描述:输入一行整数,数字之间以空格间隔
输出描述:输出这些数字组成的完整列表
list1=input().split(' ')
list2=[]
for i in list1:
list2.append(int(i))
print(list2)
NP19 列表的长度
使用len函数统计输入了多少字符串,列表中有多少元素
输入描述:输入一行多个字符串,字符串之间通过空格间隔
输出描述:输出列表的长度
num=len(input().split(' '))
print(num)
NP20 增加派对名单(一)
输入描述:输入多个连续的字符串表示名字,以空格间隔
输出描述:输出在最后添加完Allen后的完整列表
list1=input().split(' ')
list1.append('Allen')
print(list1)
NP21 增加派对名单(二)
输入描述:输入多个连续的字符串表示名字,用空格间隔
输出描述:输出在最前面插入名字后的完整列表
list1=input().split(' ')
list1.insert(0,'Allen')
print(list1)
添加元素
list1.append()
list1.insert(index,obj)
index -- 对象 obj 需要插入的索引位置。
obj -- 要插入列表中的对象
NP22 删除简历
从列表中删除第一个元素,然后输出列表
输入描述:以字符串的形式输入公司名字,字符串之间以空格间隔
输出描述:输出删除第一个元素后的完整列表
list1=input().split(' ')
del(list1[0])
print(list1)
删除元素
del() 删除变量、列表或列表片段等
list1.pop() 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list1.remove(obj) 用于移除列表中某个值的第一个匹配项
list1.clear() 用于清空列表
NP23 删除好友
输入描述:
第一行输入多个字符串表示朋友的名字,以空格间隔
第二行输入吵架的朋友的名字,必定是第一行中出现的名字
输出描述:
输出删除好友后的完整列表
list1=input().split(' ')
word=input()
list1.remove(word)
print(list1)
NP24 淘汰排名最后的学生
输入描述:输入一行多个字符串表示同学名字,最少不少于3个名字,以空格间隔
输出描述:输出删除末三位后的完整列表
list1=input().split(' ')
n=len(list1)
del(list1[n-3:n])
print(list1)
NP25 有序的列表
创建一个依次包含字符串'P'、'y'、't'、'h'、'o'和'n'的列表my_list,先对列表进行临时排序,第一行输出排序后的完整列表,第二行输出原始的列表。再对列表进行降序排序,第三行输出排序后完整的列表
输出描述:
第一行输出临时排序后的列表;
第二行输出原始的列表;
第三行输出完成降序排序后的列表
my_list=['P','y','t','h','o','n']
print(sorted(my_list))
print(my_list)
my_list.sort(reverse=True)
print(my_list)
sort()和sorted()
sort(key=None,reverse=False) ,sort只针对列表,没有返回值,会改变原列表顺序
sorted(iterable,key=None,reverse=False) iterable可以是任何可迭代的对象,不改变原数据排列顺序,有返回值
reverse=True 降序;reverse=False 升序
NP26 牛牛的反转列表
num = [3, 5, 9, 0, 1, 9, 0, 3]
输出反转后的列表
num = [3,5,9,0,1,9,0,3]
num.reverse()
print(num)
NP27 朋友们的喜好
name = ['Niumei', 'YOLO', 'Niu Ke Le', 'Mona']
创建一个二维列表friends,使用append函数将name添加到friends的第一行
Niumei最喜欢吃pizza,最喜欢数字3,YOLO最喜欢吃fish, 最喜欢数字6,Niu Ke Le最喜欢吃potato,最喜欢数字0,Mona最喜欢吃beef,最喜欢数字3
创建一个列表food依次记录朋友们最喜欢吃的食物,并将创建好的列表使用append函数添加到friends的第二行;
创建一个列表number依次记录朋友们最喜欢的颜色,并将创建好的列表使用append函数添加到friends的第三行。
使用print函数直接打印这个二维list
Friends=[]
name = ['Niumei', 'YOLO', 'Niu Ke Le', 'Mona']
food=['pizza','fish','potato','beef']
number=[3,6,0,3]
for i in [name,food,number]:
Friends.append(i) #way 1
Friends.append(name) #way 2
Friends.append(food)
Friends.append(number)
print(Friends)
NP28 密码游戏
破解方案如下:每位数字都要加上3再除以9的余数代替该位数字,然后将第1位和第3位数字交换,第2位和第4位数字交换
输入描述:输入一个四位数的整数
输出描述:输出破解后的密码,以四位数的形式
num=input()
A=[]
for i in range(0,4):
a=(int(num[i])+3)%9
A.append(a)
print(A[2],A[3],A[0],A[1],sep='')
NP29 用列表实现栈
栈是一种先进后出的数据结构,用Python的列表来模拟栈。假设初始的列表为 stack = [1, 2, 3, 4, 5],请将其视作栈,弹出末尾两个元素,再将输入元素加入到栈中,每次操作完成后都要输出整个列表
输入描述:输入要加入栈中的整数
输出描述:
第一行输出第一次出栈后的列表
第二行输出第二次出栈后的列表
第三行输出元素入栈后的列表
stack = [1, 2, 3, 4, 5]
stack.pop()
print(stack)
stack.pop()
print(stack)
stack.append(int(input()))
print(stack)
NP30 用列表实现队列
队列是一种先进先出的数据结构,先入队的元素先出队,先请用Python列表模拟队列。现有一列表 queue = [1, 2, 3, 4, 5] 被视作队列,请使用pop函数连续两次取出队首元素,再使用append函数将输入元素添加到队尾,每次操作后都要输出完整的列表。
输入描述:
输入一个整数表示要添加到队列的元素
输出描述:
第一行输出第一次取出队首后的列表
第二行输出第二次取出队首后的列表
第三行输出添加元素到队列后的列表
queue = [1, 2, 3, 4, 5]
queue.pop(0)
print(queue)
queue.pop(0)
print(queue)
queue.append(int(input()))
print(queue)
NP31 团队分组
创建一个列表group_list,其中依次包含字符串 'Tom', 'Allen', 'Jane', 'William', 'Tony' 表示这个小组成员的名字。现有三项任务需要他们去完成,根据不同任务的繁琐度和实际情况需要分别派2人、3人、2人来完成,他们决定通过对列表分片来分配任务。
使用print()语句和切片来打印列表group_list的前两个元素表示去做第一个任务的人的名字,
再使用print()语句和切片来打印列表group_list的中间三个元素表示去做第二个任务的人的名字,
再使用print()语句和切片来打印列表group_list的后两个元素表示去做第三个任务的人的名字。
group_list=['Tom','Allen','Jane','William','Tony']
print(group_list[0:2])
print(group_list[1:4])
print(group_list[3:])
05 运算符
NP32 牛牛的加减器
输入两个数字x与y,分别输出x+y的结果和x-y的结果。
输入描述:分两行输入两个整数
输出描述:分两行输出加与减的结果
x=int(input())
y=int(input())
print(x+y,x-y,sep='\n')
NP33 乘法与幂运算
输入描述:分两行输入两个整数x与y
输出描述:第一行输出x*y,第二行输出x的y次方
x=int(input())
y=int(input())
print(x*y,x**y,sep='\n')
幂运算 **
NP34 除法与取模运算
输入描述:分两行输入两个整数x与y,其中y不为0
输出描述:
第一行输出x除以y的商和余数;
第二行输出x除以y的非整除结果,保留两位小数
x=int(input())
y=int(input())
print(x//y,x%y,sep=' ')
print('{:.2f}'.format(x/y))
商 //
余数%
NP35 朋友的年龄是否相等
输入描述:一行输入两个整数,以空格间隔
输出描述:直接输出比较结果(True或者False)
a,b=input().split()
print(a==b)
map()
根据提供的函数对指定序列做映射。
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表
map(function, iterable, ...)
- function -- 函数
- iterable -- 一个或多个序列
>>> def square(x) : # 计算平方数
... return x ** 2
>>> map(square, [1,2,3,4,5]) # 计算列表各个元素的平方
>>> list(map(square, [1,2,3,4,5])) # 使用 list() 转换为列表
[1, 4, 9, 16, 25]
>>> list(map(lambda x: x ** 2, [1, 2, 3, 4, 5])) # 使用 lambda 匿名函数
[1, 4, 9, 16, 25]
NP36 谁的数字大
输入描述:一行输入两个整数,以空格间隔。
输出描述:
第一行输出第一个数字是否大于第二个数字,True 或者 False
第二行输出第一个数字是否小于第二个数字,True 或者 False
a,b=list(map(int,input().split(' ')))
print(a>b)
print(a<b)
NP37 不低于与不超过
输入描述:一行输入三个正浮点数k、x、y,三个数字通过空格间隔
输出描述:
第一行输出k是否不超过x,True或者False
第二行输出k是否不低于y,True或者False
k,x,y=list(map(float,input().split()))
print(k<=x)
print(k>=y)
NP38 牛牛的逻辑运算
输入描述:输入两个整数x和y,通过空格间隔
输出描述:每行分别直接输出x与y,x或y,非x,非y的值,前两个为数值,后两个为布尔值
x,y=map(int,input().split())
print(x and y,x or y,not x,not y,sep='\n')
NP39 字符串之间的比较
输入描述:两行输入两个字符串,其中字符仅包含大小写字母和数字
输出描述:
第一行输出s1是否与s2相等的布尔值
第二行输出s1.lower()是否与s2.lower()相等的布尔值
a=input()
b=input()
print(a==b,a.lower()==b.lower(),sep='\n')
NP40 俱乐部的成员
输入描述:
第一行输入俱乐部的名单,以多个字符串的形式,字符串之间用空格间隔
第二行输入要查询的名字name
输出描述:
直接输出这个名字是否属于俱乐部名单的布尔值,True或者False
list1=input().split()
name=input()
print(name in list1)
NP41 二进制位运算
输入描述:一行输入两个整数x、y,以空格间隔
输出描述:第一行输出x位与y,第二行输出x位或y
x,y=map(int,input().split())
print(f'{x&y}',f'{x|y}',sep='\n')
x,y=map(int,input().split())
print(x&y)
print(x|y)
NP42 公式计算器
输入的数字分别是x、y、z、k,请输出x+y的结果与z-k的结果相乘的值
输入描述:一行输入四个整数,以空格间隔
输出描述:直接输出计算结果,结果一定是整数
x,y,z,k=map(int,input().split())
print((x+y)*(z-k))
06 条件语句
NP43 判断布尔值
输入布尔变量,使用条件语句判断,如果为真则输出"Hello World!",否则输出"Erros!"
输入描述:输入0 或者 1。
输出描述:输出"Hello World!"或者"Erros!"
a=bool(int(input()))
if a is True:
print("Hello World!")
else:
print("Erros!")
NP44 判断列表是否为空
创建一个空列表my_list,如果列表为空,请使用print()语句一行输出字符串'my_list is empty!',
否则使用print()语句一行输出字符串'my_list is not empty!'
my_list=[]
if my_list==[]:
print('my_list is empty!')
else:
print('my_list is not empty!')
NP45 禁止重复注册
创建一个依次包含字符串'Niuniu'、'Niumei'、'GURR'和'LOLO'的列表current_users,
再创建一个依次包含字符串'GurR'、'Niu Ke Le'、'LoLo'和'Tuo Rui Chi'的列表new_users,
使用for循环遍历new_users,如果遍历到的新用户名在current_users中,
则使用print()语句一行输出类似字符串'The user name GurR has already been registered! Please change it and try again!'的语句,
否则使用print()语句一行输出类似字符串'Congratulations, the user name Niu Ke Le is available!'的语句。注:用户名的比较不区分大小写
current_users=['Niuniu','Niumei','GURR','LOLO']
current_users=[i.lower() for i in current_users]
new_users=['GurR','Niu Ke Le','LoLo','Tuo Rui Chi']
for i in new_users:
if i.lower() in current_users:
print(f'The user name {i} has already been registered! Please change it and try again!')
else:
print(f'Congratulations, the user name {i} is available!')
NP46 菜品的价格
'pizza':10块钱一份,'rice' :2块钱一份,'yogurt':5块钱一份,剩下的其他菜品都是8块钱一份牛请你根据输入的字符串,使用if-elif-else语句判断需要花费多少钱?
输入描述:输入一个字符串表示菜品
输出描述:输出该菜品的价格
food=input()
manu={'pizza':10,'rice':2,'yogurt':5}
if food in manu:
print(manu[food])
else:
print(8)
NP47 牛牛的绩点
根据成绩计算平均绩点,假如绩点与等级的对应关系如下表所示。请根据输入的等级和学分数,计算均绩
A 4.0
B 3.0
C 2.0
D 1.0
F 0
输入描述:连续输入一行等级一行学分,遇到等级为False则结束输入
输出描述:均绩保留两位小数
grade = {"A":4.0, "B":3.0, "C":2.0, "D":1.0, "F":0}
a = []
b = []
while True:
g = input()
if g == "False":
break
else:
t = int(input())
a.append(grade[g]*t)
b.append(t)
print("%.2f" % (sum(a) / sum(b)))
NP48 验证登录名与密码
登录系统需要验证用户名与密码,当二者都正确时才允许登录,其中管理员的用户名为'admis',密码为'Nowcoder666'
输入描述:
第一行输入字符串表示用户名;
第二行输入字符串表示密码。
输出描述:
登录成功输出"Welcome!",登录失败输出"user id or password is not correct!"
password={'admis':'Nowcoder666'}
a=input()
b=input()
if a in password and b==password[a]:
print("Welcome!")
else:
print("user id or password is not correct!")