Python一些基础练习题
可变的数据类型:list, dict, set(可修改其中的元素)
不可变的数据类型:str, tuple
重点:str, list, dict
(1).推导式练习
# 利用列表推导式: 找出100以内所有奇数,并将所有奇数乘以3,写入列表。
li = [i * 3 for i in range(1, 101) if i % 2 != 0]
print(li) li = [i * 3 for i in range(1, 101, 2)]
print(li)
(2).递归的使用:(经典的猴子吃桃)
"""
猴子第一天摘下N个桃子,当时就吃了一半,还不过瘾,就又多吃了一个。
第二天又将剩下的桃子吃掉一半,又多吃了一个。
以后每天都吃前一天剩下的一半零一个。
到第10天在想吃的时候就剩一个桃子了,
问:第一天共摘下来多少个桃子?
""" """
先进行分析:
第n天: 10 9 8 7
剩(个): 1 (1+1)*2=4 (4+1)*2=10 (10+1)*2=22
""" def peachs(n):
if n == 10:
return 1
else:
return (peachs(n + 1) + 1) * 2 print(peachs(1)) 没理解递归的话,看下面这个方案:
n = 1 # 天
x = 1 # 桃子几个
while n < 10: # 第9天发现只剩了一个
x = (x + 1) * 2
n += 1
print(x)
(3).基础函数练习1
'''
定义一个函数:
统计传入的字符串里,英文字母、空格、数字和其他字符分别出现次数,
并作为一个字典返回 {'字母': ,'空格': ,'数字': ,'其他字符:' }
''' def count_types(s):
# 先定义一个字典
dict = {"字母": 0, "空格": 0, "数字": 0, "其他字符": 0} # 遍历取出字符串中每个值
for i in s:
if i.isalpha():
dict["字母"] += 1 # 键值访问,直接自加
elif i.isspace():
dict["空格"] += 1
elif i.isdigit():
dict["数字"] += 1
else:
dict["其他字符"] += 1
return dict print(count_types("jing tian 520.1314!"))
(4).基础函数练习2
"""
请定义一个名为titles的函数:
1.接收一句英文(字符串)作为参数
2.将这个英文的每个单词转换成有且只有首字母大写的形式
3.返回转换后的英文句
4.str.title具有这个功能,但在此题不可使用str.title
例如:
>>> titles('this is python.')
'This Is Python.'
>>> titles('i love python')
'I Love Python'
""" # 利用列表推导式+lambda函数 一行代码搞定
# 可读性差,尽量避免写(但我个人比较喜欢这样,感觉眼前一亮,豁然开朗)
# 此题逻辑简单,一条语句反而感觉清爽。
s1 = "this is python."
s2 = " i love jing tian "
g = lambda s: " ".join([i.capitalize() for i in s.split()])
print(g(s1))
print(g(s2))
(5).
"""
给定一个正整数,求出它所有数字的和值。
然后再对这个数,求出它的所有数字的求和。
直到求出的和值是一个个位数为止。
例如 :
16 -> 1 + 6 = 7
942 -> 9 + 4 + 2 = 15 -> 1 + 5 = 6
132189 -> 1 + 3 + 2 + 1 + 8 + 9 = 24 -> 2 + 4 = 6
""" def dr(n):
return n % 9 or n and 9 """
首先 : and > or
当 n!=0 的时候,and是返回右边的值,然后or是返回左边的值
""" print(dr(16)) #
print(dr(942)) #
print(dr(132189)) #
(6).
"""
在金融数据显示的时候,往往看到的是:一个数字,每隔3位用一个逗号隔开。
如:
1234567 -> 1,234,567
1234567890.123 -> 1,234,567,890.123
-614616 -> -614,616
-1234.05 -> -1,234.05
+5201314 -> 5,201,314
""" def main(a, minus=False):
"""
:param minus: 是否是负数。负数前面的"-"减号就靠它去判断,拼接了
:return: 数字之间都用逗号隔开了
""" # 如果有人多此一举在正数前带了"+"号,不切片的话,后面截取时要出事
if a.find("+") == 0:
a = a[1:] # 从后往前,每隔3个字符,切一次。
a_formated = lambda a: ",".join([a[-i:-(i + 3):-1][::-1] for i in range(1, len(a) + 1, 3)][::-1]) # 是否带小数。(isdigit判断的是正整数,如果返回了False,那就是带小数了)
if a.isdigit():
if minus:
return "{}{}".format("-", a_formated(a))
else:
return a_formated(a)
else:
num_decimal = a[a.find("."):] # 如果是小数,存放小数部分的变量
a = a[:a.find(".")] # 存放真正需要去逗号隔开的部分 if minus:
return "{}{}{}".format("-", a_formated(a), num_decimal)
else:
return "{}{}".format(a_formated(a), num_decimal) if __name__ == '__main__':
while 1:
a = input("请输入一个数字:") """
用float()工厂一下,能成功肯定是一个合法的数值。
如果出错了,那就不是一个合法的数值,continue一下让程序回到循环的第一条语句。
不要赋值,不然整数的话就会出现".0"小数。
"""
try:
float(a) # 先看看能不能转换成float
except ValueError:
print("输入有误!")
continue
except TypeError:
print("输入有误!")
continue
except Exception as e:
print("未知错误:", e)
continue # 是否为负数
if float(a) < 0:
b = main(a[1:], minus=True) # 是负数的话,把负号砍了。通过设置布尔值,在函数里返回的时候再进行拼接处理
else:
b = main(a) print(b)
(7).读取旧文本中的内容。以每10个字为一行,写入新的文本
方法一:
def exchange(old_file, words_number, new_file):
"""
读取旧文本中的内容。以每10个字为一行,写入新的文本。
:param old_file: (string)旧的本文名称。路径在打开的时候进行拼接。
:param words_number: (int)指定每几个字为一行。
:param new_file: (string)可以为这个新文本指定自己喜欢的名称。
:return: None
""" # 打开原始的文本
with open(old_file + ".txt", "r", encoding="gbk") as f:
# 只是打开、读取的用途,不做其他操作。所以是r模式
old_text = f.read() new_text = ""
for each in old_text:
# 手动替换 : 空格、换行。最后组成一个无空格、无换行的"一行"字符串
new_text += each.replace(" ", "").replace("\n", "").replace("\r", "") # 计算需要截取几次
# 原理在最下
times = int(len(new_text) / words_number) + 1
tmp_li = []
for i in range(times):
try:
a = new_text[i * words_number:i * words_number + words_number] # 引用 : [原理1]
except Exception as e:
print("Error at 截取新字符串分片处 :", e)
tmp_li.append(a) # 写入新文本
try:
with open(new_file + ".txt", "w+") as f:
f.writelines("\n".join(tmp_li)) # 手动拼接换行
except Exception as e:
print("Error at 写入新文本 : ", e) if __name__ == '__main__':
original_file = input("请输入原始文件名:")
words_eachline = int(input("每行字数(请输入整数):"))
new_file = input("请输入要保存的文件名:") # call function
exchange(original_file, words_eachline, new_file) """
原理1 : # 通过测试下面的代码,可计算出需要如何截取字符 txt = "啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊" ci = int(len(txt) / 10) + 1
print(ci) a = txt[0:10]
print(a) a = txt[10:20]
print(a) a = txt[20:30]
print(a) print("---------------------------") for i in range(ci):
a = txt[i * 10:i * 10 + 10]
print(a)
"""
方案二:
n = 10 # 每行字数 with open('old.txt', 'r') as f1, open('new.txt', 'w', encoding='utf-8') as f2:
temp = ''
for line in f1:
temp = temp + line.strip().replace(' ', '') # 去掉两端的回车和空格
while len(temp) >= n:
f2.write(temp[:n])
f2.write('\n')
temp = temp[10:]
f2.write(temp) # 文本最后一行
(8).求s=a+aa+aaa+aaaa+aa..a的值
"""
求s=a+aa+aaa+aaaa+aa..a的值,其中a是一个数字。
例如:2+22+222+2222+22222(此时公有五个数相加),几个数相加由键盘控制
""" def sum_num(num, dig_num):
var = 0
for i in range(dig_num):
var += int((str(num) * (i + 1))) # 同理 print("3"*3)
if i == (dig_num - 1):
print(int((str(num) * (i + 1))), end="=")
else:
print(int((str(num) * (i + 1))), end="+")
return var num = int(input("请输入要计算的数字:"))
dig_num = int(input("请输入要计算的次数:"))
sum_dig = sum_num(num, dig_num) print(sum_dig)
Python一些基础练习题的更多相关文章
- Python之基础练习题
Python之基础练习题 1.执行 Python 脚本的两种方式 2.简述位.字节的关系 解:8位是一个字节 3.简述 ascii.unicode.utf-8.gbk 的关系 4.请写出 “李杰” 分 ...
- python ----字符串基础练习题30道
1.执行python脚本的两种方式 一种是点开始--运行--cmd 方式(这个操作需要先配置好环境变量path路径)之后运行python 二是直接进安装目录 运行tython软件运行.pycharm ...
- 【Python】基础练习题-1
#练习1:从键盘输入两个数,并比较其大小,直到输入e/E退出程序 while 1: input_number=raw_inut("please input two numbers,enter ...
- 【python语法基础-经典练习题】python语法基础练习题01---商场打折
# 1.一家商场在降价促销.如果购买金额50-100元(包含50元和100元)之间,会给10%的折扣(打九折),# 如果购买金额大于100元会给20%折扣.编写一程序,询问购买价格,再显示出折扣(%1 ...
- Linux基础练习题(二)
Linux基础练习题(二) 1.复制/etc/skel目录为/home/tuer1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限. [root@www ~]# cp -r ...
- Python文件基础
===========Python文件基础========= 写,先写在了IO buffer了,所以要及时保存 关闭.关闭会自动保存. file.close() 读取全部文件内容用read,读取一行用 ...
- 3.Python编程语言基础技术框架
3.Python编程语言基础技术框架 3.1查看数据项数据类型 type(name) 3.2查看数据项数据id id(name) 3.3对象引用 备注Python将所有数据存为内存对象 Python中 ...
- Python爬虫基础
前言 Python非常适合用来开发网页爬虫,理由如下: 1.抓取网页本身的接口 相比与其他静态编程语言,如java,c#,c++,python抓取网页文档的接口更简洁:相比其他动态脚本语言,如perl ...
- 小白必看Python视频基础教程
Python的排名从去年开始就借助人工智能持续上升,现在它已经成为了第一名.Python的火热,也带动了工程师们的就业热.可能你也想通过学习加入这个炙手可热的行业,可以看看Python视频基础教程,小 ...
随机推荐
- [置顶]
使用kube-proxy让外部网络访问K8S service的ClusterIP
配置方式 kubernetes版本大于或者等于1.2时,外部网络(即非K8S集群内的网络)访问cluster IP的办法是: 修改master的/etc/kubernetes/proxy,把KUBE_ ...
- ylbtech-KeFuYunWei(服务运维考核系统)-数据库设计
ylbtech-DatabaseDesgin:ylbtech-KeFuYunWei(服务运维考核系统)-数据库设计 DatabaseName:KEFUYUNWEI Model:Admin 用户后台管理 ...
- OPENDJ的安装图文说明
一. 说明 介绍: opendj是一个ldap服务器 用于存储openam的配置和用户存储信息 准备工具: OpenDJ-3.0.0.zip 二. 安装步骤 a) Linux安装过程 1. 将zip包 ...
- 遗传算法解决TSP问题
1实验环境 实验环境:CPU i5-2450M@2.50GHz,内存6G,windows7 64位操作系统 实现语言:java (JDK1.8) 实验数据:TSPLIB,TSP采样实例库中的att48 ...
- bash: /bin/bash^M: bad interpreter: No such file or directory
在windows下编写shell脚本在linux下运行会出报错: [hadoop@master data]$ ./load_ods_table.sh -bash: ./load_ods_table.s ...
- ANGULARJS: UNDERSTANDING DIRECTIVE SCOPE
https://www.3pillarglobal.com/insights/angularjs-understanding-directive-scope --------------------- ...
- iOS开发:Framework的创建
转载自:http://jonzzs.cn/2017/06/01/iOS%20开发笔记/[iOS%20开发]将自己的框架打包成%20Framework%20的方法/ 环境:Xcode 8 创建 Fram ...
- 标准库Allocator的使用(一)
上一篇我们提到了new运算符以及它的工作步骤,其实无非是把两项工作独立出来: 1.申请原始内存 2.执行构造函数 delete也涉及了两个工作: 1.执行析构函数 2.释放原始内存 其实标准库提供了另 ...
- 关联查询的resultMap写法示例
对于自定义对象一般使用association,对于集合一般使用collection. 对于一般的自定义对象 1.使用子查询: <resultMap id="BaseResultMapW ...
- JUnit单元测试中的setUpBeforeClass()、tearDownAfterClass()、setUp()、tearDown()方法小结
编写JUnit单元测试的时候,会用到 setUpBeforeClass().tearDownAfterClass().setUp().tearDown()这四个方法,例如用 eclipse新建一个ju ...