उपयोगकर्ता इनपुट "सर्कल 3.5" या "आयताकार 3 5" या "ट्रेपेज़ॉइड 3 5 7" (उपयोगकर्ता द्वारा तय की गई संख्या के लिए) और क्षेत्र को आउटपुट करता है। नीचे कोड है, लेकिन यह नहीं चल सकता।

s=input("Input the shape and number:")
# for example,
# s="rect:5 3"
# s="cir:3.5"
#s="trapz:3 5 7"
cmd, para=s.split(:)
print(f"{cmd}->{para}")

if cmd == 'cir':
    r = float(para)
    print(f"area={r*r*3.14}")
elif cmd == 'rect':
    sw, sh = int(para.split())
    print(f"area={sw*sh}")
elif cmd == 'trapz':
    ul, bl, h = int(para.split())
    print(f"area={(ul+bl)*h/2}")
else:
    print("wrong input")

टिप्पणियों के लिए धन्यवाद। मैं इस प्रश्न को हल करने का दूसरा तरीका भी आजमाता हूं। कोड हैं:

s=input("Input the shape and number:").split()

if s[0]=="cir":
    r = float(s[1])
    print(f'area={r*r*math.pi}')
elif s[0]=="rect":
    sw, sh = int(s[1]), int(s[2])
    print(f"area={sw*sh}")
elif s[0]=="trapz":
    ul, bl, h = int(s[1]), int(s[2]), int(s[3])
    print(f'area={(ul+bl)*h/2}')
else:
    print('Wrong input!')
-1
Ryo kamiki 12 अक्टूबर 2020, 09:46

5 जवाब

सबसे बढ़िया उत्तर

आपको अपने कोड के साथ कुछ समस्याएं हैं। उपयोगकर्ता द्वारा अपना इनपुट प्रदान करने के बाद आप s को मान निर्दिष्ट कर रहे हैं। मैं मान रहा हूं कि ये सिर्फ आपके अपने संदर्भ के लिए थे, इसलिए मैंने उन पर टिप्पणी की।

चूंकि s.split() आपकी स्ट्रिंग को एक सूची में बदल देगा, इसलिए आपको यह सुनिश्चित करना होगा कि आप अपनी सूची के कुछ हिस्सों को सही संख्या में चरों को निर्दिष्ट कर रहे हैं। आप सीधे तीन तत्वों की सूची में दो चर निर्दिष्ट नहीं कर सकते। इसलिए मैंने सूची का पहला तत्व प्राप्त करने के लिए s.split(':')[0], s.split(':')[1:] का उपयोग किया है, फिर उसी सूची के शेष तत्व।

इसके अलावा आप int() को किसी सूची में लागू नहीं कर सकते क्योंकि पायथन आपके लिए इतना जादू नहीं करेगा, इसलिए आपको इसके बजाय एक सूची समझ का उपयोग करने की आवश्यकता है।

s=input("Input the shape and number:")
# s="rect:5:3"
# s="cir:3.5"
# s="trapz:3 5 7"
cmd, para=s.split(':')[0], s.split(':')[1:]
print(cmd,"->",para)

if cmd=='cir':
    r = float(para[0])
    print(f"arear={r*r*3.14}")
elif cmd=='rect':
    sw, sh =[int(x) for x in para]
    print(f"area={sw*sh}")
elif cmd=='trapz':
    ul, bl, h = [int(x) for x in para]
    print(f"area={(ul+bl)*h/2}")
else:
    print("wrong input")

नमूना आउटपुट:

Input the shape and number:rect:5:3
rect -> ['5', '3']
area=15

Input the shape and number:cir:3.5
cir -> ['3.5']
arear=38.465

Input the shape and number:trapz:3:5:7
trapz -> ['3', '5', '7']
area=28.0
0
Derek O 12 अक्टूबर 2020, 10:17

आप केवल int को किसी सूची में लागू नहीं कर सकते

s=input("Input the shape and number:")
cmd, para=s.split(":")
print(cmd,"->",para)

if cmd=='cir':
    r = float(para)
    print(f"arear={r*r*3.14}")
elif cmd=='rect':
    sw, sh = (float(x) for x in para.split())
    print(f"area={sw*sh}")
elif cmd=='trapz':
    ul, bl, h = (float(x) for x in para.split())
    print(f"area={(ul+bl)*h/2}")
else:
    print("wrong input")
1
Burning Alcohol 12 अक्टूबर 2020, 09:52

आप इनपुट मांग रहे हैं और यहां 's' वेरिएबल के लिए अपना जवाब दे रहे हैं:

s=input("Input the shape and number:")

तो आप s वेरिएबल के मान को तीन बार अलग स्ट्रिंग में बदल रहे हैं।

s="rect:5:3"
s="cir:3.5"
s="trapz:3 5 7"

कोड की इस पंक्ति के बाद s वेरिएबल स्ट्रिंग के बराबर है: "ट्रैपज़: 3 5 7" चाहे उपयोगकर्ता कुछ भी दर्ज करे।

साथ ही, 'विभाजन' तर्क के रूप में प्रयुक्त कोलन एक स्ट्रिंग होना चाहिए।

0
Linden 12 अक्टूबर 2020, 09:55

प्रयत्न:

s=input("Input the shape and number:")
s = s.split(':')
cmd, para= s[0], s[1:] # <---- added this
print(cmd,"->",para)

if cmd=='cir':
    r = float(para[0])
    print(f"arear={r*r*3.14}")
elif cmd=='rect':
    sw, sh =list(map(int, para)) #<---- added this
    print(f"area={sw*sh}")
elif cmd=='trapz':
    ul, bl, h = list(map(int, para))
    print(f"area={(ul+bl)*h/2}")
else:
    print("wrong input")

Input the shape and number:trapz:3:5:7
trapz -> ['3', '5', '7']
area=28.0


Input the shape and number:rect:3:5
rect -> ['3', '5']
area=15

Input the shape and number:cir:4.6
cir -> ['4.6']
arear=66.44239999999999
0
Pygirl 12 अक्टूबर 2020, 09:58

आपकी समस्या अनेक है। उदाहरण के लिए, आप कई मानों को int() और float() में पास करने का प्रयास कर रहे हैं, जो एकल मान लेते और वापस करते हैं। किसी सूची में int लागू करने के लिए आप map फ़ंक्शन का उपयोग कर सकते हैं अन्यथा यह नहीं चलेगा।

मेरा सुझाव है कि आप इस कोड को चलाने का प्रयास करते समय प्राप्त होने वाले त्रुटि संदेशों को देखें। जब आप पायथन सीखते हैं तो यह एक मूल्यवान अभ्यास है।

0
QLR 12 अक्टूबर 2020, 10:44