Python象形文字

问题描述 投票:1回答:3

这是我的象形文字代码。我希望它像约翰= * * * * *,为什么输出中有“无”?

print("Pictograph")
def J(a):
    for i in range(1, a+1):
        print("*", end=" ")
def C(b):
    for j in range(1, b+1):
        print("*", end=" ")
def Z(c):
    for j in range(1, c+1):
        print("*", end=" ")
x = int(input("Enter John's Number: "))
y = int(input("Enter Chas's Number: "))
z = int(input("Enter Zed's Number: "))

print("John = ", J(x))
print("Chas = ", C(y))
print("Zed = ", Z(z))

这是输出

Pictograph
Enter John's Number: >? 5
Enter Chas's Number: >? 4
Enter Zed's Number: >? 3
* * * * * John =  None
* * * * Chas =  None
* * * Zed =  None
python python-3.x
3个回答
1
投票

您正在定义一个函数,您不会从中返回任何内容。更改函数以返回值。另外,你知道你可以使用*运算符重复一个字符串,例如3 * 'a''aaa'

def J(a):
    return (a * '* ')[:-1]

s[:-1]意味着你正在使用字符串s的所有元素,但最后一个。

您还可以定义一个函数来打印模式,这样可以避免代码重复。

def repeat_pattern(n):
    return (n * '* ')[:-1]

因此,您的代码如下:

print("Pictograph")
x = int(input("Enter John's Number: "))
y = int(input("Enter Chas's Number: "))
z = int(input("Enter Zed's Number: "))
print("John =", repeat_pattern(x))
print("Chas =", repeat_pattern(y))
print("Zed =", repeat_pattern(z))

0
投票

整个代码可能只是:

print("Pictograph")
x = int(input("Enter John's Number: "))
y = int(input("Enter Chas's Number: "))
z = int(input("Enter Zed's Number: "))
print("John =", ' '.join(x * '*'))
print("Chas =", ' '.join(y * '*'))
print("Zed =", ' '.join(z * '*'))

或者像@ lmiguelvargasf的解决方案:

print("Pictograph")
x = int(input("Enter John's Number: "))
y = int(input("Enter Chas's Number: "))
z = int(input("Enter Zed's Number: "))
print("John =", (x * '* ')[:-1])
print("Chas =", (y * '* ')[:-1])
print("Zed =", (z * '* ')[:-1])

两者都重现这个(示例输出):

Pictograph
Enter John's Number: 5
Enter Chas's Number: 4
Enter Zed's Number: 3
John = * * * * *
Chas = * * * *
Zed = * * *

0
投票

由于您熟悉循环,我会使用一种解决方案,让您无需添加更多代码即可添加更多数据:

print("Pictograph")

data = []

for person in ['John', 'Chas', 'Zed']:
    data.append((person, int(input(f"Enter {person}'s Number: "))))

for person, number in data:
    print(f"{person} =", *(['*'] * number))

用法

> python3 test.py
Pictograph
Enter John's Number: 13
Enter Chas's Number: 3
Enter Zed's Number: 20
John = * * * * * * * * * * * * *
Chas = * * *
Zed = * * * * * * * * * * * * * * * * * * * *
>

您可以考虑输出中的制表符来对齐最左侧的星号。

© www.soinside.com 2019 - 2024. All rights reserved.