添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

n,char=input().split()
n=int(n)
for i in range(n):
if ((2*i*(i+2))+1)>n:
row=i-1
break
remain=n-((2*row*(row+2))+1)
for i in range(row,0,-1):
line=" "*(row-i)+char*(2*i+1)
print(line)
for i in range(row+1):
line=" "*(row-i)+char*(2*i+1)
print(line)
print(remain)

  1. 将输入的n转换为整数类型,并初始化层数i为0。

  2. 通过for循环计算出最大可能的沙漏层数,即在循环中判断当前层数的沙漏需要的符号数量是否大于n,如果大于n,则当前层数减1并退出循环。

  3. 计算出剩余符号数量remain,即n减去已经用于打印沙漏的符号数量。

  4. 通过for循环分别打印上半部分和下半部分的沙漏,上半部分从row到1循环,下半部分从0到row循环。每行打印row-i个空格和2i+1个字符。

  5. 最后打印剩余符号数量remain

我们发现只有当n>=4时,该代码可以执行结果;当n=0,1,2,3时,会报错NameError。如果输入为0,程序将会出错,因为在for循环中,range(0)将不会执行任何操作,row将不会被初始化,导致后面计算剩余符号数量remain时出现错误。如果输入为1、2或3,程序将会输出一行空格,但是实际上应该输出一个字符。

因此我们在该代码基础上加入一些特判

n, char = input().split()
n = int(n)
if n == 0:  # 处理输入为0的情况
print(0)
elif n == 1:  # 处理输入为1的情况
print(char)
print("0")
else:
for i in range(n):
if ((2*i*(i+2))+1)>n:
row=i-1
break
remain=n-((2*row*(row+2))+1)
if row == -1:  # 处理输入为2或3的情况
row = 0
remain = n-1
print(char)
else:
for i in range(row,0,-1):
line=" "*(row-i)+char*(2*i+1)
print(line)
for i in range(row+1):
line=" "*(row-i)+char*(2*i+1)
print(line)
print(remain)

在修改后的代码中,如果输入为0,程序将会直接输出0;如果输入为1,程序将会直接输出字符,并且输出0;如果输入为2或3,程序将会直接输出一个字符,并计算剩余符号数量remain。如果输入大于等于4,程序将会执行原来的打印沙漏

所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。 给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。 输入格式:
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个*,要求按下列格式打印 所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。 给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。 输入格式: 输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。...
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。 给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。 输入格式: 输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。 输出格式: 首先打印出由给定符号组成的最大的沙漏形状, 所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。 给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。 输入格式: 输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。 输出格式: 首先打印出由给定符号组成的 所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。 给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。 输入格式: 输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印。 所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。 给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。 输入格式: 输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。 输出格式: 首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。 代码如下: 所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。 给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。 输入格式: 所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。 给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。 输入格...
所以input()接收它,再用字符串中的split() (注意,这里括号内什么也不写,默认以空白字符作为分隔符,如果想要以其它字符或字符串分隔,请在括号内以str形式输入它们即可) 方法以空格键分隔它们并用两个变量接收它们。 代码如下: m, n = input().split() m = int(m) 接着,告诉的我们是总的字符数,所以.