例题

要求从键盘输入用户名和密码,校验格式是否符合规则,如果不符合,打印出不符合的原因,并提示重新输入
• 用户名长度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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值