本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。
给定
任意
N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。
输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。
首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。
输入样例:
输出样例:
-
input()函数 -> 输入函数
input() 函数接受一个标准输入数据,返回为 string 类型。
eg:
我们知道input返回类型是str类型的
但我们怎么将字符串转换为我们需要的数据呢?
有两种方法,一种是用一个str接受它,然后将其以空格为分隔(
str1.split(’ ')
),变成list类型
当然input函数里面自带了split分隔函数,直接使用input().split()就可以了
-
print函数
用于打印输出,最常见的一个函数。
eg:
抱歉哈,第一次拼错了
由此能知道print() 可以输出字典,列表,int,float…
那如何输出时没有"\n"呢
#没有结束符
print(‘hello world’, end=’’)
这样就可以了
-
逻辑
主要是怎么找到第一行打印多少个字符,我是采用循环的方式找到的。这样会使复杂度增大很多。有更好的方法欢迎交流。
这个规律还挺好找的,就是i增加一个,sum就会增加2*i,根据这一规律就可以啦
def Input():
n, ch = map(str, input().split())
n = int(n)
return n, ch
n, character = Input()
c = 0
i = 1
m = 1
while m <= n:
i = i + 2
m = m + i * 2
if i-2>=0:
c = i-2
i = c
while c > 0:
print(" "*((i-c)//2)+character*c)
c = c-2
c = 3
while c <= i:
print(" "*((i-c)//2)+character*c)
c = c + 2
if n == 0:
print(0,end='')
else:
print(n-m+2*i+4,end='')
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。
给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。
输入格式:
输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。
输出格式:
首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。
输入样例:
所以input()接收它,再用字符串中的split()
(注意,这里括号内什么也不写,默认以空白字符作为分隔符,如果想要以其它字符或字符串分隔,请在括号内以str形式输入它们即可)
方法以空格键分隔它们并用两个变量接收它们。
代码如下:
m, n = input().split()
m = int(m)
接着,告诉的我们是总的字符数,所以.
7-1 重要的话说三遍分数 5全屏浏览题目切换布局作者 陈越单位 浙江大学这道超级简单的题目没有任何输入。你只需要把这句很重要的话 —— “I'm gonna WIN!”——连续输出三遍就可以了。注意每遍占一行,除了每行的回车不能有任何多余字符。代码长度限制16 KB时间限制400 ms内存限制64 MB7-2 日期格式化分数 5全屏浏览题目切换布局作者 陈越单位 浙江大学世界上不同国家有不同的写日期的习惯。
分析 首先可以证明,这个漏斗是一个等差数列。令n表示第n行,表示第n行所含有的元素个数,表示前n行元素总数。那么一个: ***************这样的图形,我们直接将3个元素作为第一行(后面指出为什么这样做),则得到,,联立可得本题条件需要用正整数组成的最大的沙漏形状,则需要根据1中来反推出漏斗的最大高度,这里我们为了区别,令x为最大高度,其中的x就是我们所需要的。这里我们通过一个循环(是否...
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。
给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。
输入格式:
print((' '*(i-1-j))+(shape*(j*2-1)))
for j in range(2,i):
print((' '*(i-1-j))+(shape*(j*2-1)))
print(eval(n)-sum((2*j
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。
给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。
输入格式:
输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。
作者: 陈越单位: 浙江大学时间限制: 400 ms内存限制: 64 MB代码长度限制: 16 KB一 我写的代码以及注释#include#includeint main (void){int a,b=1,c,d,e,f,h; //定义变量a与g为输入的值,b为沙漏的一半三角形的高,c表示沙漏总字符数或沙漏的每一层的字符数,h表示未使用的字符数,d和e和f为for循环的中间变量cha...