首页 > 编程语言 >python基础练习题----练手

python基础练习题----练手

时间:2024-11-17 23:15:02浏览次数:3  
标签:练习题 10 python py ---- range str print hello

python—练手题—40题


# 01-hello world
print('hello world!')
# 如果 3 大于 0,则打印'ok'和'yes'
if 3 > 0:
    print('ok')
    print('yes')
x = 3
y = 4
print(x + y)

# 02-print
print('hello world!')
print('hello', 'world!')  # 逗号自动添加默认的分隔符:空格
print('hello' + 'world!')  # 加号表示字符拼接
print('hello', 'world', sep='***')  # 单词间用***分隔
print('#' * 50)  # *号表示重复50遍
print('how are you?', end='\n')  # 默认print会打印回车,end=''表示不要回车

# 03-基本运算
print(5 / 2)  # 2.5
print(5 // 2)  # 丢弃余数,只保留商
print(5 % 2)  # 求余数
print(5 ** 3)  # 5的3次方
print(5 > 3)  # 返回True
print(3 > 5)  # 返回False
print(20 > 10 > 5)  # python 支持连续比较
print(20 > 10 and 10 > 5)  # 与上面相同含义
print(not 20 > 10)  # False

# 04-input
number = input("请输入数字:")  # input 用于获取键盘输入
print(number)
print(type(number))  # input获取的数据是字符型
# print(number + 10) # 报错, 不能把字符和数字做运算
print(int(number) + 10)  # int 可将字符串number转换成数字
print(number + str(10))  # str可将数字10转换成字符串类型

# 05-输入输出基础练习
username = input('username:')
print('welcome', username)  # print 各项间默认以空格作为分隔符
print('welcome' + username)  # 注意引号内最后的空格

# 06-字符串使用基础
sentence = 'tom\'s pet is a cat'  # 单引号中间还有单引号,可以转义
sentence2 = "tom's pet is a cat"  # 也可以用双引号包含单引号
sentence3 = "tom said:\"hello world!\""
sentence4 = 'tom said:"hello world"'
# 三个连续的单引号或双引号,可以保存输入格式,允许输入多行字符
words = """
hello
world
abcd"""
print(words)

py_str = 'python'
# 获取字符串长度
len(py_str)  
py_str[0]  # 第一个字符
'python'[0]
py_str[-1]  # 最后一个字符
# py_str[6] 错误,下标超出范围
py_str[2:4]  # 切片,起始下标包含,结束下标不包含
py_str[2:]  # 从下标为2的字符取到结尾
py_str[:2]  # 从开头取到下标是2之前的字符
py_str[:]  # 取全部
py_str[::2]  # 步长值为2,默认是1
py_str[1::2]  # 取出yhn
py_str[::-1]  # 步长为负,表示自右向左取

py_str + 'is good'  # 简单的拼接到一起
py_str * 3  # 把字符串重复3遍

't' in py_str  # True
'th' in py_str  # True
'to' in py_str  # False
'to' not in py_str  # True

# 07-列表基础
alist = [10, 20, 30, 'bob', 'alice', [1, 2, 3]]
# 获取列表长度
len(alist)  
alist[-1]  # 取出最后一项
alist[-1][-1]  # 因为最后一项是列表,列表还可以继续取下标
[1, 2, 3][-1]  # [1,2,3]是列表,[-1]表示列表最后一项
alist[-2][2]  # 列表倒数第二项是字符串,再取出字符下标为2的字符
alist[3:5]  # ['bob','alice']
10 in alist  # True
'o' in alist  # False
100 not in alist  # True
alist[-1] = 100  # 修改最后一项的值
alist.append(200)  # 向列表中追加一项
print(alist)

# 08-元组基础
atuple = (10, 20, 30, 'bob', 'alice', [1, 2, 3])
# 获取元组长度
len(atuple)  
10 in atuple
atuple[2]
atuple[3:5]
# atuple[-1] =100  错误,元组是不可变的

# 09-字典基础
# 字典是key-value(键-值)对形式的,没有顺序,通过键取出值
adict = {'name': 'bob', 'age': 23}
# 获取字典长度
len(adict)  
'bob' in adict  # False
'name' in adict  # True
adict['email'] = '[email protected]'  # 字典中没有key,则添加新项目
adict['age'] = 25  # 字典中已有key,修改对应的value
print(adict)

# 10-基本判断
if 3 > 0:
    print('yes')
    print('ok')
if 10 in [10, 20, 30]:
    print('ok')
if -0.0:
    print('yes')  # 任何值为0的数字都是False
if [1, 2]:
    print('yes')  # 非空对象都是True
if ' ':
    print('yes')  # 空格字符也是字符,条件为Ture

# 11-条件表达式,三元运算符
a = 10
b = 20
if a < b:
    smaller = a
else:
    smaller = b
print(smaller)
s = a if a < b else b  # 和上面的if-else语句等价
print(s)

# 12-判断练习:用户名和密码是否正确
import getpass  # 导入模块

username = input('username:')
# getpass模块中,有一个方法也叫getpass
password = getpass.getpass('password:')
if username == 'bob' and password == '123456':
    print('Login successful')
else:
    print('Login incorrect')

# 13-猜数:基础实现
import random

num = random.randint(1, 10)  # 随机生成1-10之间的数字
answer = int(input('guess a number:'))  # 将用户输入的字符转换成整数
if answer > num:
    print('猜大了')
elif answer < num:
    print('猜小了')
else:
    print('猜对了')
print('the number:', num)

# 14-成绩分类1
score = int(input('分数:'))
if score >= 90:
    print('优秀')
elif score >= 80:
    print('好')
elif score >= 70:
    print('良')
elif score >= 60:
    print('及格')
else:
    print('你要努力了')

# 15-成绩分类2
score = int(input('分数:'))
if score >= 60 and score < 70:
    print('及格')
elif 70 <= score < 80:
    print('良')
elif 80 <= score < 90:
    print('优秀')
else:
    print('你要努力了')

# 16-剪刀石头布
import random

all_choices = ['石头', '剪刀', '布']
computer = random.choice(all_choices)
player = input('请出拳:')
# print('Your choice:', player, "Computer's choice:", computer)
print("Your choice: %s, Computer's choice: %s" % (player, computer))
if player == '石头':
    if computer == '石头':
        print('平局')
    elif computer == '剪刀':
        print('You WIN!!!')
    else:
        print('You LOSE!!!')
elif player == '剪刀':
    if computer == '石头':
        print('You LOSE!!!')
    elif computer == '剪刀':
        print('平局')
    else:
        print('You WIN!!!')
else:
    if computer == '石头':
        print('You WIN!!!')
    elif computer == '剪刀':
        print('You LOSE!!!')
    else:
        print('平局')

# 17-改进的剪刀石头布
import random

all_choices = ['石头', '剪刀', '布']
win_list = [['石头', '剪刀'], ['剪刀', '布'], ['布', '石头']]
prompt = """(0) 石头
(1) 剪刀
(2) 布
请选择(0/1/2):"""
computer = random.choice(all_choices)
ind = int(input(prompt))
player = all_choices[ind]

print("You choice: %s, Computer's choice: %s" % (player, computer))
if player == computer:
    print('\033[32;1m平局\033[0m')
elif [player, computer] in win_list:
    print('\033[31;1mYou WIN!!!\033[0m')
else:
    print('\033[31;1mYou LOSE!!!\033[0m')

# 18-猜数,直到才对
import random

num = random.randint(1, 10)
running = True
while running:
    answer = int(input('guess the number: '))
    if answer > num:
        print('猜大了')
    elif answer < num:
        print('猜小了')
    else:
        print('猜对了')
        running = False

# 19-猜数,5次机会
import random

num = random.randint(1, 10)
counter = 0
while counter < 5:
    answer = int(input('guess the number: '))
    if answer > num:
        print('猜大了')
    elif answer < num:
        print('猜小了')
    else:
        print('猜对了')
        break
    counter += 1
else:  # 循环被break就不执行了,没有被break才执行
    print('the number is:', num)

# 20-while循环,累加至100
sum100 = 0
counter = 1
while counter < 101:
    sum100 += counter
    counter += 1
    print(sum100)

# 21-while-break
while True:
    yn = input('Continue(y/n):')
    if yn in ['n', 'N']:
        break
    print('rinning...')

# 22-while-continue
sum100 = 0
counter = 0
while counter < 100:
    counter += 1
    # if counter % 2 ==1:
    if counter % 2 == 1:
        continue  # continue 是跳过本次循环剩余部分,回到循环条件处
    sum100 += counter
    print(sum100)

# 23-for循环遍历数据对象
astr = 'hello'
alist = [10, 20, 30]
atuple = ('bob', 'tom', 'alice')
adict = {'name': 'john', 'age': 23}

for ch in astr:
    print(ch)

for i in alist:
    print(i)

for name in atuple:
    print(name)

for key in adict:
    print('%s: %s' % (key, adict[key]))

# 24-range用法及数字累加
# range(10) #[0, 1, 2, 3, 4, 5,6,7,8,9]
# >>> list(range(10))
# range(6,11) # [6,7,8,9,10]
# range(1,10,2) # [1,3,5,7,9]
# range(10, 0, -1) # [10,9,8,7,6,5,4,3,2,1]
sum100 = 0
for i in range(1, 101):
    sum100 += i
    print(sum100)

# 25-列表实现斐波那契数列
# 列表中先给定两个数字,后面的数字总是前面两个数字之和。
fib = [0, 1]
for i in range(8):
    fib.append(fib[-1] + fib[-2])
    print(fib)

# 26-九九乘法表
for i in range(1, 10):
    for j in range(1, i + 1):
        print('%s*%s=%s' % (j, i, i * j), end=' ')
        print()
# i =1 ->j:[1]
# i =2 ->j:[1,2]
# i =3 ->j:[1,2,3]
# 由用户指定相乘到多少
n = int(input('number: '))

for i in range(1, n + 1):
    for j in range(1, i + 1):
        print('%s*%s=%s' % (j, i, i * j), end=' ')
    print()

# 27-逐步实现列表解析
# 10+5的结果放到列表中
[10 + 5]
# 10+5这个表达式计算10次
[10 + 5 for i in range(10)]
# 10+i的i来自于循环
[10 + i for i in range(10)]
[10 + i for i in range(1, 11)]
# 通过if过滤,满足if条件的才参与10+i的运算
[10 + i for i in range(1, 11) if i % 2 == 1]
[10 + i for i in range(1, 11) if i % 2]
# 生成IP地址列表
['192.168.1.%s' % i for i in range(1, 255)]

# 28-三局两胜的石头剪刀布
import random

all_choices = ['石头', '剪刀', '布']
win_list = [['石头', '剪刀'], ['剪刀', '布'], ['布', '石头']]
prompt = """(0) 石头
(1) 剪刀
(2) 布
请选择(0/1/2): """
cwin = 0
pwin = 0
while cwin < 2 and pwin < 2:
    computer = random.choice(all_choices)
    ind = int(input(prompt))
    player = all_choices[ind]

    print("You choice: %s, Computer's choise: %s" % (player, computer))
    if player == computer:
        print('\033[32;1m平局\033[0m')
    elif [player, computer] in win_list:
        pwin += 1
        print('\033[31;1mYou win!!!\033[0m')
    else:
        cwin += 1
        print('\033[31;1mYou LOSE!!!\033[0m')

# 29-文件对象基础操作
# 文件操作的三个步骤:打开、读写、关闭
# cp / etc/passwd /tmp
f = open(('/tmp/passwd'))  # 默认以r的方式打开纯文本文件
data = f.read()  # read()把所有内容读取出来
print(data)
data = f.read()  # 随着读写的进行,文件指针向后移动
# 因为第一个f.read()已经把文件指针移动到结尾了,所以在读没有数据了
# 所以data是空字符串
f.close()

f = open('/tmp/passwd')
data = f.read(4)  # 读4字节
f.readline()  # 读到换行符\n结束
f.readlines()  # 把每一行数据读出来放到列表中
f.close()

#######################################
f = open('/tmp/passwd')
for line in f:
    print(line, end='')
f.close()

#######################################
f = open('图片地址', 'rb')  # 打开非文本文件要加参数b
f.read(4096)
f.close()

#######################################
f = open('/tom/mydile', 'w')  # 'w'打开文件,如果文件不存在则创立
f.write('hello word!\n')
f.flush()  # 立即将缓存中的数据同步到磁盘
f.writelines(['2nd line.\n', 'new line.\n'])
f.close()  # 关闭

#######################################
with open('/tmp/passwd') as f:
    print(f.readline())

########################################
f = open('/tmp/passwd')
f.tell()  # 查看文件指针的位置
f.readline()
f.tell()
f.seek(0, 0)  # 第一个数字是偏移量,第2位是数字是相对位置。
# 相对位置0表示开头,1表示当前,2表示结尾

f.tell()
f.close()

# 30-拷贝文件
# 拷贝文件就是以r的方式打开源文件,以w的方式打开目标文件,将源文件数据读出后,写到目标文件。
# 以下是【不推荐】的方式,但是可以工作:
f1 = open('/bin/ls', 'rb')
f2 = open('/root/ls', 'wb')

data = f1.read()
f2.write(data)

f1.close()
f2.close()

# 31-拷贝文件
src_fname = '/bin/ls'
dst_fname = '/root/ls'
src_fobj = open(src_fname, 'rb')
dst_fobj = open(dst_fname, 'wb')
while True:
    data = src_fobj.read(4096)
    if not data:
        break
dst_fobj.write(data)
src_fobj.close()
dst_fobj.close()

# 32-位置参数
import sys

print(sys.argv)  # sys.argv是sys模块里的argv列表


# python3 position_args.py
# python3 position_args.py 10
# python3 position_args.py 10 bob

# 33-函数应用-斐波那契数列
def gen_fib(l):
    fib = [0, 1]
    for i in range(l - len(fib)):
        fib.append(fib[-1] + fib[-2])
    return fib  # 返回列表,不返回变量fib


a = gen_fib(10)
print(a)
print('-' * 50)
n = int(input("length: "))
print(gen_fib(n))  # 不会把变量n传入,是把n代表的值赋值给形参

# 34-函数-拷贝文件
import sys


def copy(src_fname, dst_fname):
    src_fobj = open(src_fname, 'rb')
    dst_fobj = open(dst_fname, 'wb')
    while True:
        data = src_fobj.read(4096)
        if not data:
            break
        dst_fobj.write(data)
    src_fobj.close()
    dst_fobj.close()


copy(sys.argv[1], sys.argv[2])


# 执行方法
# cp_func.py /etc/hosts /tmp/zhuji.txt

# 35-函数-九九乘法表
def mtable(n):
    for i in range(1, n + 1):
        for j in range(1, i + 1):
            print('%s*%s=%s' % (j, i, i * j), end=' ')
        print()


mtable(6)
mtable(9)

# 36-模块基础
# star.py:
#
# hi = 'hello world!'
#
#
# def pstar(n=50):
#     print('*' * n)
# if __name__ == '__main__':
#     pstar()
#     pstar(30)
# 在call_star.py中调用star模块:
import star

print(star.hi)
star.pstar()
star.pstar(30)

# 37-生成密码/验证码
# 思路:
# 1、设置一个用于随机取出字符的基础字符串,本例使用大小写字母加数字
# 2、循环n次,每次随机取出一个字符
# 3、将各个字符拼接起来,保存到变量result中
from random import choice
import string
all_chs = string.ascii_letters + string.digits # 大小写字母加数字
def gen_pass(n=8):
    result =''
    for i in range(n):
        ch = choice(all_chs)
        result += ch
    return result
if __name__ =='__main__':
    print(gen_pass())
    print(gen_pass(4))
    print(gen_pass(10))

# 38-序列对象方法
from random import randint
alist = list() #[]
list('hello') #['h','e','l','l','o']
list((10,20,30)) # [10,20,30] 元组转列表
astr =str() #''
str(10) # '10'
str(['h', 'e', 'l', 'l', 'o']) # 将列表转成字符串
atuple = tuple() #()
tuple('hello') #('h','e','l','l','o')
num_list = [randint(1,100) for i in range(10)]
max(num_list)
min(num_list)

# 39-序列对象方法2
alist = [10,'john']
# list(enumerate(alist)) #[(0, 10), (1,'john')]
# a,b = 0,10 #a->0 ->10
for ind in range(len(alist)):
    print('%s: %s' % (ind, alist[ind]))
for item in enumerate(alist):
    print('%s: %s' % (item[0], item[1]))
for ind,val in enumerate(alist):
    print('%s: %s' % (ind, val))
atuple = (96, 97, 40, 75, 58, 34, 69, 29, 66, 90)
sorted(atuple)
sorted('hello')
for i in reversed(atuple):
    print(i,end=',')

# 40-字符串方法
py_str = 'hello world!'
py_str.capitalize()
py_str.title()
py_str.center(50)
py_str.center(50,'*')
py_str.ljust(50,'*')
py_str.rjust(50,'*')
py_str.count('l') # 统计l出现的次数
py_str.count('lo')
py_str.endswith('!') # 以!结尾吗?
py_str.endswith('d!')
py_str.startswith('a') #以a开头吗?
py_str.islower() # 字母都是小写的?其他字符不考虑
py_str.isupper() # 字母都是大写的?其他字符不考虑
'   hello\t    '.strip() # 去除两端空白字符,常用
'   hello\t    '.lstrip() #去除开头空白字符
'   hello\t    '.rstrip() #去除末尾空白字符
'how are you?'.split()
'hello.tar.gz'.split('.')
'.'.join(['hello','tar','gz'])
'-'.join(['hello','tar','gz'])

标签:练习题,10,python,py,----,range,str,print,hello
From: https://blog.csdn.net/lou0720/article/details/143841001

相关文章

  • 【开窗函数】三个SQL题
             本文主要练习一下lag开窗函数的使用!!!一、第一题 建表语句:createtablem1(dtstring,namestring,deptstring,scoreint);insertintom1values('202101','张三','销售',90),('202101','李四......
  • vue的观察者模式与发布订阅者模式(简单版)
    最近在背八股,然后看面试题的时候发现对于vue的响应式原理,观察者模式和发布订阅者模式好像都有,但是搞不清楚,所以看了几篇文章之后,根据GPT做了总结(简单版)目录1.观察者模式(ObserverPattern)观察者模式示例:2.发布-订阅模式(Publish-SubscribePattern)发布-订阅模式示例:3.......
  • 【FFmpeg系列】:音频处理
    前言在多媒体处理领域,FFmpeg无疑是一个不可或缺的利器。它功能强大且高度灵活,能够轻松应对各种音频和视频处理任务,无论是简单的格式转换,还是复杂的音频编辑,都不在话下。然而,要想真正发挥FFmpeg的潜力,我还需深入学习其高级用法和最佳实践。通过这些技巧,我将能更高效地处理多媒......
  • 第四天 项目冲刺
    利用jwt进行校验时发现了个问题当试图把权限信息SimpleGrantedAuthority放入负载时再重字符串解析却发现信息消失了发现可能是json序列化的问题,但由于使用了hutool工具包,对里面的逻辑不太清楚也找不到什么资料解决,只能先放一边了,只能使用一种很不优雅的方式完成了看起来一些......
  • Scrum 冲刺博客-day2
    这个作业属于哪个课程班级的链接这个作业要求在哪里作业要求的链接这个作业的目标Scrum冲刺博客-day2团队成员梁志聪李永杰曾繁曦一、会议照片二、工作情况成员昨天已完成工作今日计划工作梁志聪组织会议,分配工作编写主菜单,人物移动相关代......
  • 为正在运行的 Docker 容器重启策略,以提高服务的可用性
    为正在运行的Docker容器重启策略,以提高服务的可用性。为正在运行的Docker容器添加--restart=always--restart=always是Docker中一个常用的参数,用来设置容器的重启策略。它的作用是确保容器在一定条件下能够自动重启,以提高服务的可用性。方法:直接修改配置步骤1:查看......
  • 管理员模块接口文档
    一、管理员登录1、基本信息:请求路径:/administrator请求方式:POST接口描述:该接口用于管理员登录2、请求参数:请求参数格式:application/x-www-form-urlencoded参数名称说明类型是否必须备注name管理员名称String是password密码String是3、请求样......
  • 高精度加减乘除模板
    高精度加减法:高精度加法#include<iostream>#include<vector>usingnamespacestd;vector<int>add(vector<int>&A,vector<int>&B){if(A.size()<B.size())returnadd(B,A);vector<int>C;intt=0;......
  • QT
    QT:跨平台、最终目的运行再ARM1.安装1.version:5.11.12.不要有中文路径2.创建c++工程:new->Non-QTproject->PLAINC++Applicationpro:工程文件main.cpp:项目文件1.构造函数局部给参......
  • 第五天 项目冲刺
    迟迟未实现分页,今天决定实现分页功能,之前都是使用pagehelper插件来进行分页的,在mybatisplus官方文档发现它也有分页功能于是干脆使用它的进行了分页插件的配置学习了这种分页的使用测试显然有了分页特有的标志基于xml的写法发现有些查询语句太多重复了,使用标签提取,再用......