【问题标题】:What are the semantic errors with this code此代码的语义错误是什么
【发布时间】:2019-03-25 04:50:26
【问题描述】:

我的这段代码有一些我找不到的语义错误。第一行没有告诉我们抛硬币是什么。 1000 次翻转是数学上不可能的 1000 次尾巴。当值应该在 1 和 6 之间时,骰子会掷出 0。两个骰子的结果只是告诉我们有关函数的信息,而 10 个骰子的结果中也有零。

import random
import numpy as np

def flipacoin():
    #This function flips a virtual coin and returns "Heads" or "Tails"
    coin = random.randint(1, 2) #returns a 1 or a 2
    if coin == 1:
        coin = "Heads"
    elif coin == 2:
        coin = "Tails"

def flipNcoins(n):
    #This function flips a coin a number of times (n flips total) and returns a string stating results.
    total_heads = 0
    total_tails = 0
    for i in range(n):
        if flipacoin() == "Heads":
            total_heads += 1
        else:
            total_tails += 1
    return "Heads " + str(total_heads) + ", Tails " + str(total_tails)


def rolladie():
    #This function rolls a virtual die and returns a number between 1 and 6.
    die = random.randint(0,6)
    return die

def rolltwodice():
    #This function rollstwo virtual dice and returns a tuple of the two values.
    die1 = rolladie()
    die2 = rolladie()
    return die1, die2

def rollNdice(n):
    #This function rolls n virtual dice and returns an array of roll values between 1 and 6.
    rolls = np.zeros((n,))
    for i in range(n):
        die = rolladie()
        rolls[i] = die
    return rolls

【问题讨论】:

    标签: python semantics


    【解决方案1】:

    coin = "Heads" 将局部变量 coin 设置为 "Heads"。它确实返回它。 return "Heads" 将(或等价于函数末尾的return coin)。假定在结束前未执行return 的任何函数都返回NoneNone显然不是"Heads",所以你累积了1000个total_tails

    random.randint(0,6) 将数字从 0 滚动到 6,而不是从 1 到 6,这不足为奇。要执行后者,请改用 random.randint(1,6)

    我不明白你所说的“两个骰子的结果只是告诉我们函数”是什么意思。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多