要求用户输入一个正整数n,然后输出1到n之间的所有奇数。如果n为偶数,则输出1到n-1之间的所有奇数。
这个用python怎么去写,思路是怎么样?
可以按照以下思路来写代码:
下面是Python代码实现:
n = int(input("请输入一个正整数:"))
if n % 2 == 0:
n -= 1
for i in range(1, n+1, 2):
print(i, end=" ")
运行示例:
请输入一个正整数:8
1 3 5 7
不知道你这个问题是否已经解决, 如果还没有解决的话:print(' * ')
print(' *** ')
print(' ***** ')
print('*******')
print(' ***** ')
print(' *** ')
print(' * ')
这个是不动脑子的输出的,要是动一下脑子输出一个公式。可以这样:
# 最大的三角形是 4 行,最长的一行有 7 个 *,也就是2n-1个位置
# 我们需要把三角形看成两个元素组成,空格和*
# 正三角
n = 4
for i in range(n+1):
print(' '*(n-i)+'*'*(2*i-1))
#倒三角,第一行最长,空格和 * 一共六个元素也就是 2n
for i in range (1,n):# n 取不到 4,但是要从第一行开始取了。
print(' '*i+'*'*(2*n-1-2*i))
可以把n换成任意正整数,这是课堂正解。
思路: 1. 首先判断输入的数字n是奇数还是偶数; 2. 根据是奇数还是偶数,设定循环的起始和终止点; 3. 使用循环,每次迭代加2,输出所有奇数; 4. 注意判断输入数据是否合法,即判断n是否为正整数。
具体实现代码如下:
def print_odd_numbers(n):
# 判断输入数据是否合法
if type(n) != int or n <= 0:
print("请输入一个正整数!")
return
# 判断n是奇数还是偶数
if n % 2 == 0:
start = 1
end = n-1
else:
start = 1
end = n
# 输出所有奇数
for i in range(start, end+1, 2):
print(i)
其中,range(start, end+1, 2) 表示从start到end(包含end)每两个数输出一个。