java - 使用简单代码在 Java 或 Python 上创建沙漏模式?
问题描述
所以我想知道,是否有任何简单的代码可以使用 Java 或 Python 制作具有奇数或偶数输入的沙漏图案?因为我的代码并不简单(我使用的是 Python)。
这是输出示例:
然后,这是我的代码:
def evenGlassHour(target):
jsp=1
jtop=target
jbot=2
jbotspace=int(target/2)
eventarget=int(target/2)
temp=""
for i in range(eventarget):
for j in range(i):
temp+=" "
for jsp in range(jtop):
temp+="@"
jtop-=2
temp+="\n"
for i in range(eventarget-1):
for j in range(jbotspace-2):
temp+=" "
for j in range(jbot+2):
temp+="@"
jbot+=2
jbotspace-=1
temp+="\n"
print(temp)
def oddGlassHour(target):
jsp=1
jtop=target
jbot=1
jbotspace=int(target/2)
oddtarget=int(target/2)
temp=""
for i in range(oddtarget):
for j in range(i):
temp+=" "
for jsp in range(jtop):
temp+="@"
jtop-=2
temp+="\n"
for i in range(oddtarget+1):
for j in range(jbotspace):
temp+=" "
for j in range(jbot):
temp+="@"
jbot+=2
jbotspace-=1
temp+="\n"
print(temp)
target=int(input("Input : "))
if(target%2==0):
evenGlassHour(target)
else:
oddGlassHour(target)
这是我的代码的结果:
Input : 6
@@@@@@
@@@@
@@
@@@@
@@@@@@
Input : 7
@@@@@@@
@@@@@
@@@
@
@@@
@@@@@
@@@@@@@
解决方案
在java中,您可以编写如下内容:
public static void printPattern(int size) {
int n = size;
boolean upper = true;
for(int i = 0; size%2 == 0? i< size-1 : i<size; i++){
String str = String.join("", Collections.nCopies(n, "@"));
String pad = String.join("", Collections.nCopies((size-n)/2 , " "));
System.out.println(pad+str+pad);
if(n-2>0 && upper){
n-=2;
}
else {
n+=2;
upper = false;
}
}
}
推荐阅读
- python - 用返回覆盖保存模型 Django 保存方法
- date - 在 Excel 表单上设置日期格式
- javascript - 在引导程序中使用 mx-auto 时,Img 标签未以 col 为中心
- wordpress - ACF:在主循环之外显示值
- ios - 如何从相机胶卷中获取仅使用设备相机(前后)拍摄的图像?(iOS)
- azure-data-factory - 使用 Azure 数据工厂将 Web 活动输出加载到 SQL 表中
- javascript - 如何从 JSON 动态创建 Bootstrap 表
- python - 使用 OMPython 在 OpenModelica 中进行参数化扫描
- javascript - 仅显示 Google App Script 中的最后 12 行
- java - 合并来自单个流的 Kafka 记录值