验证密码程序
程序需求:设计一个验证用户密码程序,用户只有三次机会输入错误,不过如果用户输入的内容中包含"*"则不计算在内。
根据需求我们可以得知:
我们需要创建密码变量和次数变量,还有输入数据的变量。
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)