要求从键盘输入用户名和密码,校验格式是否符合规则,如果不符合,打印出不符合的原因,并提示重新输入
• 用户名长度6-20,用户名必须以字母开头
• 密码长度至少6位,不能为纯数字,不能有空格
def ursename():
while True:
a = input("请输入你的账号:")
a_1 = a[0:1].isalpha()
if 6 <= len(a) <= 20 and a_1:
print("账号正确!!!")
break
elif 6 > len(a) or len(a) > 20:
if 6 > len(a):
print("账号错误,账号低于6位!!!")
else:
print("账号错误,账号多于20位!!!")
elif not a_1:
print("账号错误,首字符不是字母!!!")
def password():
while True:
a = input("请输入你的密码")
b = len(a)
c = a.split(" ")
if len(a) < 6 :
print("密码错误,密码位数小于6!!!")
elif len(c) != 1:
print("密码错误,密码中不能有空格!!!")
elif a.isdigit():
print("密码错误,密码不能全为数字!!!")
else:
print("密码正确!!!")
break
if __name__ == '__main__':
ursename()
password()
求 1000 以内的水仙花数
科普:什么是水仙花数?
水仙花数,指一个3位数,它的每个位上的数字的3次冥之和等于它本身。例如:1^3 + 5^3 + 3^3=153
方法一:
思路:
1.有取值范围,因此可以采用while循环,水仙花数位三位数,定义初始值count=100
2.再根据规律,根据赋值运算符取出水仙花数的每个位数,百位整除,十位对100取余再对10整除,个位:先对100取余再对10取余即可得出个位。
count = 100
while count < 1000:
count += 1
x = int(count / 100)
y = int(count % 100 / 10)
z = int(count % 100 % 10)
if x < 10 and count == x**3 + y**3+ z**3:
print(x,y,z,"水仙花数:",count)
方法二:切片
思路:直接把水仙花数 i 看作一个字符串,根据索引取值再int()类型转换,根据公式计算,这样是不是更简单呢 ?
i = 100
while i < 1000:
a = str(i)
if int(a[0])**3 + int(a[1])**3 + int(a[2]) == i:
print(a)
i += 1
--------输出--------
1 5 3 水仙花数: 153
3 7 0 水仙花数: 370
3 7 1 水仙花数: 371
4 0 7 水仙花数: 407
获取用户输入的任意数,判断是否是质数 ?
num = int(input("请输入一个数字:"))
if 1 < num <= 2:
print(num,'是质数')
elif num > 2:
i = 2 # 定义因子
while i < num:
if num % i == 0:
print(num,"不是质数")
break
i += 1
else:
print(num, '是质数')
else:
print(num,"不是质数")
---------输出--------
请输入一个数字:7
7 是质数
请输入一个数字:1
1 不是质数
请输入一个数字:2
2 是质数
请输入一个数字:4
4 不是质数
猜拳游戏:
出拳 玩家: 手动输入 电脑:随机输入
判断输赢:玩家获胜 电脑胜 平局
分析: 石头=0 剪刀=1 布=2
电脑随机出数,从【0,1,2】中出一个随机数。
print("==========出拳游戏============")
import random
while True:
p = input("请输入石头,剪刀,布:")
if p != "石头" and p != "剪刀" and p != "布":
print("输入无效,请重新输入!")
else:
s = random.randint(0,2)
if s == 0:
print("玩家出拳:",p,"电脑出拳:%s" % '石头')
elif s == 1:
print("玩家出拳:",p,"电脑出拳:%s" % '剪刀')
else:
print('玩家出拳:',p,"电脑出拳:%s" % '布')
剪刀 = 1
布 = 2
if (p =="石头" and s== 1) or (p == "剪刀" and s == 2) or (p == "布" and s == 0):
print("%s获胜" % "玩家")
elif (p == "石头" and s == 2) or (p == "剪刀" and s == 0) or (p == "布" and s == 1):
print('%s获胜'% "电脑")
else:
print('平局')
现在 a = [1,2,3,4,5,6] 用多种方式实现列表的反转 ([6,5,4,3,2,1],),并写出推到过程
方法一:直接通过 reverse()函数进行列表反转
a = [1, 2, 3, 4, 5, 6]
a.reverse()
print(a)
-----------输出------------
[6, 5, 4, 3, 2, 1]
方法二:通过sort 结合reverse 进行降序排列
# sort 默认是升序排序,再加上reverse 反转,则进行降序排列
a.sort(reverse=True)
print(a)
-------------输出-----------
[6, 5, 4, 3, 2, 1]
方法三:切片
# 分析: 切片,设置步长为-1, 按照下标索引,从-1开始,从右到左取值,依次打印
print(a[-1::-1])
------------输出-------------
[6, 5, 4, 3, 2, 1]
方法四: 按照索引替换
# 分析:[1,2,3,4,5,6] 是一个列表,我们可以直接替换列表的值
根据索引替换,从下标索引0开始a[0] = 6,依次替换。
要替换6次,因此可以通过 while循环实现
i 作为索引下标,初始值为0 ,依次加1;j 作为列表元素,依次减 i 。
i = 0
j = 6
while i <6:
a[i] = j-i
i += 1
print(a)
------------输出-------------
[6, 5, 4, 3, 2, 1]
有2个列表 list1 = [11,22,33] list = [22,33,44] 获取内容相同的元素。
分析:通过 for 循环,比较2个列表中的每个元素是否相等。
方法一:分别从list1 与 list2 取出值进行比较。
list1 = [11, 22, 33]
list2 = [22, 33, 44]
for i in list1:
for j in list2:
if i == j:
print(i)
方法二: 取list1 的元素,通过 if 判断 元素是否 in list2
list1 = [11, 22, 33]
list2 = [22, 33, 44]
for i in list1:
if i in list2:
print('内容相同的元素有:', i)
------------输出-------------
内容相同的元素有:22
内容相同的元素有:33