python – 检查奇数/偶数和改变输出的数字大小
我有几个问题要解决的任务,有点卡住了。 问题是编写一个程序让用户input一个奇数(检查它是奇数),然后根据input的大小打印一个颠倒的金字塔。
例如,如果你input5,它会出现
***** *** *
我的问题是双重的。
1)如何检查是偶数还是奇数? 我试过, if number/2 == int
,希望它可以做一些事情,互联网告诉我做的, if number%2==0
,但这是行不通的。
2)如何更改每行中间的星号?
任何问题的任何帮助,不胜感激。
因为这是作业,给你一个完整的答案根本就没有意义,所以这里有几个指针:
偶数或奇数 :
number % 2 == 0
绝对是一个很好的方法来find你的号码是否是偶数。
如果你不知道%
,这是模数,这里是number
除以2
的余number
。 http://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”)