如何将要分配给节点的数字的字母改为数字?

2024-03-29 02:30:14 发布

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

我想知道如何在我的代码中将例如A(大写和小写)放入节点0中,但我真的不知道如何。我知道有chr,但我从来没有用过它,我试着阅读和做它,我只是不能让我的头周围。你知道吗

这是我的密码:

infinity = 1000000
invalid_node = -1

class Node:
    previous = invalid_node
    distFromSource = infinity
    visited = False

def populateNetwork(fileName):

    network = []
    networkFile = open(fileName, "r")
    for line in networkFile:
        network.append(map(int, line.strip().split(',')))
    return network

def populateNodeTable(network, StartNode):
    nodeTable = []
    for node in network:
        nodeTable.append(Node())
    nodeTable[StartNode].distFromSource = 0
    nodeTable[StartNode].visited = True
    return nodeTable

def nearestNeighbour(network, currentNode):
    neighbours = []
    column = 0
    for node in network[currentNode]:
        if node !=0:
            neighbours.append(column)
        column +=1
    return neighbours


def tentativeDistance(neighbours, network, nodeTable, currentNode):
    for neighbour in neighbours:
        if nodeTable[neighbour].visited == False:
            tentative = nodeTable[currentNode].distFromSource + network[currentNode][neighbour]
            if tentative < nodeTable[neighbour].distFromSource:
                nodeTable[neighbour].distFromSource = tentative
                nodeTable[neighbour].previous = currentNode
                print tentative

##Testing this Function
def newNodeTable(nodeTable):
    nextNode == invalid_node
    currentIndex = 0
    nextDestination == infinity
    for node in nodeTable:
        if node.visited == False and node.distanceFromSource < nextDestination:
            nextNode = currentIndex
            nextDestination = node.distanceFromSource
        currentIndex+=1
    return nextNode

##Testing this Function
def getRoute(routePath):
    getRoutePath = []
    getRouteFile = open(routePath, "r")
    for line in getRouteFile:
        getRoutePath.append(int,line.split(">"))
    return getRoutePath

network = populateNetwork('network.txt')
nodeTable = populateNodeTable(network, 1)
neighbours=nearestNeighbour(network, 1)
tentativeDistance(neighbours, network, nodeTable, 1)

print
print "Current nodes and visited"
for node in nodeTable:
    print node.previous, node.distFromSource, node.visited

##for line in network:
##    print line
print
print "Visual representation of the network array"
for index, val in enumerate(network):
    print index, val

这是我的网络.txt文件:

0,2,4,1,6,0,0
2,0,0,0,5,0,0
4,0,0,0,0,5,0
1,0,0,0,1,1,0
6,5,0,1,0,5,5
0,0,5,1,5,0,0
0,0,0,0,5,0,0

还有我的路由.txt文件基本上是“A>;G”、“A>;G”或“A>;G”。你知道吗


Tags: innodeforreturndeflinenetworkprint
1条回答
网友
1楼 · 发布于 2024-03-29 02:30:14

你可以使用文本

import string

print string.ascii_uppercase
# ABCDEFGHIJKLMNOPQRSTUVWXYZ

print string.ascii_lowercase
# abcdefghijklmnopqrstuvwxyz

print string.ascii_letters
# abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

char = string.ascii_uppercase[0]  # A
char = string.ascii_uppercase[1]  # B
char = string.ascii_uppercase[2]  # C

char = string.ascii_lowercase[0]  # a
char = string.ascii_lowercase[1]  # b
char = string.ascii_lowercase[2]  # c

或者可以使用chr(number)

print chr(65 + 0) # A
print chr(65 + 1) # B
print chr(65 + 2) # C

print chr(97 + 0) # a
print chr(97 + 1) # b
print chr(97 + 2) # c

您可以使用ord(letter)查找字符号

print ord('A') # 65
print ord('a') # 97

相关问题 更多 >