三色球问题python_Python:验证密码程序与水仙花数、三色球问题

本文介绍了如何使用Python编写一个验证密码程序,其中包括对密码错误次数的限制以及特殊字符'*'的处理。此外,文章还讲解了水仙花数的概念及其Python实现,以及如何解决三色球问题,即计算红、黄、蓝三种颜色球的任意组合方式。
摘要由CSDN通过智能技术生成

验证密码程序

程序需求:设计一个验证用户密码程序,用户只有三次机会输入错误,不过如果用户输入的内容中包含"*"则不计算在内。

根据需求我们可以得知:

我们需要创建密码变量和次数变量,还有输入数据的变量。

paw = 'zs' #密码

numt = 3 #机会次数

temp = input('输入密码:') #数据输入

用户只有三次机会输入错误。

这里我们就需要对输入数据进行比对判断,正确可以进行下一步(跳出循环),错误则减少numt数值,并继续进行循环直到无法满足条件(机会次数为零)。

while numt: #次数不为零时循环

if temp == paw: #输入数据与密码进行比对

print('密码正确,进入系统...') #正确

break #跳出循环

else: #否则(不正确)

temp=input('密码错误,您还有'+str(numt)+'次机会!请重新输入:')

numt -= 1 #次数减1

如果用户输入的内容中包含"*"则不计算在内。

在这里我们就可以用上elif语句和in操作符。

in操作符语法: ‘字符’ in (变量)

用于判断字符是否存在于变量中。

关于if-elif-else语句,具体可以参考我这篇文章:

《Python:if-elif-else语句与三元操作符》

elif '*' in temp:

temp=input('密码不能包含*号!请重新输入:')

将上面这些组合起来,就是我们最终的程序啦!

paw = 'zs'

numt = 3

temp = input('输入密码:')

while numt:

if temp == paw:

print('密码正确,进入系统...')

break

elif '*' in temp:

temp=input('密码不能包含*号!请重新输入:')

else:

temp=input('密码错误,您还有'+str(numt)+'次机会!请重新输入:')

numt -= 1

else:

print('密码错误,请重新进入系统...')

水仙花数问题

问题概述:如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。

例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数。

个人理解: 把一个三位数的个位、十位、百位分离出来,然后把每一位的立方数加起来,如果等于原来的那个三位数,那这个三位数就是水仙花数。

由此我们可以得出:

数值在100到999之间(三位数),我们可以用到for循环和range函数,在这里我们就不得不提到python的两种循环while和for了。

while在循环之前先判断是否满足条件,满足则循环。

while循环语法:while (条件):

--------------------------- (执行语句)……

而for必须有一个可迭代的对象才能进行循环。

for循环语法:for (迭代变量) in 字符串|列表|元组|字典|集合:

range() 函数可创建一个整数列表,一般用在 for 循环中。

range函数语法: range(起始数, 终止数[,步长,默认0])

我们需要一个变量可以迭代,迭代得到的结果会作为下一次迭代的初始值,迭代的范围在100到999之间。

for i in range(100,1000):

然后我们需要把迭代得出的三位数的个位、十位、百位进行分离。我们可以利用Python运算符%取模运算和floor 除法 //把位数分离出来。

关于运算符 /,%和//,具体可以参考我这篇文章:

《Python:判断给定年份是否为闰年。》

x = i//100

y = i%100//10

z = i%10

我们让系统把水仙花数(等于其各位数字立方和的数)给找出来。

if i==x**3+y**3+z**3:

print(i)

将上面这些组合起来,就是我们最终的程序啦!

for i in range(100,1000):

x = i//100

y = i%100//10

z = i%10

if i==x**3+y**3+z**3:

print(i)

除了运用计算符把位数分离出来,还可以使用三个for…in range(,):来分别循环各位的位数,详细的写法可以参考下面这个问题。

三色球问题

问题概述:有红、黄、蓝三种颜色的球,其中红球 3 个,黄球 3 个,绿球 6 个。先将这 12 个球混合放在一个盒子中,从中任意摸出 8 个球,编程计算摸出球的各种颜色搭配。

for red in range(0,4):

for ye in range(0,4):

for gr in range(0,7):

if red + ye + gr == 8:

print('红:',red,' ','黄:',ye,' ','绿:',gr)

9d89c90b6f219daaf16d3d84e3327cb7.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值