可变的数据类型: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一些基础练习题的更多相关文章

  1. Python之基础练习题

    Python之基础练习题 1.执行 Python 脚本的两种方式 2.简述位.字节的关系 解:8位是一个字节 3.简述 ascii.unicode.utf-8.gbk 的关系 4.请写出 “李杰” 分 ...

  2. python ----字符串基础练习题30道

    1.执行python脚本的两种方式 一种是点开始--运行--cmd 方式(这个操作需要先配置好环境变量path路径)之后运行python 二是直接进安装目录 运行tython软件运行.pycharm ...

  3. 【Python】基础练习题-1

    #练习1:从键盘输入两个数,并比较其大小,直到输入e/E退出程序 while 1: input_number=raw_inut("please input two numbers,enter ...

  4. 【python语法基础-经典练习题】python语法基础练习题01---商场打折

    # 1.一家商场在降价促销.如果购买金额50-100元(包含50元和100元)之间,会给10%的折扣(打九折),# 如果购买金额大于100元会给20%折扣.编写一程序,询问购买价格,再显示出折扣(%1 ...

  5. Linux基础练习题(二)

    Linux基础练习题(二) 1.复制/etc/skel目录为/home/tuer1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限. [root@www ~]# cp -r ...

  6. Python文件基础

    ===========Python文件基础========= 写,先写在了IO buffer了,所以要及时保存 关闭.关闭会自动保存. file.close() 读取全部文件内容用read,读取一行用 ...

  7. 3.Python编程语言基础技术框架

    3.Python编程语言基础技术框架 3.1查看数据项数据类型 type(name) 3.2查看数据项数据id id(name) 3.3对象引用 备注Python将所有数据存为内存对象 Python中 ...

  8. Python爬虫基础

    前言 Python非常适合用来开发网页爬虫,理由如下: 1.抓取网页本身的接口 相比与其他静态编程语言,如java,c#,c++,python抓取网页文档的接口更简洁:相比其他动态脚本语言,如perl ...

  9. 小白必看Python视频基础教程

    Python的排名从去年开始就借助人工智能持续上升,现在它已经成为了第一名.Python的火热,也带动了工程师们的就业热.可能你也想通过学习加入这个炙手可热的行业,可以看看Python视频基础教程,小 ...

随机推荐

  1. 利用jquery.form.js实现将form提交转为ajax方式提交的方法(带上传的表单提交)

    提供一种方法就是利用jquery.form.js. (1)这个框架集合form提交.验证.上传的功能. 核心方法 -- ajaxForm() 和 ajaxSubmit() $('#myForm').a ...

  2. N++ 道ASP.NET面试题

    InterviewQuestions-ASP.NET N++ 道ASP.NET面试题 1. 简述 private. protected. public. internal 修饰符的访问权限. 答 . ...

  3. mysql行转列,单列转多行

    行转列 使用CASE语句: SELECT SUM(CASE USER_NAME='A' THEN KILLS END) AS 'A', SUM(CASE USERNAME='B' THEN KILL ...

  4. osg节点统计方法(点数 面数) 【转】

    void statusNode(osg::ref_ptr<osg::Node> node,int& verNum,int& faceNum){ osg::ref_ptr&l ...

  5. Xml解析(Dom解析xml)

    xml四种解析方式: DOM 平台无关的官方解析方式 优点:形成了树结构,直观好理解,代码更易编写 解析过程中树结构保留在内存中,方便修改 缺点:当xml文件较大时,对内存耗费比较大,容易影响解析性能 ...

  6. JPEG编码(一)

    JPEG编码介绍. 转自:http://blog.chinaunix.net/uid-20451980-id-1945156.html JPEG(Joint Photographic Experts ...

  7. 如果你还有以下这些现象,那你仍是PHP菜鸟:

    最近看了个文章,写的很精辟,跟大家分享一下,这也是我的目标: 如果你还有以下这些现象,那你仍是PHP菜鸟:1. 不会利用如phpDoc这样的工具来恰当地注释你的代码:2. 对优秀的集成开发环境如Zen ...

  8. Solidworks 如何快速完全定义草图

    工具-尺寸标注-完全定义草图

  9. Django内建模版标签和过滤器

    第四章列出了许多的常用内建模板标签和过滤器.然而,Django自带了更多的内建模板标签及过滤器.这章附录列出了截止到编写本书时,Django所包含的各个内建模板标签和过滤器,但是,新的标签是会被定期地 ...

  10. APP开发关于缓存

    1 http://www.cnblogs.com/qianxudetianxia/archive/2012/02/20/2112128.html 1.1 http://blog.csdn.net/ln ...