可变的数据类型: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. java 中的VO,PO,DTO,DO对象

    经常会接触到VO,DO,DTO的概念,本文从领域建模中的实体划分和项目中的实际应用情况两个角度,对这几个概念进行简析. 得出的主要结论是:在项目应用中,VO对应于页面上需要显示的数据(表单),DO对应 ...

  2. [置顶] kubernetes资源类型--secret和Service Account

    secret 概念 secret对象类型主要目的是保存和处理敏感信息/私密数据,比如密码,OAuth tokens,ssh keys等信息.将这些信息放在secret对象中比 直接放在pod或dock ...

  3. cordova百度导航插件使用

    org.ssgroup.sope.cordova.baiduNavi 插件已经开源至 https://github.com/shenshouer/org.ssgroup.sope.cordova.ba ...

  4. #if 条件编译

    1.格式: #if constant-expression statements #elif constant-expression statements #else statements #endi ...

  5. 项目笔记:导出XML和导出全部XML功能

    前台代码: //导出一条Xml function btn_createXml(){ var title =$("#editButton").attr("title&quo ...

  6. zabbix监控php-fpm

    1.启用php-fpm的状态功能 [root@web01 ~]# vim /etc/php-fpm.d/www.conf 121 pm.status_path = /php_status [root@ ...

  7. NeatBean下ssh 私钥格式问题

    1. SecureCRT 生成的private key 的格式是其私有的格式, 2. 标准格式为 openssl 格式

  8. Spring 配置多个数据源,并实现动态切换

    1.配置两个不同的数据源,如下 <!-- 数据源配置1 --> <bean id="testDataSource1" class="com.alibab ...

  9. DataSet之增删改查操作(DataGridView绑定)

    DataSet数据集,数据缓存在客户端内存中,支持断开式连接.DataGridView控件绑定DataSet时,它自动的改变的DS的行的状态,而且在做增删改查的时候,可以借助SqlCommandBui ...

  10. EffectiveJava(10)覆盖equals是视情况覆盖toString

    覆盖equals是视情况覆盖toString 1.toString返回字符串 className@163b91 -calssName 类的名称 @ @ 163b91 散列码的无符号十六进制表示法 2. ...