鱼C论坛

 找回密码
 立即注册
查看: 3508|回复: 14

[已解决]python课后题09

[复制链接]
发表于 2016-6-24 06:47:21 | 显示全部楼层 |阅读模式
1鱼币
count = 3
password = 'FishC.com'

while count:
    passwd = input('请输入密码:')
    if passwd == password:
        print('密码正确,进入程序......')
        break
    elif '*' in passwd:
        print('密码中不能含有"*"号!您还有', count, '次机会!', end=' ')
        continue
    else:
        print('密码输入错误!您还有', count-1, '次机会!', end=' ')   
    count -= 1

好像不用elif吧,直接用if就可以了么。

for i in range(100, 1000):
    sum = 0
    temp = i
    while temp:
        sum = sum + (temp%10) ** 3
        temp //= 10         # 注意这里要使用地板除哦~
    if sum == i:
        print(i)


水仙花这道题 sum = sum + (temp%10) ** 3
                      temp //= 10         # 注意这里要使用地板除哦~
这个看的不是很懂哎~~~
最佳答案
2016-6-24 06:47:22
if和elif是配对的,就是说如果if条件不满足,然后再来一个假设分支,这里的elif后面的语句是说,如果输入的密码不对,而且其中含有*,那么提示密码中有*,else则是如果密码不对,且其中没有星号
%是取余数,或者叫取模运算符,%10实际上就是求这个数除以10后的余数
//这是整除的意思,对于正数,整除后把结果取整,对于负数则是整除后取比结果小的最接近的一个负数

最佳答案

查看完整内容

if和elif是配对的,就是说如果if条件不满足,然后再来一个假设分支,这里的elif后面的语句是说,如果输入的密码不对,而且其中含有*,那么提示密码中有*,else则是如果密码不对,且其中没有星号 %是取余数,或者叫取模运算符,%10实际上就是求这个数除以10后的余数 //这是整除的意思,对于正数,整除后把结果取整,对于负数则是整除后取比结果小的最接近的一个负数
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-6-24 06:47:22 | 显示全部楼层    本楼为最佳答案   
if和elif是配对的,就是说如果if条件不满足,然后再来一个假设分支,这里的elif后面的语句是说,如果输入的密码不对,而且其中含有*,那么提示密码中有*,else则是如果密码不对,且其中没有星号
%是取余数,或者叫取模运算符,%10实际上就是求这个数除以10后的余数
//这是整除的意思,对于正数,整除后把结果取整,对于负数则是整除后取比结果小的最接近的一个负数

评分

参与人数 1荣誉 +2 贡献 +1 收起 理由
zmq + 2 + 1

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-6-24 21:53:06 | 显示全部楼层
vpo1 发表于 2016-6-24 09:00
if和elif是配对的,就是说如果if条件不满足,然后再来一个假设分支,这里的elif后面的语句是说,如果输入的 ...

对啊,但是countinue下面不是有一个else么,这个就是和上面的if匹配的呀,所以不用elif了呀
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-6-24 21:59:13 | 显示全部楼层
vpo1 发表于 2016-6-24 09:00
if和elif是配对的,就是说如果if条件不满足,然后再来一个假设分支,这里的elif后面的语句是说,如果输入的 ...

我现在懂这些符号的含义,但就是不懂 sum = sum + (temp%10) ** 3
         temp //= 10    这两行满足题目的意思。这样算怎么就能求出水仙花的数目?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-6-25 12:15:11 | 显示全部楼层
可以具体数字带入进去试试
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-7-30 12:42:32 | 显示全部楼层
当然可以用if不过小甲鱼说过elif可以减少程序的速度虽然很少但是程序的变大就会影响得更大
因为每次if就是要重新判断一次而elif就是如果在前面判断好了就不用判断后面的了,需要继续判断才会继续
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-7-31 09:09:50 | 显示全部楼层
for i in range(100,1000):
    if i==(i//100)**3+(i%100//10)**3+(i%10)**3:
        print('这是一个水仙花数',i)
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-7-31 15:00:16 | 显示全部楼层
zmq 发表于 2016-6-24 21:59
我现在懂这些符号的含义,但就是不懂 sum = sum + (temp%10) ** 3
         temp //= 10    这两行满足 ...

首先你要知道水仙花数的构成
它是各个位上面的数的立方和等于原来的数字
比如:1^3 + 5^3+ 3^3 = 153

sum就是用来记这个总和的,temp%10是在求当前temp的个位数字
比如153这个数字:
起始sum=0,temp=153,执行sum = sum + (temp%10) ** 3的时候是:sum=0+(153%10)**3=3**3
然后执行temp //= 10 ,现在的temp=15
第二次循环sum = sum + (temp%10) ** 3,sum=27+(15%10)**3=27+5**3
然后执行temp //= 10 ,现在的temp=1
第三次同理
最后判断sum和原来的数是否相等
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-8-1 08:43:01 | 显示全部楼层
水仙花数:for i in range(100,1000):
    if i==(i//100)**3+(i%100//10)**3+(i%10)**3:
        print('这是一个水仙花数',i)

这样好理解些吧。

不用elif,直接用if,当判断第一个是if为真,为假,都会执行第二个if,而elif,当第一个if为真,不会执行elif
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-12-22 18:56:21 | 显示全部楼层
for i in range(100,1000):
    temp=i
    a=temp//100
    b=(temp-100*a)//10
    c=temp%10
    if temp==a**3+b**3+c**3:
        print(temp)
    i+=1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-12-23 16:51:37 | 显示全部楼层
temp 因为是小于1000的3位数,所以while循环3次,每次利用temp%10得到末位数字,再用temp//=10去掉末位数字。也就是第一次循环时是3位数,第二次是2位数,第三次是1位数。

我想是这样的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-12-23 16:53:12 | 显示全部楼层
9# 程序 秒懂
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-12-23 20:42:20 | 显示全部楼层
支持一下
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-12-23 21:59:56 | 显示全部楼层
不错
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

头像被屏蔽
发表于 2016-12-29 22:36:21 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-21 11:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表