如何在引用同文件夹下不同py文件中的函数时避免引入其他变量赋值

菜农作业:

题目中问题的解决基于Python GitHub Level 2 Quesion 10

Question 10
Level 2
Question:
Write a program that accepts a sequence of whitespace separated words as input and prints the words after removing all duplicate words and sorting them alphanumerically.
Suppose the following input is supplied to the program:
hello world and practice makes perfect and hello world again
Then, the output should be:
again and hello makes perfect practice world

题目:删除输入字符串中相同的单词,并对单词进行排序,结果以字符串形式输出,格式与输入相同。

这道题的排序是Question 8 中设置的maopao函数。

已知调用函数使用:import

from Question8 import maopao

但问题是,在Question8中,有多个函数,还有print命令

已知:

if __name__ == "__main__":

      函数名()

只有在其他文件中import函数名时,才能调用。如果一个文件中有多个函数,这个命令非常好用。不仅仅适用于函数,变量赋值也可以。

如果引用函数所在py文件中有变量赋值,且未在if __name__ == "__main__"下,那么会被直接执行。

那我不想要这些赋值怎么办?

同理,也一并放在if __name__ == "__main__":下面

(但是要注意顺序!!!)

下面是Question8的代码:

def bidaxiao(str1, str2):
    l1 = [len(str1), len(str2)]
    for i in range(min(l1)):
        if dict[str1[i]] < dict[str2[i]]:
            return True
        elif dict[str1[i]] == dict[str2[i]]:
            continue
        else:
            return False

    return len(str1) < len(str2)


def slipstr(string):
    # 将一整串字符串按逗号间隔拆分,
    strlist = []
    str2 = ""
    for str1 in string:
        if str1 != ",":
            str2 += str1
        else:
            strlist.append(str2)
            str2 = ""
    strlist.append(str2)

    return strlist


def bidaxiao(str1, str2):
    l1 = [len(str1), len(str2)]
    for i in range(min(l1)):
        if dict[str1[i]] < dict[str2[i]]:
            return True
        elif dict[str1[i]] == dict[str2[i]]:
            continue
        else:
            return False

    return len(str1) < len(str2)


def slipstr(string):
    # 将一整串字符串按逗号间隔拆分,
    strlist = []
    str2 = ""
    for str1 in string:
        if str1 != ",":
            str2 += str1
        else:
            strlist.append(str2)
            str2 = ""
    strlist.append(str2)

    return strlist


def maopao(strlist):
    # 冒泡排序函数
    numofstr = len(strlist)
    for a in range(numofstr):
        for b in range(0, numofstr-a-1):
            if strlist[b] > strlist[b + 1]:
                strlist[b], strlist[b + 1] = strlist[b + 1], strlist[b]
            else:
                continue
    return strlist


if __name__ == "__main__":
    num = input("输入以逗号为间隔的数字,字母,单词进行排序:")
    numlist = slipstr(num)
    finallist = maopao(numlist)
    print(finallist)
    
if __name__ == "__main__":
    bidaxiao()
    slipstr()
    maopao()

注意顺序。这样只有在Question8下,才会执行第一个if __name__ == "__main__"

这样就可以在Question10中引用了:

from Question8 import maopao


def splitstr(string):
    # 将一整串字符串按空格间隔拆分,
    strlist = []
    str2 = ""
    for str1 in string:
        if str1 != " ":
            str2 += str1
        else:
            strlist.append(str2)
            str2 = ""
    strlist.append(str2)

    return strlist


string = input("输入一段英文")
alist = splitstr(string)
num = len(alist)
for i in range(-num, -1):
    # 从后向前遍历列表
    if alist.count(alist[i]) > 1:
        # 查找列表中相同内容数量,count函数
        # 参数是alist[i]

        alist.remove(alist[i])
        # 移除
list = alist
finstr = ""
finallist = maopao(list)
# 转化为字符串
for a in finallist:
    finstr += a
    finstr += " "
print(finstr)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值