1、打印0-10(while/for)
count = 0
while count < 11:
print(count)
count += 1
for i in range(11):
print(i)
2、求1-100所有数的和
a = 1
sum = 0
while a < 101:
sum += a
# print(sum)
a += 1
print(sum)
3、打印1-100之间的偶数
for n in range(1,101):
if n % 2 == 0:
print(n)
4、打印1-100之间的奇数
for n in range(1,101):
if n % 2 == 1:
print(n)
5、求1-2+3-4+5......+99的和
count = 1
s1 = 0
s2 = 0
while count < 100:
if count % 2 == 0:
s1 += -count
else:
s2 += count
count += 1
s = s1 + s2
print(s)
6、用户登录(三次机会重试)
# 任意用户输入错误三次即退出程序
Name = 'shj'
Pwd = '123'
count = 0
while count < 3:
name = input("please input your name:")
pwd = input("please input your password:")
if name == Name and pwd == Pwd:
print("\033[32mlogin successful..\033[0m")
break
else:
print("Invalid username and password..")
count += 1
# 同一用户输入错误三次即退出程序
info = {
'shj':'123',
'xxn':'456',
'xka':'aaa'
}
l = []
while True:
name = input("please input your name:")
pwd = input("please input your password:")
if name not in info:
print("\033[31m您输入的用户不存在。\033[0m")
l.append(name)
if l.count(name)>2:
print("\033[31m您已尝试太多次,程序退出\033[0m")
break
else:
if pwd == info[name]:
print("\033[32mlogin successful..\033[0m")
break
else:
l.append(name)
if l.count(name) > 2:
print("\033[31m密码输入次数过多,程序退出。。\033[0m")
break
7、猜年龄游戏
要求:
允许用户最多尝试3次,3次都没猜对的话,就直接退出,如果猜对了,打印恭喜信息并退出
age_of_shj = 23
count = 0
while count < 3:
guess_age = int(input("输入你猜的数:"))
if guess_age == age_of_shj:
print("\033[32m恭喜你猜对了!\033[0m")
break
elif guess_age < age_of_shj:
print("太小了,往大了猜。")
else:
print("太大了,往小了猜。")
count += 1
else:
print("\033[31m你尝试太多次了,程序退出!\033[0m")
8、猜年龄游戏升级版
要求:
允许用户最多尝试3次
每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y或y, 就继续让其猜3次,以此往复,如果回答N或n,就退出程序
如何猜对了,就直接退出
age_of_shj = 23
count = 0
while count < 3:
guess_age = int(input("输入你猜的数:"))
if guess_age == age_of_shj:
print("\033[32m恭喜你猜对了!\033[0m")
break
elif guess_age < age_of_shj:
print("太小了,往大了猜。")
else:
print("太大了,往小了猜。")
count += 1
if count == 3:
ask = input("Do you want to continue?(y/n)")
if ask in ['Y','y']:
count = 0
elif ask in ['N','n']:
break
else:
print("您的输入有误,请重新输入")
9、打印九九乘法表
for i in range(1,10):
for j in range(i):
j += 1
print("%s * %s = %s"%(i,j,i*j),end="\t")
print()
10、打印金字塔
'''
* 空格=4,*=1
*** 空格=3,*=3
***** 空格=2,*=5
******* 空格=1,*=7
********* 空格=0,*=9
'''
level = int(input('请输入金字塔高度:'))
for num in range(level):
print(" "*(level-num-1),end="")
print("*"*(num*2-1))
第二种方法:
用字符串的center方法
level = int(input('请输入金字塔高度:'))
for i in range(1,level+1):
print(('*'*(2*i-1)).center((2*level-1),' '))
11、统计元组中所有数据属于字符串的个数
# 数据:t1 = (1, 2, '3', '4', 5, '6')
# 结果:3
t1 = (1, 2, '3', '4', 5, '6')
count = []
for t in t1:
if isinstance(t,str):
count.append(t)
print(len(count))
12、将以下数据存储为字典类型
数据:info = "name:Owen|age:18|gender:男"
结果:{'name': 'Owen', 'age': 18, 'gender': '男'}
注:年龄存储为数字类型
info = "name:Owen|age:18|gender:男"
l = info.split("|")
l1 = []
for l2 in l:
s = l2.split(":")
l1.append(s)
dic = dict(l1)
dic['age']=18
print(dic)
13、完成数据的去重
数据:t3 = (1, 2, 1, 2, 3, 5, 9)
结果:t3 = (1, 2, 3, 5, 9)
注:从不考虑顺序、考虑顺序两方面完成
t3 = (1, 2, 1, 2, 3, 5, 9)
# 不考虑顺序
t3 = set(t3)
t3 = tuple(t3)
print(t3)
# 考虑顺序
l = []
for t in t3:
if t not in l:
l.append(t)
l.sort()
print(tuple(l))
14、计算元组中所有可以转换为数字的数据的总和
数据:t4 = (10, 'abc', '100', '3')
运算结果:113
t4 = (10, 'abc', '100', '3')
s = 0
for t in t4:
if isinstance(t,int):
s += t
elif t.isdigit():
s += int(t)
print(s)
15、计算元组中所有可以转换为数字的数据的总和
数据:t4 = (10, 'abc', '100', '3', '壹', '肆', [1000], (10000,))
运算结果:11118
提示:
-- 利用字符串isnumeric()判断汉字
-- 利用字典{'壹': 1 ...}将汉字转换为数字
-- 利用isinstance()将list和tuple中数据取出来
-- 先将所有转化为数字的数据存放在一个单列集合中,在做运算
t4 = (10, 'abc', '100', '3', '壹', '肆', [1000], (10000,))
change = str.maketrans('壹肆','14')
s = 0
for t in t4:
if isinstance(t,int):
s += t
elif isinstance(t,list):
s += t[0]
elif isinstance(t,tuple):
s += t[0]
elif t.isdigit():
s += int(t)
elif t in ['壹','肆']:
s += int(t.translate(change))
print(s)
16、完成录入电话本
需求:
-- 从键盘中录入姓名(不区分大小写): -- 姓名必须是全英文组成,不是则重新录入姓名,如果是q,代表退出 #str.isalpha():True if 只包含字母 -- 从键盘中再录入电话: -- 电话必须为数字且长度必须是11位(不能转换为数字) #str.isdigit(): True if 只包含数字 -- 如果出现姓名相同,则保留最后一次电话号码 -- 形成的数据是有电话分组的,如:第一次录入Owen,13355667788,则会形成 -- { 'O': { 'Owen': '13355667788' } } 最终数据,分组名一定大写: { 'E': { 'egon': '17788990000', 'engo': '16633445566' }, 'O': { 'Owen': '13355667788' } }
# 电话本
phone_map = {}
# 是否退出系统
is_over = False
while not is_over:
# 姓名初始制空,完成只有姓名输入正确才录入电话
name = ''
while True:
# 姓名必须录入正确
if not name:
name = input("name:")
if name == 'q':
# 退出系统
is_over = True
break
elif not name.isalpha():
# 录入错误,置空名字
print('name error')
name = ''
continue
# 录入电话,保证是11位的数字字符串
phone = input("phone:")
if not (phone.isdigit() and len(phone) == 11):
continue
# 取组名
group = name[0:1].upper()
# 对于组名的操作:无组名,添加分组 | 有组名,不操作
phone_map.setdefault(group, {})
phone_map[group][name] = phone
# 一条信息添加完毕,重置信息
name = ''
phone = ''
print('录入成功')
print(phone_map)
17、完成登录注册系统(从空文件开始做)
需求:
1.可以循环登录注册,输入1代表选择登录功能,输入2代表注册功能,输入0代表退出其他,其他输入代表输入有误,重输 2.用户的账号密码信息存放在usr.txt文件中,保证用户注册成功后,重启系统,用户信息仍然保存 3.登录在账号验证通过才输入密码验证登录,账号验证三次失败自动进入注册功能,登录三次验证失败自动退出系统 4.第一次注册,文件写入 账号:密码 信息,再次注册追加写入 |账号:密码 信息
c = 0
f = open('usr.txt','r+',encoding='utf-8')
data = f.read()
dic = {}
if data != '':
data1 = data.split('|')
for msg in data1:
k,v = msg.split(':')
dic[k] = v
tag = True
while tag:
print('''
0 退出
1 登录
2 注册
''')
choice = input("请输入您要进行的操作:").strip()
if choice == '0':
tag = False
elif choice == '1':
while tag:
name = input("username:").strip()
if name not in dic :
if c==2:
print("此用户不存在,请注册")
while tag:
name = input("请设置账户名:").strip()
pwd = input("请设置密码:").strip()
if data == '':
f.write(name + ':' + pwd)
else:
f.write('|'+name+':'+pwd)
print("注册成功")
tag = False
else:
print('未注册!')
c += 1
else:
count = 0
while count < 3:
pwd = input("password:").strip()
if pwd == dic[k]:
print("登录成功")
break
else:
print("密码错误")
count += 1
if count == 2:
tag = False
tag =False
elif choice == '2':
while tag:
name = input("请设置账户名:").strip()
pwd = input("请设置密码:").strip()
if name in dic:
print("用户名已存在,注册失败")
continue
else:
if data == '':
f.write(name+':'+pwd)
else:
f.write('|'+name+':'+pwd)
print("注册成功")
tag = False
else:
print("输入有误,请重新输入")
f.close()
18、用函数改造上题的代码
# 获取文件中用户信息
def get_usr_map():
global dic,data,f,k
with open('user.txt','r+',encoding='utf-8') as f:
data = f.read()
dic = {}
if data != '':
data1 = data.split('|')
for msg in data1:
k,v = msg.split(':')
dic[k] = v
# 注册
def register():
print('注册页面')
get_usr_map()
while True:
name = input("请设置账户名:").strip()
pwd = input("请设置密码:").strip()
if name in dic:
print("用户名已存在,注册失败")
continue
else:
f = open('user.txt','a+',encoding='utf-8')
if data == '':
f.write(name + ':' + pwd)
else:
f.write('|' + name + ':' + pwd)
print("注册成功")
f.close()
break
# 登录
def login():
print('登录页面')
get_usr_map()
c = 0
while True:
name = input("username:").strip()
if name not in dic:
if c == 2:
print("此用户不存在,请注册!")
register()
break
else:
print("当前用户未注册!")
c += 1
else:
count = 0
while count < 3:
pwd = input("password:").strip()
if pwd == dic[k]:
print("登录成功")
break
else:
print("密码错误")
if count == 2:
break
count += 1
break
# 启动系统
def start():
print("系统启动!")
while True:
tag = input("""请输入操作指令:
0:退出
1:登录
2:注册
>>>: """)
if tag.isdigit():
tag = int(tag)
if tag == 0:
break
elif tag == 1:
login()
break
elif tag == 2:
register()
break
else:
print("输入有误,请重新输入")
# 启动系统(入口)
start()