![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python编程:从入门到实践
huihui12a
这个作者很懒,什么都没留下…
展开
-
python列表生成式、生成器、可迭代对象与迭代器
python列表生成式、生成器、可迭代对象与迭代器原创 2022-06-01 21:44:00 · 209 阅读 · 0 评论 -
10-13 验证用户
最后一个remember_me.py版本假设用户要么已输入其用户名,要么是首次运行该程序。我们应修改这个程序,以应对这样的情形:当前和最后一次 运行该程序的用户并非同一个人。 为此,在greet_user() 中打印欢迎用户回来的消息前,先询问他用户名是否是对的。如果不对,就调用get_new_username() 让用户输入正确的用户名。import jsondef old_user(filename): try: with open(filename) as f:原创 2021-11-07 11:06:42 · 352 阅读 · 0 评论 -
10-12 记住喜欢的数字
将练习10-11中的两个程序合而为一。如果存储了用户喜欢的数字,就向用户显示它,否则提示用户输入他喜欢的数字并将其存储到文件中。 运行这个程序两次,看看它是否像预期的那样工作。import jsondef add_number(): filename = 'favorite.json' try: with open(filename) as f: number = json.load(f) except FileNotFoundErr原创 2021-11-07 10:24:48 · 155 阅读 · 0 评论 -
10-10 常见单词
filename = 'alice.txt'with open(filename, encoding='UTF-8') as file_object: contents = file_object.read()words = (contents.lower()).split()C = words.count('the')print(C)原创 2021-11-06 22:04:28 · 162 阅读 · 0 评论 -
10-9 沉默的猫和狗
修改你在练习10-8中编写的except 代码块,让程序在文件不存在时一言不发。def write_list(filename, tables): with open(filename, 'a') as f1: for table in tables: f1.write(table+"\n")cats = ['katte', 'bai', 'ming', 'hei']dogs = ['xiao', 'lei', 'le']write_list(原创 2021-11-06 21:41:42 · 108 阅读 · 0 评论 -
10-8 猫和狗
创建两个文件cats.txt和dogs.txt,在第一个文件中至少存储三只猫的名字,在第二个文件中至少存储三条狗的名字。编写一个程序,尝试读取这些文件, 并将其内容打印到屏幕上。将这些代码放在一个try-except 代码块中,以便在文件不存在时捕获FileNotFound 错误,并打印一条友好的消息。将其中一个文件 移到另一个地方,并确认except 代码块中的代码将正确地执行。def write_list(filename, tables): with open(filename, 'a'原创 2021-11-06 21:39:45 · 288 阅读 · 0 评论 -
10-7 加法计算器
提示用户提供数值输入时,常出现的一个问题是,用户提供的是文本而不是数字。在这种情况下,当你尝试将输入转换为整数时,将引 发TypeError 异常。编写一个程序,提示用户输入两个数字,再将它们相加并打印结果。在用户输入的任何一个值不是数字时都捕获TypeError 异常,并打印一 条友好的错误消息。对你编写的程序进行测试:先输入两个数字,再输入一些文本而不是数字。while True: print("Please input two numbers!") print("Enter 'q原创 2021-11-06 21:13:50 · 151 阅读 · 0 评论 -
10-4 访客名单
编写一个while 循环,提示用户输入其名字。用户输入其名字后,在屏幕上打印一句问候语,并将一条访问记录添加到文件guest_book.txt中。确保这 个文件中的每条记录都独占一行。while True: user_name = input("Please input your name:")# 退出条件一定要有 if user_name == 'quit': break else: with open('guest_book.txt', '原创 2021-11-03 21:35:42 · 548 阅读 · 0 评论 -
9-14 骰子
请创建一个Die 类,它包含一个名为sides 的属性,该属性的默认值为6。编写一个名为roll_die() 的方法,它打印位于1和骰子面数之间的随机数。创建一个6面 的骰子,再掷10次。 创建一个10面的骰子和一个20面的骰子,并将它们都掷10次。from random import randintclass Die: def __init__(self, side=6): self.side = side def roll_die(self):原创 2021-11-03 10:35:47 · 363 阅读 · 0 评论 -
9-9 电瓶升级
在本节最后一个electric_car.py版本中,给Battery 类添加一个名为upgrade_battery() 的方法。这个方法检查电瓶容量,如果它不是85,就将它 设置为85。创建一辆电瓶容量为默认值的电动汽车,调用方法get_range() ,然后对电瓶进行升级,并再次调用get_range() 。你会看到这辆汽车的续航里程增 加了。class Car: def __init__(self, make, model, year): self.make = make原创 2021-11-02 19:05:32 · 437 阅读 · 0 评论 -
9-8 权限
编写一个名为Privileges 的类,它只有一个属性——privileges ,其中存储了练习9-7 所说的字符串列表。将方法show_privileges() 移到这 个类中。在Admin 类中,将一个Privileges 实例用作其属性。创建一个Admin 实例,并使用方法show_privileges() 来显示其权限。class User: def __init__(self, first_name, last_name, age): self.first_name原创 2021-11-02 17:18:29 · 321 阅读 · 0 评论 -
9-7 管理员
管理员是一种特殊的用户。编写一个名为Admin 的类,让它继承你为完成练习9-3或练习9-5而编写的User 类。添加一个名为privileges 的属性,用 于存储一个由字符串(如"can add post" 、"can delete post" 、"can ban user" 等)组成的列表。编写一个名为show_privileges() 的方法,它 显示管理员的权限。创建一个Admin 实例,并调用这个方法。class User: def __init__(self, first_nam原创 2021-11-02 17:12:35 · 258 阅读 · 0 评论 -
9-6 冰淇淋小店
冰淇淋小店是一种特殊的餐馆。编写一个名为IceCreamStand 的类,让它继承你为完成练习9-1或练习9-4而编写的Restaurant 类。这两个版 本的Restaurant 类都可以,挑选你更喜欢的那个即可。添加一个名为flavors 的属性,用于存储一个由各种口味的冰淇淋组成的列表。编写一个显示这些冰淇淋 的方法。创建一个IceCreamStand 实例,并调用这个方法。class Restaurant: def __init__(self, restaurant_name, cui原创 2021-11-02 16:42:44 · 298 阅读 · 0 评论 -
9-5 尝试登录次数
在为完成练习9-3而编写的User 类中,添加一个名为login_attempts 的属性。编写一个名为increment_login_attempts() 的方法, 它将属性login_attempts 的值加1。再编写一个名为reset_login_attempts() 的方法,它将属性login_attempts 的值重置为0。 根据User 类创建一个实例,再调用方法increment_login_attempts() 多次。打印属性login_attempts 的值,确认它被正确地递增;然后,调用原创 2021-11-02 14:46:07 · 180 阅读 · 0 评论 -
9-4 就餐人数
在为完成练习9-1而编写的程序中,添加一个名为number_served 的属性,并将其默认值设置为0。根据这个类创建一个名为restaurant 的实例;1.打印有多少人在这家餐馆就餐过,然后修改这个值并再次打印它。class Restaurant: def __init__(self, restaurant_name, cuisine_type): self.restaurant_name = restaurant_name self.cuisine_t原创 2021-11-02 14:26:24 · 441 阅读 · 0 评论 -
9-3 用户
创建一个名为User 的类,其中包含属性first_name 和last_name ,还有用户简介通常会存储的其他几个属性。在类User 中定义一个名 为describe_user() 的方法,它打印用户信息摘要;再定义一个名为greet_user() 的方法,它向用户发出个性化的问候。 创建多个表示不同用户的实例,并对每个实例都调用上述两个方法。class User: def __init__(self, first_name, last_name, age, job): s原创 2021-11-01 21:28:08 · 176 阅读 · 0 评论 -
9-2 三家餐馆
根据你为完成练习9-1而编写的类创建三个实例,并对每个实例调用方法describe_restaurant() 。class Restaurant: def __init__(self, restaurant_name, cuisine_type): self.restaurant_name = restaurant_name self.cuisine_type = cuisine_type def describe_restaurant(self):原创 2021-11-01 21:14:59 · 362 阅读 · 0 评论 -
9-1 餐馆
创建一个名为Restaurant 的类,其方法__init__() 设置两个属性:restaurant_name 和cuisine_type 。创建一个名 为describe_restaurant() 的方法和一个名为open_restaurant() 的方法,其中前者打印前述两项信息,而后者打印一条消息,指出餐馆正在营业。class Restaurant: def __init__(self, restaurant_name, cuisine_type): self.rest原创 2021-11-01 21:10:23 · 185 阅读 · 0 评论 -
8-13 用户简介
复制前面的程序user_profile.py,在其中调用build_profile() 来创建有关你的简介;调用这个函数时,指定你的名和姓,以及三个描述你的键-值对。def build_profile(first, last, **user_inf): user_inf['first_name'] = first user_inf['last_name'] = last return user_infprint(build_profile( 'xiao', 'xi原创 2021-11-01 11:33:48 · 259 阅读 · 0 评论 -
8-11 不变的魔术师
修改你为完成练习8-10而编写的程序,在调用函数make_great() 时,向它传递魔术师列表的副本。由于不想修改原始列表,请返回修改后的 列表,并将其存储到另一个列表中。分别使用这两个列表来调用show_magicians() ,确认一个列表包含的是原来的魔术师名字,而另一个列表包含的是添加了字 样“the Great”的魔术师名字。magicians_name = ['xiao', 'hui', 'dong', 'xi']new_magicians_name = []def show_m原创 2021-11-01 10:18:29 · 683 阅读 · 0 评论 -
8-10 了不起的魔术师
在你为完成练习8-9而编写的程序中,编写一个名为make_great() 的函数,对魔术师列表进行修改,在每个魔术师的名字中都加入字样“the Great”。调用函数show_magicians() ,确认魔术师列表确实变了。magicians = ['xiao', 'hui', 'dong', 'xi']def show_magicians(magicians): for magician in magicians: print(magician)show_m.原创 2021-11-01 10:16:23 · 766 阅读 · 0 评论 -
8-8 用户的专辑
在为完成练习8-7编写的程序中,编写一个while 循环,让用户输入一个专辑的歌手和名称。获取这些信息后,使用它们来调用函 数make_album() ,并将创建的字典打印出来。在这个while 循环中,务必要提供退出途径。def make_album(singer, album_name): album = {'s_name': singer, 'a_name': album_name} return albumwhile True: print("The inform原创 2021-10-31 21:55:36 · 703 阅读 · 0 评论 -
8-7 专辑
编写一个名为make_album() 的函数,它创建一个描述音乐专辑的字典。这个函数应接受歌手的名字和专辑名,并返回一个包含这两项信息的字典。使 用这个函数创建三个表示不同专辑的字典,并打印每个返回的值,以核实字典正确地存储了专辑的信息。给函数make_album() 添加一个可选形参,以便能够存储专辑包含的歌曲数。如果调用这个函数时指定了歌曲数,就将这个值添加到表示专辑的字典中。调用这个 函数,并至少在一次调用中指定专辑包含的歌曲数。def make_album(singer, album_na原创 2021-10-31 21:48:14 · 447 阅读 · 2 评论 -
7-10 梦想的度假胜地
编写一个程序,调查用户梦想的度假胜地。使用类似于“If you could visit one placein the world, where would you go?”的提示,并编写一个打印调查 结果的代码块。places = {}active = Truewhile active: name = input("\nPlease input your name:") place = input('If you could visit one place in the worl原创 2021-10-31 17:16:42 · 353 阅读 · 0 评论 -
7-9 五香烟熏牛肉(pastrami)卖完了
使用为完成练习7-8而创建的列表sandwich_orders ,并确保'pastrami' 在其中至少出现了三次。在程序开头附近添加 这样的代码:打印一条消息,指出熟食店的五香烟熏牛肉卖完了;再使用一个while 循环将列表sandwich_orders 中的'pastrami' 都删除。确认最终的列 表finished_sandwiches 中不包含'pastrami'。sandwhich_orders = ['tuna', 'strawberry', 'pastrami', 'pastrami'原创 2021-10-31 17:07:49 · 1220 阅读 · 0 评论 -
7-8 熟食店
创建一个名为sandwich_orders 的列表,在其中包含各种三明治的名字;再创建一个名为finished_sandwiches 的空列表。遍历列 表sandwich_orders ,对于其中的每种三明治,都打印一条消息,如I made your tuna sandwich ,并将其移到列表finished_sandwiches 。所有三明 治都制作好后,打印一条消息,将这些三明治列出来。sandwhich_orders = ['tuna', 'strawberry', 'apple', 'bac原创 2021-10-31 16:57:53 · 130 阅读 · 0 评论 -
7-5 电影票
有家电影院根据观众的年龄收取不同的票价:不到3岁的观众免费;3~12岁的观众为10美元;超过12岁的观众为15美元。请编写一个循环,在其中询问用 户的年龄,并指出其票价。prompt = "\nPlease input your age:"prompt += "\nEnter 'quit' to end the program"while True: age =input(prompt) if age == "quit": print("End")原创 2021-10-30 22:05:56 · 627 阅读 · 0 评论 -
7-4 比萨配料
编写一个循环,提示用户输入一系列的比萨配料,并在用户输入'quit' 时结束循环。每当用户输入一种配料后,都打印一条消息,说我们会在比萨 中添加这种配料。prompt = "\nPlease input the needs of pizza:"prompt += "\nEnter 'quit' to end the program"while True: need = input(prompt) if need == 'quit': break print(原创 2021-10-30 21:43:17 · 304 阅读 · 0 评论 -
6-11 城市
创建一个名为cities 的字典,其中将三个城市名用作键;对于每座城市,都创建一个字典,并在其中包含该城市所属的国家、人口约数以及一个有关该 城市的事实。在表示每座城市的字典中,应包含country 、population 和fact 等键。将每座城市的名字以及有关它们的信息都打印出来。cities = { 'luo yang': {'country': 'China', 'population': '14 hundred millions', 'fact': 'mu dan'}, '原创 2021-10-29 16:45:14 · 153 阅读 · 0 评论 -
6-9 喜欢的地方
创建一个名为favorite_places 的字典。在这个字典中,将三个人的名字用作键;对于其中的每个人,都存储他喜欢的1~3个地方。为让这个练 习更有趣些,可让一些朋友指出他们喜欢的几个地方。遍历这个字典,并将其中每个人的名字及其喜欢的地方打印出来。favorite_places = { "xiao ming": ['bei jing'], "li hua": ['xi an', 'xi zang', 'xia men'], 'xiao hui': ['luo yang',原创 2021-10-29 16:23:25 · 197 阅读 · 0 评论 -
6-7 人
在为完成练习6-1而编写的程序中,再创建两个表示人的字典,然后将这三个字典都存储在一个名为people 的列表中。遍历这个列表,将其中每个人的所有 信息都打印出来。friend_0 = {'first_name': 'xiao ming', 'last_name': 'zhang', 'age': 19, 'city': 'cheng du'}friend_1 = {'first_name': 'xiao hong', 'last_name': 'zhang', 'age': 21, 'city':原创 2021-10-29 16:01:56 · 147 阅读 · 0 评论 -
6-6 调查 :在6.3.1节编写的程序favorite_languages.py中执行以下操作
创建一个应该会接受调查的人员名单,其中有些人已包含在字典中,而其他人未包含在字典中。 遍历这个人员名单,对于已参与调查的人,打印一条消息表示感谢。对于还未参与调查的人,打印一条消息邀请他参与调查。dictionary = { 'jen': 'python', 'sarah': 'c', 'edward': 'ruby', 'phil': 'python', }received_persons = ['jen', 'phil']for name in di原创 2021-10-29 08:57:21 · 1108 阅读 · 3 评论 -
6-2 喜欢的数字
使用一个字典来存储一些人喜欢的数字。请想出5个人的名字,并将这些名字用作字典中的键;想出每个人喜欢的一个数字,并将这些数字作为值存 储在字典中。打印每个人的名字和喜欢的数字。为让这个程序更有趣,通过询问朋友确保数据是真实的。favorite_numbers = { 'a': 4, 'b': 6, 'c': 9, 'd': 2, 'e': 10 }print("The favorite_number of 'a' is "+str(favorite_nu原创 2021-10-28 20:38:34 · 191 阅读 · 0 评论 -
6-1 人
使用一个字典来存储一个熟人的信息,包括名、姓、年龄和居住的城市。该字典应包含键first_name 、last_name 、age 和city 。将存储在该字典中的每项信息都打印出来。friend = {'first_name': 'hui', 'last_name': 'zhang', 'age': 21, 'city': 'luo yang'}print('first_name is '+friend['first_name'])print('last_name is '+friend['la原创 2021-10-28 20:33:02 · 102 阅读 · 0 评论 -
5-11 序数 :序数表示位置,如1st和2nd。大多数序数都以th结尾,只有1、2和3例外
在一个列表中存储数字1~9。 遍历这个列表。 在循环中使用一个if-elif-else 结构,以打印每个数字对应的序数。输出内容应为1st 、2nd 、3rd 、4th 、5th 、6th 、7th 、8th 和9th ,但每个序 数都独占一行。numbers = list(range(1, 10))for number in numbers: if number == 1: print(str(number)+'st') if number == 2:原创 2021-10-28 11:17:07 · 1128 阅读 · 0 评论 -
5-10 检查用户名 :按下面的说明编写一个程序,模拟网站确保每位用户的用户名都独一无二的方式
#include <stdio.h>#include <stdlib.h>int main() { int n,i,j,k,m; int index,yes=0; int a[6][6]; scanf("%d",&n);//输入n行n列的矩阵 for(i=0;i<n;i++){ for(j=0;j<n;j++){ scanf("%d",&a[i][j]); } }//判断是否有鞍点 if(n==1){ pri.原创 2021-10-28 11:07:21 · 2397 阅读 · 0 评论