是"%"划分单词的长度?如果是这样,为什么只有'为什么'上来?

时间:2016-08-19 01:26:52

标签: python loops division

我希望把它变成一个应用程序,提醒自己每隔一段时间思考一下。我想问为什么' /'为什么不'每次我输入一个输入。我想确定notoriginal / alsonotoriginal的长度是偶数还是奇数的决定性因素。

print ('Have you thought today?') 

original = input('Yes or No:')

if len(original) > 2:
    notoriginal = input('When?:')

elif len(original) < 3:
    alsonotoriginal = input('Why?:')

while len(notoriginal) % 2 == 0:
    input('Why not?:') 

while len(notoriginal) % 2 > 0:
    input('Why?:')

while len(alsonotoriginal) % 2 == 0:
    input('Why not?:') 

while len(alsonotoriginal) % 2 > 0:
    input('Why?:')

你们是最好的!谢谢!

编辑:谢谢你的帮助。我意识到这是一个非常简单的事情,我搞砸了。我还要指出,我已经将原始/非原创更改为更好的变量名称,例如第二,第三和第四。我解决了我遇到的问题,我接受了你的建议。我感到困惑/忘记的是,你可以在代码中稍后重命名变量,整个变量都会改变。我有这个:

print ('Have you thought today?') 

first = input('Yes or No:')

if len(*first*) > 2:
    **second** = input('When?:')

elif len(*second*) < 3:
    **third** = input('Why?:')

if len(third) % 2 == 0:
    fourth = input('Why not?:') 
else:
    fifth = input('Why?:')

while len(fourth) % 2 == 0:
    fifth = input('Why?')

while len(fourth) % 2 > 0:
    sixth = input('Why not?')

问题是我一直在重命名变量,当它们不必重命名时,实际上因为重命名而导致错误。当我应该调用代码来检查具有两个单独结果值的单个变量时,我正在调用代码来评估两个单独的变量,如下所示:

print ('Have you thought today?') 

first = input('Yes or No:')

if len(first) > 2:
    second = input('When?:')

elif len(first) < 3:
    second = input('Why?:')

if len(second) % 2 == 0:
    third = input('Why not?:') 
else:
    third = input('Why?:')

while len(third) % 2 == 0:
    third = input('Why?')

while len(third) % 2 > 0:
    third = input('Why not?')

1 个答案:

答案 0 :(得分:2)

%操作数

  

%(modulo)运算符从除法的除法中产生余数   第二个论点。数字参数是第一个   转换为普通类型。一个零权利的论点提出了   ZeroDivisionError异常。参数可能是浮点数   数字,例如,3.14%0.7等于0.34(因为3.14等于4 * 0.7 + 0.34。)   模运算符总是产生一个与其符号相同的结果   第二个操作数(或零);结果的绝对值是严格的   小于第二个操作数的绝对值

taken from here

要划分len('word'),您可以使用/操作数,但是通过使用% 2操作,您可以通过分析结果确定数字是否均匀,如果是返回0,它是偶数,如果不是,它是奇数,如下:

number = input('Type a number: ')

if number % 2 == 0:
    print('Even')
else:
    print('Odd')

为什么&#39;为什么&#39;输入不断出现

您的代码循环并且似乎卡在“为什么?”的原因?&#39;问题是因为您使用的是while len(notoriginal) % 2 > 0while len(alsonotoriginal) % 2 > 0,因为notoriginalalsonotoriginal值在输入后没有变化,您会得到所谓的& #39;无限循环&#39;,相同的while循环将永远运行。要解决此问题,您可以使用whileif语句,而不是使用elif,但这样做会要求您修复代码逻辑,因为它存在很大缺陷此刻。

另外...

永远不要将这些通用名称称为变量,这只会让以后的调试变得非常混乱。