से लीप बनाना मैं काफी आरामदायक PHP प्रोग्रामर हूं, और बहुत कम पाइथन अनुभव है। मैं अपने प्रोजेक्ट के साथ एक दोस्त की मदद करने की कोशिश कर रहा हूं, कोड पीएचपी में लिखने में काफी आसान है, मैंने इसे अधिकतर पोर्ट किया है, लेकिन यदि संभव हो तो अनुवाद को पूरा करने में थोड़ी मदद की ज़रूरत है।पीएचपी से पायथन
- uid के कुछ आइटम
- बेतरतीब ढंग से चयन नई गुण युक्त uid को keyed एक दूसरी सूची बना सकते के साथ बुनियादी वस्तुओं की एक सूची तैयार करें: लक्ष्य है।
- तदनुसार प्रतिक्रिया बदलने के लिए दो सूचियों के बीच चौराहे के लिए परीक्षण।
निम्नलिखित मैं क्या अजगर
<?php
srand(3234);
class Object{ // Basic item description
public $x =null;
public $y =null;
public $name =null;
public $uid =null;
}
class Trace{ // Used to update status or move position
# public $x =null;
# public $y =null;
# public $floor =null;
public $display =null; // Currently all we care about is controlling display
}
##########################################################
$objects = array();
$dirtyItems = array();
#CREATION OF ITEMS########################################
for($i = 0; $i < 10; $i++){
$objects[] = new Object();
$objects[$i]->uid = rand();
$objects[$i]->x = rand(1,30);
$objects[$i]->y = rand(1,30);
$objects[$i]->name = "Item$i";
}
##########################################################
#RANDOM ITEM REMOVAL######################################
foreach($objects as $item)
if(rand(1,10) <= 2){ // Simulate full code with 20% chance to remove an item.
$derp = new Trace();
$derp->display = false;
$dirtyItems[$item->uid] = $derp; //# <- THIS IS WHERE I NEED THE PYTHON HELP
}
##########################################################
display();
function display(){
global $objects, $dirtyItems;
foreach($objects as $key => $value){ // Iterate object list
if(@is_null($dirtyItems[$value->uid])) // Print description
echo "<br />$value->name is at ($value->x, $value->y) ";
else // or Skip if on second list.
echo "<br />Player took item $value->uid";
}
}
?>
में कोड करने के लिए कोशिश कर रहा हूँ तो, वास्तव में मैं इसके बारे में सबसे हल कर मैं तो बस एक साहचर्य सरणी के पायथन के संस्करण के साथ परेशानी हो रही हूँ है की एक काम उदाहरण है, एक सूची है जिसके कुंजी मुख्य सूची में आइटम की अनोखी संख्या से मेल खाते हैं।
ऊपर कोड से उत्पादन के लिए इसी तरह दिखना चाहिए:
Player took item 27955
Player took item 20718
Player took item 10277
Item3 is at (8, 4)
Item4 is at (11, 13)
Item5 is at (3, 15)
Item6 is at (20, 5)
Item7 is at (24, 25)
Item8 is at (12, 13)
Player took item 30326
मेरे अजगर कौशल अभी भी कोर्स कर रहे हैं, लेकिन यह लगभग एक ही कोड ब्लॉक के रूप में ऊपर है। मैं देख रहा हूं और सूची फ़ंक्शंस का उपयोग करने की कोशिश कर रहा हूं .insert() या .setitem() लेकिन यह अपेक्षा के अनुसार काफी काम नहीं कर रहा है।
यह मेरे वर्तमान पायथन कोड, अभी तक पूरी तरह से कार्य नहीं है
import random
import math
# Begin New Globals
dirtyItems = {} # This is where we store the object info
class SimpleClass: # This is what we store the object info as
pass
# End New Globals
# Existing deffinitions
objects = []
class Object:
def __init__(self,x,y,name,uid):
self.x = x # X and Y positioning
self.y = y #
self.name = name #What will display on a 'look' command.
self.uid = uid
def do_items():
global dirtyItems, objects
for count in xrange(10):
X=random.randrange(1,20)
Y=random.randrange(1,20)
UID = int(math.floor(random.random()*10000))
item = Object(X,Y,'Item'+str(count),UID)
try: #This is the new part, we defined the item, now we see if the player has moved it
if dirtyItems[UID]:
print 'Player took ', UID
except KeyError:
objects.append(item) # Back to existing code after this
pass # Any error generated attempting to access means that the item is untouched by the player.
# place_items()
random.seed(1234)
do_items()
for key in objects:
print "%s at %s %s." % (key.name, key.x, key.y)
if random.randint(1, 10) <= 1:
print key.name, 'should be missing below'
x = SimpleClass()
x.display = False
dirtyItems[key.uid]=x
print ' '
objects = []
random.seed(1234)
do_items()
for key in objects:
print "%s at %s %s." % (key.name, key.x, key.y)
print 'Done.'
तो, लंबे समय तक इस पद के लिए खेद है, लेकिन मैं के माध्यम से हो सकता है और पूरा कोड के दोनों सेट प्रदान करने के लिए करना चाहता था। पीएचपी पूरी तरह से काम करता है, और पायथन करीब है। अगर कोई मुझे सही दिशा में इंगित कर सकता है तो यह एक बड़ी मदद होगी। नाबालिग सुधार: dirtyItems.insert (key.uid, एक्स) क्या मैं एक Assoc सरणी
संपादित के रूप में एक सूची काम करने के लिए उपयोग करने के लिए करने की कोशिश की है।
कोशिश:
तो फिर तुम जैसे उपयोग कर सकते हैं। आप एक कुंजी मान जोड़ी को 'dirtyItems [key] = value' – Netro
के रूप में सम्मिलित कर सकते हैं यह बहुत अच्छा है, मुझे अब यह काम मिल रहा है धन्यवाद, मुझे लगता है कि यह उल्लसित है कि मूल रूप से परिवर्तन की सीमा ** स्विचिंग [] से {} ** और कुछ अन्य मामूली सुधार। अब मैं इसे अगले रिलीज के लिए मुख्य परियोजना में एकीकृत कर सकता हूं। – Toaster
यदि आप छेड़छाड़ सेट जैसी चीजें कर रहे हैं तो आपको ऑब्जेक्ट्स [हैशबल] (http://docs.python.org/2/reference/datamodel.html#object.__hash__) बनाना चाहिए ताकि वे ' set'। –