Python泡泡糖

2024-04-25 13:12:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Python中被赋予了这个问题:

从用户那里获取一个数字列表并在该列表上运行FizzBuzz。

当您循环浏览列表时,请记住以下规则:

1)如果数字可被3和5整除,则打印FizzBuzz

2)如果它只能被3个print整除Fizz

3)如果它只能被5个print整除Buzz

4)否则只需打印号码

还记得伊莱夫!

我已经创建了下面的脚本,但是它在ifn%3=True处给出了一个错误

n=input()
    if n%3=True:
        print("Fizz")
    else if n%5=True:
        print ("Buzz")
    elif print n

有人能帮忙吗?非常感谢你!


Tags: 用户脚本true列表inputif规则错误
3条回答

n % 3(或n %任何数字)的计算结果不是TrueFalse,它不是布尔表达式。n % 3 == 0另一方面,是的。

另外,当n % 3 == 0n % 5 == 0都计算为True时会发生什么?

这里的代码有一些问题。第一个问题是,为了进行比较,应该使用==,而不是=,这是用于赋值的。

第二个问题是要检查剩余的除法(这是模运算符计算的结果)是zero,而不是true,这并没有真正意义。

您应该使用elif表示“否则,如果…”,使用else表示“否则”。您需要修复else子句的格式。

你想要:

n=input()
if n%3 == 0:
    print("Fizz")
elif n%5 == 0:
    print ("Buzz")
else:
    print n

最后,您的代码不符合规范:

1) If the number is divisible by both 3 and 5 print "FizzBuzz"

上面的不会这么做。这部分我要留给你,因为我不是来为你解决任务的:)

基于this

FizzBuzz: For integers up to and including 100, prints FizzBuzz if the integer is divisible by 3 and 5 (15); Fizz if it's divisible by 3 (and not 5); Buzz if it's divisible by 5 (and not 3); and the integer otherwise.

def FizzBuzz():
    for i in range(1,101):
        print {
            3 : "Fizz",
            5 : "Buzz",
            15 : "FizzBuzz"}.get(15*(not i%15) or
                                 5*(not i%5 ) or
                                 3*(not i%3 ), '{}'.format(i))

在这里,.get()方法非常有用。

操作如下

对于1到100之间的所有整数(不包括101),
根据这些规则打印我们通过get调用的字典键的值。

获取get调用中的第一个非False项,或将整数作为字符串返回

当检查一个True值(因此我们可以查找该值)时,Python的计算结果是0到False。如果i mod 15=0,那是错误的,我们将转到下一个。

因此,我们NOT每个“mods”(也称为余数),这样,如果mod==0,即=False,我们就得到一个True语句。我们将True乘以返回字典键(即3*True == 3)的字典键

当整数不能被3、5或15整除时,我们就陷入打印int'{}'.format(i)的默认子句中,只需将i作为字符串插入该字符串。

部分产出

气泡
79
嗡嗡声
气泡
82
83
气泡
嗡嗡声
86
气泡
88
89
气泡
91
92
气泡
94
嗡嗡声
气泡
97
98
气泡
嗡嗡声

相关问题 更多 >