python – 检查奇数/偶数和改变输出的数字大小

我有几个问题要解决的任务,有点卡住了。 问题是编写一个程序让用户input一个奇数(检查它是奇数),然后根据input的大小打印一个颠倒的金字塔。

例如,如果你input5,它会出现

***** *** * 

我的问题是双重的。

1)如何检查是偶数还是奇数? 我试过, if number/2 == int ,希望它可以做一些事情,互联网告诉我做的, if number%2==0 ,但这是行不通的。

2)如何更改每行中间的星号?

任何问题的任何帮助,不胜感激。

因为这是作业,给你一个完整的答案根本就没有意义,所以这里有几个指针:

偶数或奇数

 number % 2 == 0 

绝对是一个很好的方法来find你的号码是否是偶数。

如果你不知道% ,这是模数,这里是number除以2的余numberhttp://en.wikipedia.org/wiki/Modulo_operation

打印金字塔

首先build议:为了打印***** ,您可以print "*" * 5

第二个build议:为了使星号居中,你需要找出在星号之前要写多less个空格。 然后你可以打印一堆空格和星号, print " "*1 + "*"*3

以%2为模2的解决scheme是好的,但需要分割和减法。 由于计算机使用二进制算术,更有效的解决scheme是:

 # This first solution does not produce a Boolean value. is_odd_if_zero = value & 1 # or is_odd = (value & 1) == 1 # or is_even = (value & 1) == 0 

简单但却很快:

 >>> def is_odd(a): ... return bool(a - ((a>>1)<<1)) ... >>> print(is_odd(13)) True >>> print(is_odd(12)) False >>> 

甚至更简单:

 >>> def is_odd(a): ... return bool(a & 1) 
 if number%2==0 

会告诉你,这是甚至。 所以奇数将是那里的其他语句。 “%”是分割后返回余数的mod符号。 所以基本上我们要说的是,如果这个数字可以被两个整除,我们可以安全地认为它是偶数。 否则,它是奇怪的(这是一个完美的关联!)

至于星号放置,你希望在星号前加上与它所在行相关的空格数。 在你的例子中

 ***** line 0 *** line 1 * line 2 

我们将要相应的空间

 0***** 01*** 012* 

1)如何检查是偶数还是奇数? 我试图“如果数/ 2 ==整数”,希望它可以做一些事情,互联网告诉我做“如果数字%2 == 0”,但这是行不通的。

 def isEven(number): return number % 2 == 0 

我想最简单和最基本的方法是这样的

 import math number = int (input ('Enter number: ')) if number % 2 == 0 and number != 0: print ('Even number') elif number == 0: print ('Zero is neither even, nor odd.') else: print ('Odd number') 

只是基本的条件和math。 它也意识到零,这是不平衡的,也不奇怪,你input你想要的任何数字,所以它是非常可变的。

 la = lambda x : "even" if not x % 2 else "odd" 

关于打印输出,这里是我将如何使用格式规格迷你语言 (部分: alignment文本并指定宽度 ):

一旦你有你的长度,说length = 11

 rowstring = '{{: ^{length:d}}}'.format(length = length) # center aligned, space-padded format string of length <length> for i in xrange(length, 0, -2): # iterate from top to bottom with step size 2 print rowstring.format( '*' * i ) 

有很多方法来检查一个int值是奇数还是偶数。 我会告诉你两个主要的方法:

 number = 5 def best_way(number): if number%2==0: print "even" else: print "odd" def binary_way(number): if str(bin(number))[len(bin(number))-1]=='0': print "even" else: print "odd" best_way(number) binary_way(number) 

希望能帮助到你

这是我的解决scheme:

 def is_even(n): r=n/2.0 if r==int(r): return True else: return False 
 def main(): n = float(input('odd:')) while n % 2 == 0: if n % 2 == 1: break n = float(input('odd:')) for i in range(int((n+1)/2)): print(' '*i+'*'*int((n-2*i))+' '*i) main() 

#1st part ensures that it is an odd number that was entered.2nd part does the printing of triangular

示例指令 给定一个整数n,执行以下条件操作:

  • 如果n是奇数,打印奇怪
  • 如果n是偶数并且在2到5的包含范围内,则打印不奇怪
  • 如果n是偶数并且在6至20的包含范围内,则打印奇怪
  • 如果n是偶数且大于20,则打印不奇怪

    导入mathn = int(input())

    如果n%2 == 1:print(“Weird”)elif n%2 == 0且n在范围(2,6)中:print(“Not Weird”)elif n%2 == 0且n在范围内6,21):print(“Weird”)elif n%2 == 0 and n> 20:print(“Not Weird”)